趋近智
基于嵌入的向量搜索提供了一种根据语义相似性获取信息的有效方法,但在复杂的智能体场景中,仅依靠原始查询嵌入的最近邻结果往往不足。初始查询可能模糊、不够具体,或需要从多个不同角度综合信息。简单的检索可能导致向LLM提供次优的上下文,从而影响推理质量和任务成功率。高级检索策略旨在通过优化查询过程、增加结果多样性或提升相关性评分来解决这些局限。
一个重要难题是弥合短小、可能抽象的查询与内存中详细、内容丰富的文档之间的语义差距。例如,“智能体内存的最新进展是什么?”这样的查询,如果相关论文没有明确提到“智能体内存的进展”,它可能不会与具体描述新技术的论文紧密关联。
HyDE通过先使用LLM生成一份文档(或答案),这份文档代表了一个理想响应可能的样子,从而解决这个问题。我们不直接嵌入原始查询 q,而是生成一份文档 dhypo=LLM(q)。随后,我们嵌入这份文档得到 ehypo=f(dhypo),并使用 ehypo 对向量存储中实际的文档嵌入执行相似性搜索。
其理念是,即使 dhypo 在事实上有误或不完整,它也可能包含比原始稀疏查询 q 更接近真正相关文档的术语、措辞和语义结构。
文档嵌入 (HyDE) 的高层工作流程。
使用HyDE需要额外进行一次LLM调用,这会增加延迟和成本。其效果也取决于所生成文档的质量。一份质量不佳的 dhypo 可能会使搜索偏向不相关的结果。然而,对于用户意图明确但缺少目标文档中特定术语的查询,HyDE可以显著提升检索的相关性。
通常,单个查询向量无法捕捉信息需求的多个方面。智能体可能需要理解与复杂主题相关的不同方面或视角。多查询检索通过从原始查询生成多个相关查询,对每个查询执行搜索,然后合并结果来解决此问题。
此过程通常包括:
多查询检索的工作流程,生成多个搜索向量。
此方法增加了检索文档的多样性,提高了覆盖不同相关子主题的可能性。权衡之处在于发送到向量存储的查询数量增加(可能是单个查询成本和延迟的 N 倍),以及为生成查询而增加的LLM调用。此外,还需要谨慎合并,以避免最终上下文中的过度冗余。
向量相似性搜索善于从庞大的语料库中快速找到语义相关的文档。然而,仅仅基于嵌入的余弦相似度或欧氏距离得出的前k个结果,可能并不总是根据更具体标准来判断的最相关结果。重排序引入了第二阶段来优化初始候选集。
典型流程如下:
重排序模型通常是交叉编码器。与用于初步检索的双编码器(独立嵌入查询和文档)不同,交叉编码器将查询和候选文档一起处理,从而可以进行更细致的交互分析(例如,使用交叉注意力)。这会产生更准确的相关性得分,但将其应用于整个语料库在计算上过于昂贵。
示例显示重排序如何改变初步检索到的文档的相关性顺序。文档B和文档D在重排序后显著提升。
重排序由于第二阶段的评分过程会增加延迟。重排序模型的选择(其大小、训练数据、架构)会影响质量改进和性能开销。然而,对于要求检索上下文具有高准确性的应用,重排序通常是一个有益的补充。
不同的检索方法具有各自的优势。关键词搜索(如BM25)善于匹配特定术语,而向量搜索则捕捉语义含义。混合搜索结合了来自多个检索系统的结果。一种常用技术是倒数排名融合(RRF),它根据排名位置而非绝对分数结合来自不同源的排名列表,使其在处理得分不可比性时表现良好。通过融合例如向量搜索和关键词搜索的结果,智能体可以同时获得语义理解和术语特异性的好处。
没有单一的“最佳”高级检索策略。最佳选择取决于以下因素:
实施这些高级策略需要仔细权衡检索质量、延迟和计算成本。然而,超越基本的最近邻搜索对于构建真正有效且具备知识的LLM智能体而言是经常必要的,这些智能体能够进行复杂的推理和完成长期任务。正如第六章所述,实验和评估对于确定最适合您特定应用的方法非常重要。
简洁的语法。内置调试功能。从第一天起就可投入生产。
为 ApX 背后的 AI 系统而构建
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造