AI 术语表 · 基础 · 语言模型
语义搜索
语义搜索是一种搜索方式:它不看查询词中的词语是否原样出现在文档里,而是衡量查询与文档在“意思”上有多接近,据此找出结果。
工作原理
首先把句子或文档转换成一组称为“嵌入”的数字(向量)。嵌入是一种坐标,意思越相近的文本,位置就越接近。用户输入查询后,查询也按同样方式转换为坐标,然后找出与该坐标最接近的文档。这种“找最近的点”的做法称为最近邻搜索;文档数量较多时,为了快速处理,通常会配合使用向量数据库。
发展历程
过去的搜索以 TF-IDF、BM25 等“词汇搜索”为主,即统计查询词在文档中出现的频率和独特程度。2019 年的 Sentence-BERT 论文(Reimers、Gurevych)改造了名为 BERT 的语言模型,提出把每个句子转换为可相互比较的嵌入的方法。该论文称,原本用 BERT 在 1 万个句子中找出最相似的一对需要约 65 小时,现在缩短到约 5 秒,同时保持了准确率。随后,2020 年的 Dense Passage Retrieval 论文(Karpukhin 等)训练了两个编码器,分别把问题和段落转换为嵌入,表明仅靠嵌入就能比基于 BM25 的检索更好地找到相关段落。正是这一系列进展,让“按意思查找的搜索”成为真正实用的技术。
为什么重要
人们常用与文档措辞不同的表达来搜索。例如,搜索“笔记本电池掉电很快”,而文档里写的是“如何降低功耗”,只看词语匹配的搜索很容易漏掉它。语义搜索能跨越这种表达差异,匹配用户意图。它尤其是 RAG 的核心组件——RAG 会在 LLM 作答前先检索相关资料。
注意事项
它擅长找意思相近的文本,但对于产品编号、专有名词这类需要字面完全匹配的搜索,反而可能较弱。因此实际服务中常采用混合搜索,把 BM25 等词汇搜索与语义搜索结合使用,有时还会用重排序器对结果重新排序。结果质量在很大程度上取决于所用的嵌入模型,以及文档切分成多大的块(分块)。另外,“语义搜索”一词有时也指利用本体、知识图谱等结构化知识的搜索,因此含义会随语境略有不同。
示例
公司内部的文档助手聊天机器人就是典型例子。员工问“出差时住宿费最多能报多少?”,聊天机器人会用语义搜索找出像“国内外出差费用标准”这样措辞不同但意思相符的规章文件,再由 LLM 根据其内容生成回答。购物网站根据“夏天穿着凉快的通勤裤”这类描述性查询找到合适商品的功能,也使用同样的原理。