向量嵌入语义搜索常见问题:新手最关心的 7 个疑问
本文用问答的形式,把向量嵌入语义搜索从概念到实操讲一遍。
Q1:语义搜索到底是什么?
语义搜索是用向量嵌入(Embedding)把文本转换成能表示含义的数值向量,再按含义的相似程度查找内容。与关键词搜索不同,它能找到表达方式不同但意思相近的内容,比如用“请假”找到“休假申请”。
Q2:为什么它有效?和关键词搜索有什么不同?
嵌入模型把语义相近的文本映射到相近的向量位置,计算向量之间的相似度就能找到意思相关的内容,这是很多知识库和推荐功能的基础。关键词搜索精确、可解释,但找不到换了说法的内容;语义搜索按意思查找,召回更广,两者结合效果最好。
Q3:哪些场景最值得用?
最典型的是两类:一是用户用各种不同说法提问,关键词搜索找不到;二是对大量文本做聚类或去重。以财务为例,处理“审核报销单约 120 张”这类工作时就很适合尝试。
Q4:具体怎么开始?
建议按这三步起步:
- 选择嵌入模型和向量存储方案,了解其语言支持和使用条款。
- 整理并切分文档,为每个片段生成向量。
- 把向量和原文、元信息一起存储。
熟练之后再养成一个习惯:用测试集评估检索效果,持续调整切分和检索参数。
Q5:有没有现成的模板?
有,下面这个可以直接复制,按需替换方括号内容:
检索效果评估:
测试集:[N] 个问题,每个问题标注应该检索到的片段
指标:
- 前 K 命中率:正确片段出现在前 K 个结果中的比例
- 首位命中率:正确片段排在第一的比例
对比实验:
1. 仅语义搜索
2. 仅关键词搜索
3. 混合搜索(两者结合)
4. 混合搜索 + 重新排序
记录每种方案的指标,选择效果最好且成本可接受的方案。
Q6:什么是向量嵌入?
是把文本转换成一串数字的方法,意思相近的文本对应的数字向量也比较接近。
Q7:需要很大的服务器吗?
小规模资料在普通服务器甚至个人电脑上就可以运行,大规模数据需要专门的向量存储方案。
Q8:嵌入模型可以本地运行吗?
有可以本地部署的开源嵌入模型,适合对数据安全有要求的场景。
举个例子
举个虚构的例子:一位客服主管发现,客服在知识库里搜索“退不了款”时总是找不到“退款失败处理流程”。技术同事为知识库加上了语义搜索,并保留关键词搜索作为补充。之后客服用各种口语化的说法搜索,都能找到对应的流程文档。
补充:最容易踩的坑和用好的诀窍
- 不评估检索效果。改进:准备测试集,用命中率等指标衡量。
- 更换嵌入模型后不重建向量。改进:不同模型的向量不能混用,更换模型需要重新生成。
- 保存每次检索的日志,分析找不到答案的问题。
- 对中文资料选择中文能力较好的嵌入模型。
下一步学什么
掌握语义搜索之后,可以继续了解个人知识库 RAG 和文档切分整理,它们经常和语义搜索一起使用,组合起来能处理更复杂的任务。