跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

RAG(检索增强生成)技术详解:原理、架构与实践指南

RAG(检索增强生成)通过结合外部知识库与大语言模型,解决幻觉、时效性及数据安全问题。核心流程包括文档解析、分块、向量化、索引构建及检索重排序。相比微调,RAG 具备低成本更新知识、可解释性强等优势。详细阐述了 RAG 的七大模块,涵盖从本地文件获取到评测优化的全流程,并提供 Python 代码实践示例,帮助开发者构建高效可靠的智能问答系统。

ServerBase发布于 2025/2/7更新于 2026/10/19110 浏览
RAG(检索增强生成)技术详解:原理、架构与实践指南

一、LLMs 已经具备了较强能力,为什么还需要 RAG?

尽管大语言模型(LLM)已展现出显著的能力,但以下几个挑战依然值得关注:

  1. 幻觉问题:LLM 采用基于统计的概率方法逐词生成文本,这一机制内在地导致其可能出现看似逻辑严谨实则缺乏事实依据的输出,即所谓的'郑重其事的虚构陈述'。
  2. 时效性问题:随着 LLM 规模扩大,训练成本与周期相应增加。包含最新信息的数据难以融入模型训练过程,导致 LLM 在应对诸如'请推荐当前热门影片'等时间敏感性问题时力有未逮。
  3. 数据安全问题:通用的 LLM 没有企业内部数据和用户数据。企业想要在保证安全的前提下使用 LLM,最好的方式是把数据全部放在本地,企业数据的业务计算全部在本地完成,而在线的大模型仅仅完成一个归纳的功能。

二、什么是 RAG?

RAG(Retrieval Augmented Generation,检索增强生成)是一种技术框架,其核心在于当 LLM 面对解答问题或创作文本任务时,首先会在大规模文档库中搜索并筛选出与任务紧密相关的素材,继而依据这些素材精准指导后续的回答生成或文本构造过程,旨在通过此种方式提升模型输出的准确性和可靠性。

[图:RAG 技术架构图]

三、RAG 主要包含哪些模块?

模块一:版面分析

本地知识文件读取(pdf、txt、html、doc、excel、png、jpg、语音等),并进行知识文件复原。

Step 1:本地知识文件获取

针对不同类型的文件,需要采取特定的访问与解析策略来有效获取其中蕴含的知识。

  • 富文本 txt:直接读取即可。
with open('document.txt', 'r', encoding='utf-8') as f:
    content = f.read()
  • PDF 文档:数据复杂,包含文本、图片、表格。推荐使用 pdfplumber 或 PyMuPDF。
import pdfplumber
with pdfplumber.open('document.pdf') as pdf:
    text = ''
    for page in pdf.pages:
        text += page.extract_text()
  • HTML 文档:推荐使用 BeautifulSoup 提取正文。
  • Doc 文档:推荐使用 python-docx。
  • 图片内容:使用 OCR(如 PaddleOCR, Tesseract)。
  • 语音内容:使用 ASR(如 Wenet, WeTextProcessing)将语音转为文本。

Step 2:知识文件复原

本地知识文件获取后,容易将一个多行段落分割成多个段落,导致语义断裂。需要根据内容逻辑重新组织段落。

  • 方法一:基于规则的知识文件复原。
  • 方法二:基于 Bert NSP 进行上下句拼接。
模块二:知识库构建

Step 1:知识文本分块

  • 原因:避免信息丢失风险;受限于 Embedding 模型的 Tokens 限制及语义完整性。
  • 策略:考虑 embedding 模型的 Token 限制情况;确保语义完整性对整体检索效果的影响。

Step 2:Docs 向量化(Embedding)

Embedding 是文本语义含义的信息密集表示,每个嵌入都是一个浮点数向量,使得向量空间中两个嵌入之间的距离与原始格式中两个输入之间的语义相似性相关联。

  • 优势:语义理解、容错性(同义词/拼写错误)、多语言支持、语境理解。
  • 限制:输入词数限制(TopK 阈值可能引发信息遗漏);仅支持文本数据;大模型仍可能胡编乱造。
  • 常用模型:BGE(智源开源)、M3E、Sbert、SimCSE、text2vec。

Step 3:Docs 构建索引

  • 工具:Faiss、Milvus、Elasticsearch。
模块三:大模型微调

为什么需要微调?

  1. 全量训练成本高,微调性价比更高。
  2. Prompt Engineering 会导致推理成本高(与长度平方正相关)且易被截断。
  3. 自有数据能更好提升特定领域能力。
  4. 个性化服务需求。
  5. 数据安全,数据不能传递给第三方大模型服务。

