语义搜索是用向量嵌入(Embedding)把文本转换成能表示含义的数值向量,再按含义的相似程度查找内容。与关键词搜索不同,它能找到表达方式不同但意思相近的内容,比如用“请假”找到“休假申请”。下面从概念、场景、步骤到模板,一步步带你上手。

语义搜索是什么,为什么有效

它之所以有效,是因为嵌入模型把语义相近的文本映射到相近的向量位置,计算向量之间的相似度就能找到意思相关的内容,这是很多知识库和推荐功能的基础。与关键词搜索相比,关键词搜索精确、可解释,但找不到换了说法的内容;语义搜索按意思查找,召回更广,两者结合效果最好。

语义搜索并不是关键词搜索的替代品,而是补充。语义搜索擅长理解“意思”,但对产品型号、人名、编号这类精确信息反而可能不如关键词搜索。实际应用中,混合搜索往往是更稳妥的选择:语义负责找到相关的范围,关键词负责保证精确的命中。

适用场景

  • 搭建知识库问答,需要按意思检索资料。
  • 用户用各种不同说法提问,关键词搜索找不到。
  • 需要找出相似的文档、问题或工单。
  • 对大量文本做聚类或去重。

怎么用:6 步上手

  1. 选择嵌入模型和向量存储方案,了解其语言支持和使用条款。
  2. 整理并切分文档,为每个片段生成向量。
  3. 把向量和原文、元信息一起存储。
  4. 用户提问时,把问题也转换为向量,检索最相似的片段。
  5. 结合关键词搜索或重新排序,提升检索准确性。
  6. 用测试集评估检索效果,持续调整切分和检索参数。

可直接复制的提示词

下面以游戏开发者的工作场景为例,方括号里的内容换成你自己的信息即可:

请帮我设计一个语义搜索方案,用于游戏开发者团队检索内部的策划文档资料:
- 资料规模:约 [数量] 份文档,以中文为主
- 用户:团队成员,提问方式多样
- 要求:返回最相关的 3 个片段,并附上文档名称和位置
请说明:
1. 整体流程(切分、向量化、存储、检索、展示);
2. 选择嵌入模型时需要考虑的因素(语言、成本、是否可本地部署);
3. 为什么建议同时使用关键词搜索;
4. 如何用测试问题评估检索效果。
不确定的具体产品和参数请不要编造。

效果示例

以下内容为虚构示例,仅用于说明效果:

示例(虚构):一个内部问答系统中,用户问“出差住宿能报多少”,关键词搜索没有找到结果,因为制度中写的是“差旅费用标准”。改用语义搜索后,系统找到了正确的条款,并结合关键词搜索确保“住宿”相关的段落排在前面。

新手最常犯的两个错误

  • 容易犯的错:只用语义搜索。更好的做法:结合关键词搜索,对专有名词、编号类查询更准确。
  • 容易犯的错:文档切分不合理。更好的做法:先做好切分,向量化质量取决于片段质量。

再进一步

  • 把文档标题和片段内容一起向量化,通常能提升检索效果。
  • 对检索结果增加重新排序步骤,可以进一步提高准确率。

一个常见疑问

什么是向量嵌入? 是把文本转换成一串数字的方法,意思相近的文本对应的数字向量也比较接近。

知识库和本地模型的效果很大程度取决于资料质量。资料越整洁、越新,回答就越可靠。

下一步

入门之后,可以看看语义搜索的进阶技巧和常见错误,再结合个人知识库 RAG 一起使用。

相关阅读