理解检索增强生成(RAG)与多检索器系统
理解检索增强生成(RAG)与多检索器系统
导读:检索增强生成(RAG)是一种强大的技术,它通过在文本生成过程中集成外部知识检索来增强大语言模型(LLMs)。RAG 可以减少幻觉现象,提高事实准确性,并支持特定领域的优化。本文将探讨 RAG 流程及其数学基础、检索机制(DPR、BM25)、FAISS 优化、权衡考量,以及其在金融问答(QA)中的应用。
大型语言模型(LLMs)如 GPT-4 能够根据从海量数据中学习到的模式生成文本。然而,它们存在一个主要局限性——无法实时访问新的或外部知识。这意味着它们有时会产生“幻觉”,即生成听起来正确但实际上错误的信息。
检索增强生成(RAG)通过结合文本生成与实时信息检索来解决这一问题。RAG 模型不仅依赖于预训练的知识,还会在生成回答之前从外部来源(如 Wikipedia、研究论文、财务报告或数据库)检索相关文档。这使得它们的回答更加准确且与时俱进。
检索增强生成(RAG) 通过在生成回答之前检索相关信息,增强了大型语言模型(LLMs)的能力。这确保了输出内容更加准确、符合事实,并且与上下文相关。RAG 采用一个结构化的流程,可以分为四个关键步骤,以便更好地理解其工作原理:
步骤 1:查询编码(Query Encoding)
查询编码将用户的问题转换为可搜索的格式。当用户提出问题或输入查询时,系统并不会将其简单地视为普通文本,而是会将查询转换为数值格式,使其能够与存储的文档进行高效比较。
这一转换由 AI 驱动的神经编码器完成,例如 BERT(双向编码器表示) 或 SecBERT(专门针对金融或安全数据优化的 BERT 版本)。
- • 编码后的查询以向量(vector)的形式表示,本质上是一个数值列表,能够捕捉输入的语义含义。
- • 这种方式比直接的关键字匹配(如仅搜索特定单词)更有效,因为人们的提问方式各不相同,而且同一个单词可能具有多重含义。向量编码可以基于含义检索信息,而不仅仅是基于词匹配。
示例:
如果用户询问 “通货膨胀如何影响股票价格?”,系统会将该查询转换为一个密集向量(dense vector),捕捉其核心含义。这样,即使相关文档使用的是不同的表述,如 “通货膨胀与股市的关系”,系统仍然能够找到匹配的内容。
步骤 2:信息检索(Retrieval)
这一阶段的目标是找到最相关的信息。当查询被编码后,系统会在文档数据库中搜索最匹配的内容,以确保模型能够访问真实、最新、符合事实的材料,而不仅仅依赖于训练时学到的知识。
主要有两种检索方法:
1. 密集通道检索(Dense Passage Retrieval, DPR)
- • DPR 使用神经网络来寻找基于语义的最相关文档,而不仅仅是匹配单词。
- • 查询和文档都会被转换为向量嵌入(vector embeddings),系统会检索与查询向量最相似的文档。
- • 适用于:当文档的表述方式不同,但核心含义相近时,DPR 能够有效匹配。
2. 基于 BM25 的稀疏检索(BM25-Based Sparse Retrieval)
- • BM25 是一种数学公式,它根据关键字的相关性对文档进行排序。
- • 它考虑了关键词的出现频率及其所在位置(例如,在标题中还是正文深处)。
- • 与 DPR 不同,BM25 不使用 AI 进行向量搜索,而是依赖于直接的单词匹配。
- • 适用于:需要精确匹配关键字的情况,如法律文档或财务报告。
示例:
如果用户询问 “投资加密货币有哪些风险?”,检索引擎可能会从数百万篇文档中找到以下内容:
- 一篇最新的金融新闻文章,讨论加密货币市场的波动性。
- 一份政府报告,警告加密货币的监管风险。
- 一篇投资专家的博客,分析常见的投资风险。
这些检索到的文档将在下一步进行整合(Fusion)。
步骤 3:信息融合(Fusion)
这一阶段涉及将检索到的信息与用户查询融合。由于系统可能会检索到多篇相关文档,它需要决定如何有效地利用这些信息。简单地将所有文本输入语言模型是不高效的,甚至可能让 AI 产生混乱。
常见的融合方式包括:
- 拼接(Concatenation):将检索到的文档直接附加到输入查询之前,然后输入语言模型。
- 重新排序(Re-ranking):系统对检索到的文档进行评分,优先使用最相关的文档。
- 加权注意力机制(Weighted Attention Mechanisms):某些 RAG 模型会高亮重要信息,使其在生成答案时更具影响力。
示例:
如果用户询问 “美联储的利率政策如何影响通货膨胀?”,系统可能会检索到以下四篇相关文档:
- 美联储最近的利率上调报告。
- 一篇经济学家博客,解释通货膨胀趋势。
- 一篇新闻文章,总结利率对消费者支出的影响。
- 一篇研究论文,分析历史上的通货膨胀周期。
融合阶段的目标是判断哪些文档最相关,并以最优方式呈现给 AI,以确保生成的回答基于事实。
步骤 4:答案生成(Generation)
最终,经过检索和融合后的信息将用于生成最终回答。与传统的聊天机器人不同,RAG 模型不仅依赖于预训练的知识,还能够实时引用外部文档。
- • 高级语言模型(如 GPT-4、T5 或 BART) 负责生成最终答案。
- • AI 结合多个来源的信息,确保答案更加准确、信息丰富。
- • RAG 通过锚定到检索数据,避免“幻觉”现象(即编造事实)。
示例:
用户询问 “当前股市的最新趋势是什么?”
- 系统检索到最新的财务报告和新闻文章,确保信息来源可靠。
- 然后,AI 生成一个清晰、结构化的回答:
“截至 2025 年 3 月,标普 500 指数因利率上升而表现出较高波动性。分析师预计市场将进一步波动,特别是在科技和能源板块。彭博社和 CNBC 的最新报告显示,AI 相关股票的收益表现强劲。”
如果没有 RAG,传统的 AI 可能会给出过时的信息,而 RAG 通过实时检索,确保回答的时效性和准确性。
RAG 的数学公式
上述 RAG 流程的四个主要步骤也可以通过数学方式进行研究和理解。接下来,我们将逐步解析 RAG 的数学基础,并用简单的语言解释每个公式。如果你对 RAG 的数学原理不感兴趣,可以跳过此部分,直接阅读其工作原理和应用。
步骤 1:查询编码(Query Encoding)—— 将问题转换为可搜索格式
当用户提供一个查询 qq 时,系统需要将其转换为机器可读的格式。而不是直接将文本作为普通单词处理,系统会将其编码为密集向量表示(dense vector representation),这种结构化的数值格式能够捕捉查询的语义信息。
数学上,该过程可以表示为:
其中:
- • 是查询的向量表示(即编码后的查询)。
- • 是一个神经编码器(如 BERT、DPR 或 SecBERT),它能够将文本转换为数值嵌入(embedding)。
- • 是编码器的已学习参数,即模型在训练过程中优化的参数。
作用:编码后的查询 q′q' 充当“搜索键”,用于在数据库中查找最相关的文档。
步骤 2:检索概率(Retrieval Probability)—— 查找最相关的文档
当查询被转换为向量后,系统会在大型知识库中搜索匹配的文档。其目标是找到与查询最相似的文档。
如何衡量相似度?
相似度通常通过余弦相似度(cosine similarity)或点积相似度(dot product similarity)来计算。检索到某个文档 dd 的概率可以表示为:
其中:
- • :表示查询 q′q' 与文档 dd 之间的相似度分数。
- • :确保所有相似度分数都是正数,并进行适当缩放。
- • 分母 :对所有候选文档进行归一化,使得最终的概率值介于 0 和 1 之间。
作用:该公式保证最相关的文档具有更高的检索概率,从而提高系统的检索准确性。
步骤 3:答案生成(Response Generation)—— 生成连贯的回答
当系统检索到最相关的文档后,LLM(大型语言模型)需要基于查询和检索到的信息生成回答。
数学上,这个过程可以表示为:
其中:
- • 是最终生成的回答序列(即 AI 输出的文本)。
- • 表示回答中的第 tt 个单词。
- • 代表之前已生成的单词,确保生成的句子是连贯的。
- • 是原始用户查询。
- • 是检索到的相关文档。
作用:这一生成过程是逐步进行的,确保输出的回答既符合事实,又保持语法和语义上的连贯性。
步骤 4:端到端优化(End-to-End Optimization)—— 让模型不断改进
为了确保系统生成最优的回答,模型会不断优化自身,使用最大似然估计(Maximum Likelihood Estimation, MLE) 进行训练。
其目标函数(损失函数)可以表示为:
其中:
- • 是正确答案的生成概率,即 AI 生成正确答案的可能性。
- • 函数用于简化计算,并使得学习过程更加稳定。
- • 训练数据集 包含(查询,文档,正确回答) 三元组,确保模型学习到正确的答案模式。
作用:通过优化该目标函数,模型能够不断学习并调整权重,使其在未来生成更准确的回答。
RAG 中的检索机制:密集通道检索(DPR)与稀疏搜索(BM25)
密集通道检索(DPR:Dense Passage Retrieval)
DPR 是一种基于神经网络的检索方法,它利用深度学习模型理解单词背后的语义。不同于仅基于关键词匹配的传统方法(如 BM25),DPR 将查询和文档转换为数值表示(嵌入向量),然后计算相似度以检索最相关的文档。
DPR 的工作原理
DPR 采用两步检索流程:
1. 编码查询和文档(Encoding the Query and Documents)
DPR 采用双编码器(bi-encoder)架构,即两个独立的神经网络分别用于:
- • 查询编码器: 处理用户的查询
- • 文档编码器: 处理文档
两者均将输入转换为高维向量(即密集嵌入)。
2. 相似度匹配进行检索(Retrieval Using Similarity Matching)
- • 一旦查询和文档都被转换为向量,系统就会计算它们之间的相似度分数。
- • 该相似度通常通过余弦相似度(cosine similarity)计算:
- • 最高相似度的文档将被检索出来。
基于 BM25 的稀疏检索(BM25-Based Sparse Retrieval)
BM25 是一种基于统计的排名算法,它根据关键词的频率检索文档。BM25 属于“词袋模型”(bag-of-words model),意味着它不考虑单词的语义,仅关注它们在文档中的出现频率。
BM25 的工作原理
BM25 采用以下因素对文档进行排名:
- • 词频(TF, Term Frequency):关键词在文档中出现的次数。
- • 逆文档频率(IDF, Inverse Document Frequency):关键词在整个数据集中有多稀有。
- • 文档长度归一化(Document Length Normalization):根据文档长度调整得分。
BM25 计算公式如下:
其中:
- • :查询中的关键词。
- • :控制词频的影响(通常设为 1.2 或 2.0)。
- • :控制文档长度归一化(通常设为 0.75)。
- • :文档长度。
- • :数据集中文档的平均长度。
FAISS:利用向量搜索加速 DPR 检索
虽然 DPR 很强大,但在数百万个文档中搜索相似向量的计算成本很高。FAISS(Facebook AI Similarity Search) 是一个高效的向量搜索库,可以大幅提高检索速度。
FAISS 的工作原理
FAISS 采用三种关键优化策略:
- IVF(倒排文件索引,Inverted File Indexing)
• FAISS 先将相似的文档聚类。
• 查询时,它先找到最接近的聚类,然后只在该聚类内进行搜索,而不是遍历所有文档,从而大幅加快检索速度。
- HNSW(分层可导航小世界图,Hierarchical Navigable Small World Graphs)
• 采用基于图的检索方法,以常数时间查找相似文档。
• 通过高效地跳跃节点,避免遍历整个数据集,从而减少计算量。
- PQ(产品量化,Product Quantization)
- • 降低内存消耗,同时保持较高的检索精度。
- • FAISS 不是存储完整的文档向量,而是将其压缩成更小的向量进行存储。
比较所有 3 个:
- • 当语义理解很重要时,DPR 非常有用。即使确切的单词不同,它也能检索概念上相似的文档。
- • BM25 更适合快速、可解释的关键字搜索,其中精确的术语匹配很重要。
- • FAISS 对于提高 DPR 的可扩展性和效率至关重要。
DPR、BM25 和 FAISS 的比较
方法 | 适用场景 | 优势 | 劣势 |
---|---|---|---|
DPR(密集检索) | 需要理解语义的任务 | 可检索语义相似的文档,即使词汇不同 | 计算成本高,搜索较慢 |
BM25(稀疏检索) | 关键词匹配任务 | 计算速度快,易解释 | 不能理解语义,仅限于词匹配 |
FAISS(加速 DPR) | 需要大规模检索的任务 | 提高 DPR 的扩展性,减少计算开销 | 仍然依赖 DPR 训练的向量 |
RAG 的影响与未来发展
RAG 通过结合检索推理(Retrieval-based Reasoning) 和 先进的语言建模(Advanced Language Modeling),正在彻底改变 AI 驱动的搜索与文本生成。它在需要实时、基于事实的、特定领域的知识检索的场景中尤其有价值,例如:
- • 金融研究(Financial Research):分析市场数据,回答财务问题。
- • 法律分析(Legal Analysis):解析法律法规,提供合规性建议。
- • 医学诊断(Medical Diagnostics):基于医学文献生成病情分析和诊断。
- • 学术研究(Academic Research):帮助学者搜索论文,归纳研究成果。
此外,多重检索(Multi-Retriever)方法进一步增强了 RAG 在金融问答(Financial QA)中的能力。例如,它可以整合结构化法规数据(如 IRS 税法、SEC 备案)和现实世界新闻、专家意见,确保提供精确且最新的答案**。
随着 AI 继续发展,RAG 模型将成为可信赖、准确的 AI 应用的关键组成部分。无论是回答复杂的金融问题、总结法律文本,还是生成医学报告,RAG 代表着 AI 在知识驱动领域的重大突破,使 AI 不仅流畅(fluent),更可靠(reliable)和知识丰富(knowledge-driven)。