Retrieval-Augmented Generation

一、RAG技术概述

1.1 RAG的定义与发展历程

检索增强生成(Retrieval-Augmented Generation, RAG)是一种将信息检索技术与生成式语言模型相结合的新型架构。其核心思想是在文本生成过程中动态引入外部知识源的信息作为上下文参考。这一概念最早由Facebook AI Research(现Meta AI)在2020年提出[1],旨在解决传统语言模型的以下局限性:

  • 知识固化问题:传统语言模型的参数化知识在训练完成后即固定不变
  • 事实准确性不足:容易产生看似合理但实际错误的"幻觉"(hallucination)内容
  • 领域适应性差:难以适应特定领域的专业知识和最新信息

1.2 RAG与传统语言模型的对比

特性 传统语言模型 RAG架构
知识存储方式 参数化存储 参数化+非参数化
知识更新机制 需要重新训练 可动态更新检索库
事实准确性 中等 较高
计算资源需求 推理时较低 推理时较高
可解释性 相对较高
领域适应性 需要微调 通过检索库调整

二、RAG核心架构与技术原理

2.1 RAG基础架构

典型的RAG系统由三个核心组件构成:

  1. 检索器(Retriever)

    • 负责从知识库中检索相关文档
    • 常用双编码器架构(如DPR)或稠密检索模型
    • 支持多种索引结构(如FAISS, Annoy等)
  2. 生成器(Generator)

    • 基于检索结果生成最终输出
    • 通常采用预训练语言模型(如GPT, T5等)
    • 支持多种解码策略(beam search, sampling等)
  3. 知识库(Knowledge Base)

    • 存储可供检索的结构化/非结构化数据
    • 需要定期更新维护
    • 支持多种格式(文本, 表格, 图谱等)

2.2 RAG工作流程详解

  1. 查询处理阶段

    • 用户输入query经过预处理(分词, 归一化等)
    • 可能进行query扩展或重写
    • 生成稠密向量表示
  2. 检索阶段

    • 计算query向量与文档向量的相似度
    • 返回top-k相关文档片段
    • 可能进行多轮迭代检索
  3. 生成阶段

    • 将query和检索结果拼接为prompt
    • 语言模型基于上下文生成响应
    • 可能进行后处理和验证

2.3 RAG的数学形式化表示

给定输入x和知识库D={d₁,…,d_N},RAG模型的生成过程可表示为:

p(y|x) = Σ_{d∈Top-k(D,x)} p(d|x) · p(y|x,d)

其中:

  • p(d|x)表示文档d与x的相关性概率
  • p(y|x,d)表示基于x和d的条件生成概率
  • Top-k(D,x)表示知识库D中与x最相关的k个文档

三、RAG关键技术实现

3.1 检索器优化技术

3.1.1 稠密检索 vs 稀疏检索

类型 代表方法 优点 缺点
稀疏检索 BM25, TF-IDF 计算高效,无需训练 语义捕捉能力有限
稠密检索 DPR, ANCE 语义理解能力强 需要训练,计算成本高

3.1.2 高级检索技术

  1. 多向量检索(Multi-Vector)

    • 每个文档表示为多个向量(如段落级)
    • ColBERT是典型代表
    • 提高细粒度匹配能力
  2. 交叉编码器重排序

    • 使用计算密集型模型对初检结果重排序
    • 显著提升精度但增加延迟
  3. 迭代式检索

    • Query逐步优化策略
    • 如Query扩展、伪相关反馈等技术

3.2 生成器优化技术

3.2.1 Prompt工程策略

  1. 结构化Prompt模板
text
[Instruction]: {任务指令}
[Context]: {检索到的相关内容}
[Question]: {用户输入}
[Answer]:
  1. 动态Prompt构建
    • 基于检索结果自动调整prompt结构
    • 重要性加权和内容筛选

3.2.2 生成控制技术

  1. 约束解码(Constrained Decoding)

    • 确保生成内容与检索结果一致
    • 如基于有限状态机的解码方法
  2. 验证后处理(Verification)

    • 对生成内容进行事实核查
    • 可结合NLI模型或规则系统