一、RAG介绍
RAG(Retrieval-Augmented Generation,检索增强生成), 是一种人工智能技术,它通过检索外部知识库来增强大语言模型的生成过程,从而提升回答的准确性和时效性。简单来说,它让模型能动态获取最新信息,减少错误,并支持证据引用。
二、RAG的架构
1、Normal LLM use :Prompt----LLM---Response

2、增加RAG:
RAG接受到提示词,首先发送给到检索器,然后检索器去访问知识库(用于存储文档通过数据,当然也可以向量库),检索器会把提示词相关的文档全部返回,然后创建增强提示词(把相关文档信息加入到原始提示词中),最终把增强提示词发送给到LLM,LLM生成回应。LLM会基于提供文档信息及自身理解能力,返回的内容会变得准确、及时且贴合上下文。

3、优势:
1)、补充外部知识:能添加训练数据中没有的信息(如最新政策或更新),避免知识盲区,可以让大模型能够获取原本无法获得信息(行业信息、公司制度、互联网头条信息等);
2)、减少模型幻觉:通过相关上下文支撑答案,降低模型生成虚构内容的概率,可降低幻觉现象、误导性回复的可能性;
3)、保持模型更新:通过更新知识库,让模型及时反映新信息,无需重新训练。(RAG让大模型更容易跟上快速变化的信息,大模型每次重新训练语言模型通常成本高耗时长,有RAG的加持,只需要更新知识库中的信息即可)
4)、支持来源验证:提供答案的引用来源,增强可信度和可验证性。

三、RAG的工作原理(通过代码形式来理解):



四、RAG的总结
这张图清晰地阐述了 RAG 的核心思想:通过引入一个外部的、专有的知识库,来弥补大语言模型自身知识的不足(如缺少私有或最新信息),并确保模型的响应有据可依。
RAG 的工作流程可以总结为以下
四个关键点:
组合架构:RAG 的核心是将大语言模型(负责生成文本)和一个外部的知识库(负责提供信息)配对使用。
数据特性:所使用的数据具有特殊性,通常是私有的、最新的或高度专业化的,这些数据在大语言模型原有的训练数据中并不存在。
检索过程:一个专门的“检索器”组件会从知识库中查找与用户问题最相关的文档或信息片段。
生成基础:大语言模型在生成最终回答时,会以检索器找到的信息作为依据和背景,从而提供更准确、可靠的答案。
五、RAG检索器架构综述
RAG 系统从知识库中查找相关信息时采用的两种不同策略:一种是依赖字面匹配的“关键词搜索”,另一种是理解语义的“语义搜索”。
两种搜索方法的区别可以总结为以下两点:
关键词搜索
核心机制:基于字面精确匹配。
工作原理:检索器会在知识库中扫描,寻找那些包含了用户提问中出现的完全相同的单词或词组的文档。
特点:类似于传统搜索引擎,结果直接但可能忽略同义词或不同表述方式的相关信息。
2.语义搜索
核心机制:基于含义相似度。
工作原理:检索器会理解用户提问的深层含义,然后在知识库中寻找那些在意思上相似的文档,即使这些文档中并没有使用提问中的原词。
特点:更加智能,能更好地理解用户意图,找到概念相关但用词不同的资料。
总而言之,关键词搜索匹配“词汇”,而语义搜索匹配“意思”。在现代 RAG 系统中,两者常常结合使用以达到最佳效果。

下面这张深入介绍了构建高性能检索器时所使用的混合搜索策略。
1、关键词搜索:确保对用户提示中包含的确切词语具有敏感性。
2、语义搜索:查找具有相似含义的文档,即使没有匹配的单词。
3、元数据过滤:根据严格标准排除文档(例如,按日期、作者、类型过滤)。
高性能检索器会根据项目需求平衡所有三种技术。
一个高性能的检索器并非只依赖单一技术,而是需要混合使用关键词搜索、语义搜索和元数据过滤这三种方法,并根据具体任务的需求进行巧妙平衡,以达到最佳的检索效果。
1、关键词搜索:保证精确匹配,确保结果包含用户提问中提到的关键术语。
2、语义搜索:理解用户意图,找出含义相近的文档,避免因词汇不同而漏掉相关信息。
3、元数据过滤:进行快速、精确的筛选,缩小范围(如只搜索2023年以后的PDF文档),提高效率和质量。
核心是“平衡”而非“选择”
高性能检索器的目标不是从这三种技术中三选一,而是如何根据不同的项目目标(例如,更看重精度还是召回率)来平衡和组合它们。
实现智能检索
通过混合搜索,检索器可以同时具备关键词的精确性、语义的理解力以及元数据的过滤能力,从而更智能、更全面地从知识库中查找信息。

六、元数据过滤技术
元数据过滤(Metadata Filtering),这是一种在信息检索系统中用于精确筛选文档的技术
元数据过滤是一种高效的数据管理方法,它不依赖于文档的正文内容,而是通过文档的附加信息(即元数据,如标题、作者、创建日期等)来设置筛选条件。这种方法可以快速排除不相关的文档,提高检索效率和质量。例如,在大型文档库中,您可以通过指定作者或日期范围,直接锁定目标文章,避免大海捞针。
基本定义:元数据过滤使用刚性标准(如标题、作者、日期等)来筛选文档,类似于数据库查询中的WHERE子句,确保结果精确匹配条件。
工作方式:它通过元数据字段(如示例中的“出版日期”、“栏目”)设置过滤规则。例如,SQL查询可以指定“栏目='Opinion' AND 作者='Michael Chen'”,从而只返回意见栏目中由特定作者在特定时间段内发表的文章。
实际应用:在检索增强生成(RAG)系统中,元数据过滤常与关键词搜索、语义搜索结合使用(如混合搜索),以提升检索器的性能。它能够快速缩小搜索范围,减少无关信息干扰。
优势总结:这种方法提高了检索的速度和准确性,特别适用于处理大量结构化数据,如新闻档案、企业文档库等,确保用户能快速获取相关且最新的信息。

