语义搜索和嵌入都是检索增强生成 (RAG) 系统中的关键组成部分,但它们扮演着不同的角色。语义搜索是指根据查询的含义来检索信息的过程,而不是仅仅依靠关键词匹配。另一方面,嵌入是文本的数值表示,能够捕捉语义关系,使算法能够根据相似性比较和匹配内容。虽然嵌入通常被用在语义搜索中来为其提供支持,但它们并非同一事物:语义搜索是检索策略,而嵌入是使检索高效的数据格式。
进一步分解来看,RAG 中的语义搜索旨在查找与用户查询的意图和上下文相符的文档或段落。例如,如果用户询问“如何修复运行缓慢的电脑?”,语义搜索系统可能会检索关于磁盘清理、恶意软件扫描或硬件升级的结果——即使这些结果没有明确提及“运行缓慢的电脑”。这需要理解查询的含义,而这就是嵌入发挥作用的地方。嵌入将文本(如查询或文档)转换为密集向量——数字数组——代表语义特征。这些向量使系统能够计算查询与存储文档之间的相似性得分(例如,使用余弦相似性),从而确保在没有精确关键词匹配的情况下,也能优先处理概念上相关的内容。
两者之间的关系通过它们在 RAG 流水线中的作用最能说明。在预处理期间,为知识库中的查询和文档生成嵌入。当进行查询时,语义搜索使用这些预先计算好的嵌入来高效地查找最相关的文档。例如,一篇关于“优化启动程序”的文档可能与查询“加快我的电脑速度”具有相似的嵌入向量,即使措辞不同。没有嵌入,语义搜索将无法将非结构化文本映射为能够实现快速、有意义比较的格式。然而,理论上语义搜索可以使用其他方法(例如稀疏检索与上下文重排序相结合),但在现代 RAG 系统中,嵌入是最常用且最有效的方法。简而言之,嵌入通过提供一种数值表示和比较含义的方式来赋能语义搜索,而语义搜索则定义了利用这些表示来提供相关结果的检索逻辑。