RAG 技术原理、核心流程与最佳实践指南
前言
检索增强生成(Retrieval-Augmented Generation, RAG)是连接大语言模型(LLM)与私有知识库的关键技术。随着大模型应用的深入,RAG 在解决知识时效性、减少幻觉以及提升专业领域准确性方面扮演着核心角色。本文将深入解析 RAG 的原理、核心流程及工程化最佳实践。
发展历史
RAG 的概念最早由 Lewis 等人在 2020 年提出,旨在结合预训练语言模型的生成能力与外部文档的检索能力。早期研究主要集中在向量检索与文本生成的结合上。随着 Transformer 架构的普及和 Embedding 技术的成熟,RAG 逐渐从学术概念走向工业级应用,成为企业构建智能问答系统的标准范式。
原理与流程
RAG 的核心思想是通过检索外部数据,增强大模型的生成效果。其基本流程如下:
graph LR
P[数据处理] -.-> R[检索]
R --> A[利用 | 增强]
A --> G[生成]
- 数据预处理:这是常被忽略但至关重要的一步。高质量的效果依赖于高准确率的检索,而检索准确率直接取决于数据的清洗与处理质量。
- 检索(Retrieval):根据用户查询(Query),按照特定策略从海量数据中匹配相关内容。
- 利用与增强(Augmentation):将检索到的上下文信息整合进 Prompt,扩充模型的知识边界。
- 生成(Generation):大模型基于增强后的输入生成最终回答。
1. 数据处理
目标是将非结构化数据转化为模型可理解的特征。
1.1 数据结构化
传统上将数据分为三类:
- 高度结构化:Markdown, HTML, JSON, YAML 文件。
- 半结构化:Word 文档,带有部分格式信息的文本。
- 低结构化:PDF, 图片,纯文本。
传统方法通常先将数据转为文本,再提取特征。例如使用 OCR 识别 PDF 中的文字。现代多模态模型(如 GPT-4V)支持直接处理图像,提供了更多操作空间,但在企业级应用中,文本向量化仍是主流。
1.2 特征提取
推荐使用大模型 Embedding 进行特征提取。Embedding 对内容的特征提取主要有三种语义模式:
1.2.1 对称语义(Symmetric Semantics)
向量相似度是对称的,即 Similarity(A, B) = Similarity(B, A)。
- 应用场景:词向量(Word2Vec, GloVe)、文档相似度计算。
- 度量方式:余弦相似度(Cosine Similarity)。
1.2.2 非对称语义(Asymmetric Semantics)
向量相似度具有方向性,Similarity(A, B) ≠ Similarity(B, A)。
- 应用场景:问答系统(QA)、推荐系统、翻译模型。
- 特点:问题与答案的关系是非对称的,用户兴趣与物品属性也是非对称的。
1.2.3 混合语义
结合前两者优点,通常配合 Instruction Tuning,让模型理解指令意图。
- 代表模型:m3e, bge, gte 等开源 Embedding 模型。
1.2.4 范围控制
并非所有参与特征化的内容都能带来增益。在生成式场景中,精准的范围控制尤为重要。
- 示例:在 OnCall 小助手场景中,数据集应仅包含'问题 + 原因 + 结论',而非全部通话录音转写文本,否则噪声会干扰检索精度。