优势 (Pros):
简单易用:原理易于理解,出现问题也便于调试。
高效可靠:速度很快,技术成熟且经过优化,稳定性高。
规则严格:能确保检索结果精确匹配预设的过滤条件,准确度高。
局限性 (Cons):
非真正搜索:它只是过滤,不具备理解内容含义(语义)的能力。
机制僵化:只关注元数据标签而忽略文档实际内容,无法根据相关性对结果进行智能排序。
无法单独使用:如果单独使用,其效用非常有限,必须与其他技术结合。
该项技术需要配合本模块介绍的另外两种技术(即关键词搜索和语义搜索) 共同使用,以构建高性能的检索系统。

七、关键词搜索
TF-IDF算法
TF-IDF 的核心思想是:一个词语在当前文档中出现的次数越多(TF 高),并且在所有文档中出现的次数越少(IDF 高),则该词语对该文档的区分能力或代表性就越强,其 TF-IDF 分值也就越高。例如,"pizza" 如果只在少数几个文档中出现,那么它在这些文档中的 TF-IDF 分值就会很高,表明它是这些文档的关键词。
1、TF(词频):衡量一个词在单个文档中出现的频率。计算公式通常为:(词在文档中出现的次数)/(文档的总词数)。它反映的是词在文档内部的重要性。
2、IDF(逆文档频率):衡量一个词在整个文档集合(语料库) 中的稀有程度。计算公式为:log(文档总数 / 包含该词的文档数)。它反映的是词在文档之间的区分能力。一个词越常见,其 IDF 值越低。
3、TF-IDF 分值:是 TF 和 IDF 的乘积(TF * IDF)。这个分值综合了词语在文档内的重要性和在整个集合中的稀有性,分值越高,代表该词对当前文档越重要、越有代表性。
4、应用场景:TF-IDF 常用于搜索引擎的关键词权重计算、文档相似度比较、文本特征提取等,是信息检索领域的基础技术。
总而言之,这张图演示了如何通过量化计算,从一堆文档中找出最能代表每个文档特征的关键词。

BM25算法
关键词搜索是一种传统但高效的信息检索方法。它的核心思想是:将文档和查询都视为一系列关键词的集合,通过统计关键词出现的频率等指标来计算它们的相关度,并最终按照相关度高低对文档进行排序。BM25算法是在早期TF-IDF思想上的一个重要改进和优化,效果更好,已成为事实上的行业标准。

1、词频饱和
一个词在文档中出现1次、5次、10次,其重要性是显著增加的;但当它出现50次或100次时,其重要性并不会线性增加50或100倍,相关性会趋于一个上限(饱和)BM25 通过引入参数 k1来控制这种饱和速度。这有效防止了某些文档通过堆砌关键词来提升排名。
2、文档长度归一化
一篇长达万字的文档和一篇只有几百字的短文,即使都提到了5次关键词“人工智能”,后者与搜索词的相关性很可能更高。BM25 通过参数 b和文档平均长度来引入一个惩罚因子,对过长的文档进行“扣分”,从而提升短小精悍内容的相关性得分

八、语义搜索
语义搜索是一种通过理解用户查询语句的深层含义和上下文意图,而不仅仅是匹配字面关键词,来提供更精准、更相关搜索结果的信息检索技术。下面这个表格可以帮助您快速把握其核心要点,特别是与传统关键词搜索的区别

九、混合搜索策略
并行使用关键词搜索和语义搜索两种检索器,对它们各自返回的结果列表进行初步过滤后,再通过一种算法将两个列表合并,最终产生一个统一的、质量更高的文档排名。
1、并行检索
关键词搜索路径:检索器执行关键词搜索,得到一个包含50篇文档的初始结果列表(如 Document A, B, C, D...),并按相关度排序。
语义搜索路径:检索器同时执行语义搜索,得到另一个包含50篇文档的初始结果列表(如 Document C, B, X, Y...),按语义相似度排序。
2、元数据过滤
每条路径得到的50篇文档会分别经过元数据过滤器的筛选。
过滤后,关键词搜索路径剩下35篇文档,语义搜索路径剩下30篇文档。这一步确保了结果的精确性(如只筛选特定日期、类型的文档)。
3、核心挑战:列表融合
此时,我们得到了两个排序规则不同的列表。这是流程中最关键的一步。
关键词搜索列表 的top1是 Document A。
语义搜索列表 的top1是 Document C。
那么,最终的排名中,谁应该是第一?是Document A还是Document C?
4、生成最终排名
系统需要使用一种融合算法来解决上述挑战。常见的算法有:
加权排序:为不同搜索方法的结果分配权重,计算综合得分。
RRF:一种更鲁棒的算法,它考虑文档在每个列表中的排名位置,而非绝对分数,能更好地平衡不同列表的尺度差异。
最终,系统输出一个单一的、最优的文档排名列表,提供给后续步骤(如大语言模型)使用。
