为什么要做 RAG?
一、LLMs 的不足
- 幻觉问题:基于概率生成的机制导致输出可能不准确或虚构内容。
- 时效性问题:模型训练周期长,无法实时更新数据,难以回答时效性强的查询。
- 数据安全问题:通用模型缺乏企业私有数据支持,本地化部署需求高。
二、RAG 技术解析
2.1 RAG 定义
检索增强生成(Retrieval-Augmented Generation):通过结合外部知识库检索与生成模型,提升大模型输出的准确性和可解释性。核心流程:
- 检索(Retrieval):从知识库中筛选相关文档。
- 生成(Generation):基于检索结果生成回答。
2.2 检索器模块(Retriever)
关键问题与解决方案
问题 |
解决方案 |
语义表示 |
分块策略优化(灵活选择块大小)、微调嵌入模型(如BGE、Voyage)。 |
语义空间对齐 |
查询重写(LLM生成伪文档)、嵌入变换(适配器微调)。 |
输出对齐模型偏好 |
监督训练(如REPLUG的KL散度优化)、适配器附加(无需微调嵌入模型)。 |
2.3 生成器模块(Generator)
- 作用:将检索结果整合为自然语言回答。
- 优化方向:
- 后检索处理:信息压缩、结果重排序(如按相关度调整)。
- 生成器输入优化:结合查询与检索文本,通过Prompt Engineering增强输入多样性。
- 模型微调:对比学习、指令微调(如PKG直接替换检索模块)。
三、RAG 的优势
优势 |
说明 |
可扩展性 |
无需全模型训练,外挂知识库即可扩展知识。 |
准确性 |
引用外部信息,支持结果溯源。 |
时效性 |
动态检索支持最新数据接入。 |
安全性 |
本地化部署控制数据权限。 |
可控性 |
知识库可定制更新,适应垂直领域需求。 |
四、RAG vs. SFT
维度 |
RAG |
SFT |
外部知识 |
动态检索外部数据,支持实时更新。 |
依赖静态训练数据,时效性差。 |
模型定制 |
侧重知识整合,风格控制有限。 |
可调整生成风格,但知识覆盖有限。 |
幻觉抑制 |
基于检索结果生成,减少虚构内容。 |
依赖训练数据质量,无法完全消除幻觉。 |
技术复杂度 |
需高效检索算法和大规模数据管理。 |
需大量标注数据和计算资源微调。 |
五、RAG 实现方法
5.1 数据索引构建
- 数据提取:
- 多格式解析:PDF(PP-StructureV2)、PPT(转PDF后解析)、Markdown等。
- 信息清洗:去重、过滤冗余内容。
- 文本分割(Chunking):
- 策略:固定长度(256/512 tokens)、基于意图(句分割、递归分割)。
- 工具:LangChain的
CharacterTextSplitter
。
- 向量化与索引:
- 模型:BGE、ERNIE-Embedding。
- 数据库:FAISS(高效相似度搜索)、Milvus(分布式支持)。
5.2 检索流程
- 技术组合:
- 元数据过滤:缩小检索范围(如按时间、章节)。
- 混合检索:向量相似度(余弦距离)+ 关键词检索(BM25)。
- 重排序:按业务规则优化结果(如相关度加权)。
5.3 生成优化
六、典型案例
案例 |
核心实现 |
亮点 |
ChatPDF |
分段向量化 + 相似度检索 + GPT生成 |
支持多格式文档问答,开源复刻版易部署。 |
百川(Baichuan) |
指令理解 + 智能搜索 + 结果增强 |
减少幻觉,提升回答可靠性。 |
RA-CM3 |
多模态检索(CLIP检索器)+ CM3生成器 |
支持图像与文本联合检索生成。 |
七、RAG 的挑战与改进方向
- 检索效果依赖算法:需持续优化嵌入模型与检索策略(如引入知识图谱增强语义关联)。
- 信息利用不透明:开发可解释性工具(如注意力可视化)。
- 效率问题:动态调整检索片段数量(k值自适应优化)。
- 数据源真实性:构建可信数据源验证机制,支持引用溯源。
- 多模态扩展:强化图像、音频等多模态检索能力。
总结
RAG 通过结合检索与生成技术,有效弥补了LLM在时效性、准确性和安全性上的不足,但其性能高度依赖检索模块的设计与数据质量。未来需进一步优化语义对齐、动态检索策略及多模态支持,以实现更智能、高效的生成系统。