掘金 人工智能 19小时前
RAG轻松通-P4:检索
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入探讨了RAG(Retrieval-Augmented Generation)系统中检索技术的关键要素,包括向量检索、关键词检索以及两者的混合应用。文章首先介绍了向量的模长和方向在语义信息标识中的作用,随后详细阐述了在RAG系统中,如何通过向量化用户查询来实现信息检索。此外,文章还分析了向量检索的局限性,并提出了混合检索作为一种更全面的解决方案,最后,文章讨论了如何通过调整Top-K值和使用重排序技术来优化检索结果,以提高RAG系统的性能和准确性。

📏 向量检索基于语义相似度,依靠向量的方向来匹配查询与文档。模长影响向量的“强度”,而方向决定语义相似性。在RAG系统中,查询也需要被转化为向量才能进行检索,且必须使用与文档相同的Embedding模型。

🔍 纯向量检索可能因缺乏对关键词的敏感性而失效。混合检索结合向量搜索和关键词搜索,通过BM25等算法补充关键词匹配,尤其适用于包含精确关键词的场景,如产品型号等。RRF算法常被用于融合两种检索结果,综合考量文档在不同列表中的排名。

💡 Top-K参数控制返回知识块的数量,影响检索结果的全面性和信噪比。K值选择需要权衡全面性与效率,并根据问题类型、知识库质量和LLM能力进行调整。过大或过小的K值都可能导致问题,需要根据具体情况进行选择。

🔄 重排序技术通过“两阶段检索”优化Top-K结果:先快速召回大量候选文档,再用更精准的模型进行二次打分和排序。交叉编码器(Cross-Encoder)是常用的精排模型,它通过同时考虑查询和文档,提供更准确的相关性评估,但计算成本较高,通常用于少量候选文档的精细化排序。

1 引言

在之前的向量化篇章中,已经有了解到向量的结构。向量有模长与方向,通常用于标识语义信息。

本篇我们继续了解一下相似度的计算,以及给予相似度计算的检索。

2 Query

在RAG系统中,用户输入的查询被称为Query,我们需要使用与之前处理文档时完全相同的Embedding模型,将这个Query也转换为一个向量。

只有使用同一个Embedding模型,才能保证用户的“问题向量”和数据库中存储的“知识向量”位于同一个“语义空间”中。

2.1 执行搜索

在之前的篇章中,我们已经了解到常见的Embedding模型都会采取归一化,然后使用点积(效果等于“余弦相似度”)来计算相似度。但在高质量的RAG系统中,这样的纯向量检索是不够的。其往往采用“混合检索”。

2.1.1 向量检索的缺陷

向量搜索虽然强大,但它有一个致命弱点:对于那些没有太多语义、但本身就非常重要的关键词,它可能会“理解过度”而导致匹配失败。

举个例子:

2.1.2 混合检索(Hybrid Search) 弥补缺陷

混合检索结合了两种根本不同的搜索技术:

    向量搜索 (Vector Search): 点积、余弦相似度、欧氏距离。它擅长理解 语义和意图。例如,用户问“AI导师”,它能找到包含“人工智能教练”的文档。关键词搜索 (Keyword Search): 这是传统的搜索引擎技术,最经典的算法是 BM25。它擅长匹配 特定的、精确的词语,尤其是专有名词、产品型号、错误代码等。

当知识库中包含大量对 精确关键词 高度敏感的信息时,强烈建议使用混合检索。例如:

2.1.2.1 混合检索的融合算法

混合检索同时执行向量搜索和关键词搜索,然后将两边的结果进行智能的“融合”,得到一个最终的排序列表。最常用的融合算法叫做 倒数排序融合 (Reciprocal Rank Fusion, RRF)。它不关心原始分数是多少,只关心一个文档在每个列表中的“排名”,这使得它能很好地结合两种不同维度的搜索结果。

RRF通过一个简单的公式来为每个文档计算一个新的、可比较的“融合分数”:Score(d) = Σ (1 / (k + rank(d)))

2.2 控制返回结果

向量数据库可以配置返回结果的相似度阈值。但是一般通过Top-K参数来控制。Top-K:会根据余弦相似度得分,从高到低进行排序,然后返回给你 最靠前的K个 知识块。这个“K”是一个你可以自己设定的参数。

Q:为什么要返回K个?返回多个相关的知识块,可以让后续的LLM拥有更丰富、更全面的上下文信息,从而生成一个更综合、更准确的答案。比如,一个知识块解释了RAG,另一个解释了微调,第三个对比了二者,把这三个都提供给LLM,它就能给出一个非常完美的答案。

2.2.1 K值选择的权衡

Q:这个K设置成多少比较合适?

A: 又是一个典型Trade-off。K过大则可能噪声大,K过小则可能不够精确,我们需要在全面性和信噪比之前权衡。其他还要考虑的因素有成本、响应速度(性能)

2.2.2 K值决策参考

调整K值可以从以下几个角度来决策:

    问题的类型:
      对于简单的 事实问答(“什么是RAG?”),小K值 通常足够且高效。对于复杂的 综合分析或比较(“请详细阐述RAG和微调在成本、效果和适用场景上的全部区别”),大K值 更有可能提供全面的信息。
    知识库的质量:
      如果您的知识库非常干净、切分得很好、噪声很低,可以适当 增大K值。如果知识库比较杂乱,充满了重复或过时的信息,使用 小K值 更安全,可以避免引入过多噪声。
    LLM的能力:
      像GPT-4或Claude 3 Opus这样拥有超长上下文窗口和强大理解能力的模型,对 大K值 的处理能力更强。对于一些小模型或老模型,小K值 更容易让它们聚焦。

2.2.3 重排序Re-ranking优化Top-K

一种常见的返回结果优化策略是“两阶段检索”:

    召回 (Recall): 先用向量数据库快速召回一个较大的K值(比如K=20),确保“宁可错杀,不可放过”,保证信息的全面性。精排 (Re-rank): 然后,使用一个更轻量、更精准的模型或算法(称为“重排序器”),对这20个文档进行二次打分和排序,挑出其中最相关的3-5个。生成 (Generation): 最后,只把这精选出的3-5个文档送给LLM。

这种方法兼顾了全面性和精准性,是构建高质量RAG系统的常用技巧。

2.2.3.1 精排技术

这项技术的核心是使用一种与初次检索不同的、通常更强大但也更慢的模型。最主流的技术是 交叉编码器 (Cross-Encoder)

精排模型 (Cross-Encoder / 交叉编码器)****:

具体的精排技术/模型举例:

精排技术的核心,就是用一个 计算成本更高但判断力更强 的交叉编码器,来弥补初次向量检索可能存在的“理解不够深入”的问题。

3 总结

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

RAG 向量检索 混合检索 Top-K 重排序
相关文章