检索增强生成(RAG)是一种强大的技术,它通过在文本生成过程中集成外部知识检索来增强大语言模型(LLMs)。RAG 可以减少幻觉现象,提高事实准确性,并支持特定领域的优化。本文将探讨 RAG 流程及其数学基础、检索机制(DPR、BM25)、FAISS 优化、权衡考量,以及其在金融问答(QA)中的应用。

简单理解 RAG
大型语言模型(LLMs)如 GPT-4 能够根据从海量数据中学习到的模式生成文本。然而,它们存在一个主要局限性——无法实时访问新的或外部知识。这意味着它们有时会产生“幻觉”,即生成听起来正确但实际上错误的信息。
检索增强生成(RAG)通过结合文本生成与实时信息检索来解决这一问题。RAG 模型不仅依赖于预训练的知识,还会在生成回答之前从外部来源(如 Wikipedia、研究论文、财务报告或数据库)检索相关文档。这使得它们的回答更加准确且与时俱进。
RAG 流程:详细解析

检索增强生成(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 进行向量搜索,而是依赖于直接的单词匹配。 -
• 适用于:需要精确匹配关键字的情况,如法律文档或财务报告。
示例:
如果用户询问 “投资加密货币有哪些风险?”,检索引擎可能会从数百万篇文档中找到以下内容:
-
1. 一篇最新的金融新闻文章,讨论加密货币市场的波动性。 -
2. 一份政府报告,警告加密货币的监管风险。 -
3. 一篇投资专家的博客,分析常见的投资风险。
这些检索到的文档将在下一步进行整合(Fusion)。
步骤 3:信息融合(Fusion)
这一阶段涉及将检索到的信息与用户查询融合。由于系统可能会检索到多篇相关文档,它需要决定如何有效地利用这些信息。简单地将所有文本输入语言模型是不高效的,甚至可能让 AI 产生混乱。
常见的融合方式包括:
-
1. 拼接(Concatenation):将检索到的文档直接附加到输入查询之前,然后输入语言模型。 -
2. 重新排序(Re-ranking):系统对检索到的文档进行评分,优先使用最相关的文档。 -
3. 加权注意力机制(Weighted Attention Mechanisms):某些 RAG 模型会高亮重要信息,使其在生成答案时更具影响力。
示例:
如果用户询问 “美联储的利率政策如何影响通货膨胀?”,系统可能会检索到以下四篇相关文档:
-
1. 美联储最近的利率上调报告。 -
2. 一篇经济学家博客,解释通货膨胀趋势。 -
3. 一篇新闻文章,总结利率对消费者支出的影响。 -
4. 一篇研究论文,分析历史上的通货膨胀周期。
融合阶段的目标是判断哪些文档最相关,并以最优方式呈现给 AI,以确保生成的回答基于事实。
步骤 4:答案生成(Generation)
最终,经过检索和融合后的信息将用于生成最终回答。与传统的聊天机器人不同,RAG 模型不仅依赖于预训练的知识,还能够实时引用外部文档。
-
• 高级语言模型(如 GPT-4、T5 或 BART) 负责生成最终答案。 -
• AI 结合多个来源的信息,确保答案更加准确、信息丰富。 -
• RAG 通过锚定到检索数据,避免“幻觉”现象(即编造事实)。
示例:
用户询问 “当前股市的最新趋势是什么?”
-
1. 系统检索到最新的财务报告和新闻文章,确保信息来源可靠。 -
2. 然后,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 采用三种关键优化策略:
-
1. IVF(倒排文件索引,Inverted File Indexing)
-
• FAISS 先将相似的文档聚类。 -
• 查询时,它先找到最接近的聚类,然后只在该聚类内进行搜索,而不是遍历所有文档,从而大幅加快检索速度。
-
2. HNSW(分层可导航小世界图,Hierarchical Navigable Small World Graphs) -
• 采用基于图的检索方法,以常数时间查找相似文档。 -
• 通过高效地跳跃节点,避免遍历整个数据集,从而减少计算量。 -
3. PQ(产品量化,Product Quantization) -
• 降低内存消耗,同时保持较高的检索精度。 -
• FAISS 不是存储完整的文档向量,而是将其压缩成更小的向量进行存储。 -
• 当语义理解很重要时,DPR 非常有用。即使确切的单词不同,它也能检索概念上相似的文档。 -
• BM25 更适合快速、可解释的关键字搜索,其中精确的术语匹配很重要。 -
• FAISS 对于提高 DPR 的可扩展性和效率至关重要。 -
• 金融研究(Financial Research):分析市场数据,回答财务问题。 -
• 法律分析(Legal Analysis):解析法律法规,提供合规性建议。 -
• 医学诊断(Medical Diagnostics):基于医学文献生成病情分析和诊断。 -
• 学术研究(Academic Research):帮助学者搜索论文,归纳研究成果。
比较所有 3 个:
DPR、BM25 和 FAISS 的比较
|
|
|
|
DPR(密集检索) |
|
|
|
BM25(稀疏检索) |
|
|
|
FAISS(加速 DPR) |
|
|
|
RAG 的影响与未来发展
RAG 通过结合检索推理(Retrieval-based Reasoning) 和 先进的语言建模(Advanced Language Modeling),正在彻底改变 AI 驱动的搜索与文本生成。它在需要实时、基于事实的、特定领域的知识检索的场景中尤其有价值,例如:
此外,多重检索(Multi-Retriever)方法进一步增强了 RAG 在金融问答(Financial QA)中的能力。例如,它可以整合结构化法规数据(如 IRS 税法、SEC 备案)*和*现实世界新闻、专家意见,确保提供精确且最新的答案**。
随着 AI 继续发展,RAG 模型将成为可信赖、准确的 AI 应用的关键组成部分。无论是回答复杂的金融问题、总结法律文本,还是生成医学报告,RAG 代表着 AI 在知识驱动领域的重大突破,使 AI 不仅流畅(fluent),更可靠(reliable)和知识丰富(knowledge-driven)。