技术路线:

  • FFT (Full Fine Tuning):全量参数训练。缺点:成本高、灾难性遗忘。
  • PEFT (Parameter-Efficient Fine Tuning):部分参数训练。主流方案包括 SFT(监督式微调)、RLHF(人类反馈强化学习)、RLAIF(AI 反馈强化学习)。
模块四:文档检索

文档检索作为 RAG 核心工作,其效果对于下游工作至关重要。常用的方式直接用用户的问题进行文档召回,但口语化描述会影响向量召回质量。

优化策略:

  • 负样本挖掘:从大量候选样本集合中采样高质量负例配合正例训练。
  • 检索优化:改进查询重写、混合检索等策略。
模块五:Reranker

为什么需要 Reranker? 基础 RAG 架构虽能解决幻觉问题,但企业对上下文相关性和问答准确度要求更高。集成 Reranker 可更精细地对结果重排,提高搜索质量。

流程:拿到向量查询(ANN)结果后使用 Reranker,评估搜索结果相关性。

  • 工具:bge-reranker。
模块六:RAG 评测

如何有效评估 RAG 性能是关键问题。需关注检索准确率、生成质量、响应时间等指标。

模块七:RAG 开源项目推荐
  1. RAGFlow:基于深度文档理解的开源 RAG 引擎,提供精简工作流程,支持复杂格式数据问答及引用。
  2. QAnything:本地知识库问答系统,支持多种文件格式和数据库,允许离线安装。
  3. Langchain-Chatchat:基于 Langchain 与 ChatGLM 的本地知识库问答应用。

四、RAG 相较于直接使用 LLMs 进行问答有哪些优点?

  1. 可扩展性:减小模型规模及训练开销,简化知识库扩容更新。
  2. 准确性:引用信息源,用户可核查答案可信度。
  3. 可控性:支持知识内容灵活更新与个性化配置。
  4. 可解释性:展示模型预测依赖的检索条目。
  5. 多功能性:适应问答、摘要、对话等多种场景。
  6. 时效性:捕捉最新信息动态。
  7. 领域定制性:对接特定行业数据集。
  8. 安全性:数据库层面实施角色划分与安全管控。

五、RAG 和 SFT 的区别

SFT(Supervised Fine-Tuning)是 LLM 实现应用的基础步骤。两者并非非此即彼,合理方式是结合业务需要与两种方法的优点。

  • SFT:侧重于让模型学习特定任务的输出格式和风格,适合指令遵循。
  • RAG:侧重于引入外部知识,解决知识时效性和幻觉问题,适合知识密集型任务。

通常建议先使用 RAG 解决知识注入问题,若需优化模型风格或特定任务表现,再辅以 SFT。

目录

  1. 一、LLMs 已经具备了较强能力,为什么还需要 RAG?
  2. 二、什么是 RAG?
  3. 三、RAG 主要包含哪些模块?
  4. 模块一:版面分析
  5. 模块二:知识库构建
  6. 模块三:大模型微调
  7. 模块四:文档检索
  8. 模块五:Reranker
  9. 模块六:RAG 评测
  10. 模块七:RAG 开源项目推荐
  11. 四、RAG 相较于直接使用 LLMs 进行问答有哪些优点?
  12. 五、RAG 和 SFT 的区别

更多推荐文章

查看全部
  • 深度学习模型训练和部署的基本步骤
  • Go 语言泛型与 WebAssembly 技术解析
  • Claude Code 本地配置与使用指南
  • GitHub Copilot 登录失败排查指南:7 个关键检查点
  • HarmonyOS 5.0 星闪技术构建智能家居边缘计算网关
  • 通义万相 2.1 多模态生成技术解析与云端部署实践
  • BFS 解决 FloodFill 算法:从图像渲染到岛屿问题实战
  • 2025年度技术博客总结:从Python基础到AI前沿的进阶之旅
  • OpenSpec 实战:用规范驱动开发解决 AI 编程协作难题
  • 基于 AI 的论文降重与 AIGC 检测技术分析
  • 基于 DeepFace 与 OpenCV 的实时情绪分析器实现
  • Transformer 三种注意力机制详解与 PyTorch 实现
  • Python 实现 MCP 客户端调用高德地图天气查询示例
  • Stable Diffusion 插件 Inpaint Anything 实现图像局部替换与换装
  • 热门开源微服务框架与 Service Mesh 选型参考
  • 小米手机端 AI Agent 落地,重构智能家居底层逻辑
  • RK3588 与 FPGA 基于 XDMA 的 PCIe 通信实践
  • Python 音乐网站搜索与下载接口逆向分析
  • 基于 ClaudeCode 与 Figma-MCP 的前端 UI 设计稿 1:1 还原实践
  • TF-IDF 原理、公式推导、手算例子与 Python 实战

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online