向量嵌入语义搜索和关键词搜索有什么区别?怎么选
向量嵌入语义搜索和关键词搜索经常被放在一起比较。选错了不会出大问题,但会多走弯路。
核心区别
关键词搜索精确、可解释,但找不到换了说法的内容;语义搜索按意思查找,召回更广,两者结合效果最好。
从原理看,嵌入模型把语义相近的文本映射到相近的向量位置,计算向量之间的相似度就能找到意思相关的内容,这是很多知识库和推荐功能的基础。语义搜索并不是关键词搜索的替代品,而是补充。语义搜索擅长理解“意思”,但对产品型号、人名、编号这类精确信息反而可能不如关键词搜索。实际应用中,混合搜索往往是更稳妥的选择:语义负责找到相关的范围,关键词负责保证精确的命中。
什么时候选语义搜索
- 搭建知识库问答,需要按意思检索资料。
- 用户用各种不同说法提问,关键词搜索找不到。
- 需要找出相似的文档、问题或工单。
- 对大量文本做聚类或去重。
一个虚构的对比:一位客服主管发现,客服在知识库里搜索“退不了款”时总是找不到“退款失败处理流程”。技术同事为知识库加上了语义搜索,并保留关键词搜索作为补充。之后客服用各种口语化的说法搜索,都能找到对应的流程文档。
什么时候关键词搜索就够了
任务简单、一次性、对格式没有严格要求时,关键词搜索往往更省事。另外要注意,更换嵌入模型后不重建向量。更好的做法是:不同模型的向量不能混用,更换模型需要重新生成。
如果选择语义搜索,这样开始
- 把向量和原文、元信息一起存储。
- 用户提问时,把问题也转换为向量,检索最相似的片段。
- 结合关键词搜索或重新排序,提升检索准确性。
- 用测试集评估检索效果,持续调整切分和检索参数。
示范提示词
以数据分析师的场景为例:
请帮我设计一个语义搜索方案,用于数据分析师团队检索内部的分析报告资料:
- 资料规模:约 [数量] 份文档,以中文为主
- 用户:团队成员,提问方式多样
- 要求:返回最相关的 3 个片段,并附上文档名称和位置
请说明:
1. 整体流程(切分、向量化、存储、检索、展示);
2. 选择嵌入模型时需要考虑的因素(语言、成本、是否可本地部署);
3. 为什么建议同时使用关键词搜索;
4. 如何用测试问题评估检索效果。
不确定的具体产品和参数请不要编造。
使用时请注意:AI 不了解你们的指标口径,写出的语句和结论都要用小样本核对一遍。
一个常被问到的问题
需要很大的服务器吗? 小规模资料在普通服务器甚至个人电脑上就可以运行,大规模数据需要专门的向量存储方案。
结论
一句话:任务复杂或需要反复执行时选语义搜索,临时的简单问题用关键词搜索即可。两者也可以先后使用:先用关键词搜索快速试探,再用语义搜索打磨。
一个容易忽略的点
选择哪种做法,还要考虑之后要不要复用。只用一次的任务,多花十分钟准备未必划算;每周都要做的任务,花时间把语义搜索用好,后面每次都能省事。