语义搜索是一种匹配含义而非精确词语重合的检索方法。它依赖向量嵌入,在共享空间中表示查询和文档,因此即使措辞不同,相似概念也会彼此靠近。
这种方法需要两个阶段。首先,模型将文本转化为捕获语境的稠密向量;其次,相似度函数根据查询向量为存储向量排序。这取代了早期引擎使用的稀疏词袋表示。
语义搜索如何工作
第 1 步:文本转向量。 嵌入模型处理输入查询和每个存储文档。每个句子或段落都会变成固定长度的数值向量。向量位置编码模型训练中学到的关系。例如,“会议笔记”和“讨论摘要”的向量会彼此靠近。
第 2 步:相似度评分
余弦相似度衡量查询向量与每个文档向量之间的夹角。越接近 1 的值表示对齐度越高。系统先返回得分最高的文档。这一步取代 BM25 的词频计算。
第 3 步:结果优化
一些系统会在初始相似度计算后加入重排序或筛选。筛选可能将结果限制为用户的私人集合,或限制为所选时间窗口内修改的文件。嵌入查找与可选筛选结合,形成最终列表。
一个简单类比有助于理解流程。把每份文档想成地图上的一个点,查询是新点。引擎会按直线距离寻找最近邻居,而不是看这些点是否共享同一条街名。
局限仍然存在。嵌入可能反映训练数据中的偏见。非常短或高度含糊的查询,精度仍低于较长、语境丰富的查询。当前系统仍在改进这些边缘情况。
跨多篇论文工作的研究人员会用同一技术按主题而非标题关键词分组研究。关于“Transformer 扩展”的查询,无需手动追踪引文即可呈现有关注意力机制的早期工作。
个人知识工具会将语义搜索用于用户自己采集的内容。网页剪藏、会议转写和本地文件成为一个可搜索集合。系统从过去工作中返回相关项目,无需用户记住准确文件名或关键词。
问:当前语义搜索最大挑战是什么?
答:短或含糊查询仍会降低精度。领域专用术语有时需要对嵌入模型做额外微调。持续工作正聚焦这些边界条件。
