RAG 检索增强生成:概念、原理与实战
一、为什么需要 RAG?
尽管大语言模型(LLMs)已展现出显著的能力,但以下几个挑战依然值得关注:
- 幻觉问题:LLM 采用基于统计的概率方法逐词生成文本,这一机制内在地导致其可能出现看似逻辑严谨实则缺乏事实依据的输出,即所谓的'郑重其事的虚构陈述'。
- 时效性问题:随着 LLM 规模扩大,训练成本与周期相应增加。包含最新信息的数据难以融入模型训练过程,导致 LLM 在应对诸如'请推荐当前热门影片'等时间敏感性问题时力有未逮。
- 数据安全问题:通用的 LLM 没有企业内部数据和用户数据。企业想要在保证安全的前提下使用 LLM,最好的方式是把数据全部放在本地,业务计算在本地完成,而在线的大模型仅完成归纳功能。
二、什么是 RAG?
RAG(Retrieval Augmented Generation,检索增强生成)是一种技术框架。其核心在于当 LLM 面对解答问题或创作文本任务时,首先会在大规模文档库中搜索并筛选出与任务紧密相关的素材,继而依据这些素材精准指导后续的回答生成或文本构造过程,旨在通过此种方式提升模型输出的准确性和可靠性。
三、RAG 主要包含哪些模块?
1. 版面分析
本地知识文件读取(pdf、txt、html、doc、excel、png、jpg、语音等),并进行知识文件复原。
- 富文本 txt 读取:排版整洁,获取方式简单。
- PDF 文档解析:数据复杂,包含文本、图片、表格。常用工具包括 pdfplumber、PyMuPDF。
- HTML 文档解析:使用 BeautifulSoup 等库提取网页内容。
- Doc 文档解析:使用 python-docx 处理 Word 文档。
- OCR 图片识别:光学字符识别(Optical Character Recognition)。开源项目包括 Tesseract、PaddleOCR、EasyOCR 等。流程涉及文字检测与识别。
- ASR 语音识别:自动语音识别(Automatic Speech Recognition)。将语音信号转换为文本。涉及声学信号预处理、特征提取、声学模型及语言模型。
2. 知识库构建
- 知识文本分割:根据语义完整性对长文本进行分块,避免信息丢失,同时考虑 Embedding 模型的 Token 限制。
- Docs 向量化(Embedding):将文本压缩为分布式连续值向量。相似文本在向量空间中距离更近。优势包括语义理解、容错性、多语言支持及语境理解。常用模型包括 BGE、Text2Vec、SimCSE 等。
- Docs 构建索引:使用向量数据库存储和检索。常用方案包括 Faiss、Milvus、Elasticsearch。
3. 大模型微调
- 全量微调(FFT):训练所有参数,成本高且易产生灾难性遗忘。
- 高效微调(PEFT):只训练部分参数,主流方案包括 SFT(监督微调)、RLHF(人类反馈强化学习)、RLAIF(AI 反馈强化学习)。
- 微调目的:在可控成本下提升特定领域能力,解决 Prompt 过长导致的截断或推理成本高的问题。
4. 文档检索
作为 RAG 核心工作,效果直接影响下游质量。常用方式是用用户问题进行向量召回,但口语化问题可能影响召回质量。需关注负样本挖掘及检索优化策略。
5. Reranker(重排序)
基础 RAG 架构可能无法满足高准确度要求。集成 Reranker 可在向量查询后进一步评估搜索结果相关性,精细重排结果。常用工具如 bge-reranker。
6. RAG 评测
有效评估性能是优化 RAG 的关键。需建立专门的评测体系来衡量检索与生成的质量。
四、RAG 相较于直接使用 LLMs 进行问答有哪些优点?
- 可扩展性:减小模型规模及训练开销,简化知识库扩容更新。
- 准确性:引用信息源,用户可核查答案可信度。
- 可控性:支持知识内容灵活更新与个性化配置。
- 可解释性:展示模型预测依赖的检索条目,增进透明度。
- 多功能性:适应问答、摘要、对话等多种场景。
- 时效性:捕捉最新信息动态,相比仅依赖训练数据有明显优势。
- 领域定制性:对接特定行业数据集,提供专业知识支持。
- 安全性:数据库层面实施角色划分与安全管控,强化数据管理。
五、RAG 与 SFT 对比
SFT(Supervised Fine-Tuning)是 LLM 应用的基础步骤,用于解决特定领域能力不足的问题。两者并非非此即彼,合理方式是结合业务需要与两种方法的优点。RAG 更适合知识频繁更新且需保证准确性的场景,SFT 更适合固定领域的风格或格式调整。
六、开源项目推荐
- RAGFlow:基于深度文档理解的开源 RAG 引擎,提供精简工作流程,支持复杂格式数据问答及引用。
- QAnything:本地知识库问答系统,支持多种文件格式离线安装和使用。
- Langchain-Chatchat:基于 Langchain 与 ChatGLM 等模型的本地知识库问答应用,支持 Elasticsearch 混合查询。
七、总结
RAG 技术通过检索外部知识库增强大模型生成能力,有效解决了幻觉、时效性和数据安全等核心痛点。开发者可根据实际需求选择版面分析、向量化、检索优化及微调等模块组合,构建高效可靠的智能问答系统。

