一文了解 RAG 与知识增强
用户提问│▼[HyDE 假设文档生成] → [混合检索:语义+关键词]│▼[重排序:BGE Reranker 精选 Top-3]│▼[构造 Prompt + 大模型生成带引用答案]│▼输出 → 可信、可溯源、无幻觉🎓 RAG = 给大模型配一个“超级外脑”不是替代大模型,而是让它“如虎添翼”。
一文了解 RAG 与知识增强
🎯 为什么需要 RAG 与知识增强
大语言模型(LLM)如 Qwen、GPT-4、Claude 虽然“知识渊博”,但存在三大致命问题:
- 知识过时:训练数据截止于 2023 或 2024,无法回答最新事件。
- 幻觉严重:容易“一本正经胡说八道”,编造不存在的事实。
- 领域无知:对企业私有数据、专业文档、内部知识库一无所知。
✅ RAG(Retrieval-Augmented Generation) 就是解决方案:
让大模型“学会查资料”,边检索边回答,有据可依,减少幻觉。
一、RAG 是什么?核心思想图解
用户提问 → 检索器从知识库中查找相关文档 → 将文档+问题一起喂给大模型 → 生成有依据的回答
📌 核心公式:
RAG = 检索(Retrieve) + 增强(Augment) + 生成(Generate)
✅ 优势:
- 不用重新训练模型,成本低、见效快
- 知识可随时更新(只需更新知识库)
- 回答可溯源(附带参考文档)
- 减少幻觉,提高可信度
二、RAG 系统五大核心模块
1️⃣ 文档加载与切分(Document Loading & Chunking)
把 PDF、Word、网页、数据库等“知识源”变成模型可读的文本块。
🔹 常见格式支持:
- PDF(PyPDF、pdfplumber)
- Word / PPT(python-docx、pptx)
- HTML / Markdown
- 数据库(SQL → 文本)
- 代码仓库(GitHub)
🔹 切分策略(Chunking):
- 固定长度切分:每 512 Token 一切(简单但可能切断语义)
- 按标题/段落切分:保留语义完整性(推荐)
- 滑动窗口切分:重叠切分,避免边界信息丢失
- 语义切分:用 LLM 或 Sentence-BERT 判断语义边界(高级)
📌 工具推荐:LangChain DocumentLoaders、LlamaIndex、Unstructured
2️⃣ 向量化与索引(Embedding & Indexing)
把文本块变成向量,存入向量数据库,支持快速相似度检索。
🔹 Embedding 模型选择:
模型 | 语言 | 优势 | 推荐场景 |
---|---|---|---|
text-embedding-3-small(OpenAI) | 多语 | 速度快、API 稳定 | 商业项目 |
BGE(BAAI) | 中英 | 中文效果 SOTA | 中文项目首选 |
E5 / E5-mistral | 多语 | 开源、可微调 | 研究/私有部署 |
Jina Embeddings | 多语 | 支持 8K+ 长文本 | 长文档场景 |
✅ 中文项目强烈推荐:BGE-M3(支持多向量、稀疏检索、中英混合)
🔹 向量数据库:
数据库 | 优势 | 适用场景 |
---|---|---|
FAISS(Meta) | 快、轻量、开源 | 本地/研究项目 |
Chroma | 简单易用、Python 友好 | 快速原型 |
Weaviate | 支持混合检索、可扩展 | 企业级应用 |
Milvus / Zilliz | 高性能、分布式 | 大规模生产环境 |
Pinecone | 全托管、API 简单 | 无运维需求项目 |
3️⃣ 检索(Retrieval)—— 找到最相关的“参考资料”
🔹 传统检索:语义相似度(Dense Retrieval)
- 用 Embedding 计算余弦相似度
- 返回 Top-K 最相似文档
🔹 高级检索技术:
🌟 HyDE(Hypothetical Document Embeddings)
2023 年提出,让大模型先“幻想”一个答案,再用这个答案去检索!
📌 步骤:
- 用户问:“如何配置 Qwen 的 LoRA 微调?”
- 让 LLM 生成一个“假设答案”(即使不准也没关系)
- 用这个“假设答案”去向量库检索
- 检索结果往往比直接用问题检索更准!
✅ 优势:解决“问题简短、语义模糊”导致的检索失败。
📌 示例代码(LangChain):
from langchain.retrievers import HyDE
retriever = HyDE.from_llm(llm, base_retriever)
🌟 混合检索(Hybrid Search)
- 结合 语义检索(Embedding) + 关键词检索(BM25)
- 适合专业术语、代码、法律条文等场景
✅ Weaviate、ElasticSearch、BGE-M3 均支持混合检索。
4️⃣ 重排序(Rerank)—— 从“相关”到“最相关”
检索返回的 Top-K 文档,可能“相关但不精准”。Rerank 用更精细的模型重新打分排序。
🔹 为什么需要 Rerank?
- Embedding 检索是“粗筛”,Rerank 是“精排”
- 提高 Top-1 文档的准确率,直接影响回答质量
🔹 常用 Rerank 模型:
模型 | 优势 | 推荐场景 |
---|---|---|
BGE Reranker | 中英文 SOTA,轻量 | 中文项目首选 |
Cohere Rerank | API 稳定,支持多语言 | 商业项目 |
Cross-Encoder(Sentence-BERT) | 精度高,速度慢 | 小规模/研究 |
LLM Rerank | 用 GPT-4/Qwen 打分 | 效果最好,成本高 |
✅ 实践建议:检索返回 10~20 篇,Rerank 精选 Top-3~5 喂给大模型。
📌 工具:Cohere API、BGE-Reranker、FlagEmbedding 库
5️⃣ 生成(Generation)—— 大模型“有依据地回答”
把检索到的文档 + 用户问题,一起构造 Prompt,让大模型生成最终答案。
🔹 Prompt 设计模板:
请根据以下参考资料回答问题。如果资料中没有答案,请回答“我不知道”。
参考资料:
1. [文档1内容...]
2. [文档2内容...]
问题:{用户问题}
请用中文简洁回答:
🔹 高级技巧:
- 引用标注:让模型在回答中标注“参考文档1”
- 拒绝回答机制:若检索结果不相关,强制模型说“无相关信息”
- 多跳检索(Multi-hop):复杂问题,分多次检索(如:先找概念,再找细节)
📌 工具:LangChain、LlamaIndex 内置 Prompt 模板
三、RAG 效果评估指标
不能只看“回答是否流畅”,要看“是否准确、有依据”。
指标 | 说明 | 工具 |
---|---|---|
检索召回率@K | Top-K 中是否包含正确文档 | 人工标注测试集 |
生成准确率 | 回答是否正确、无幻觉 | LLM-as-a-Judge(GPT-4 打分) |
幻觉率 | 回答中编造内容的比例 | FactScore、人工评估 |
延迟 | 从提问到回答的时间 | 系统监控 |
相关性得分 | 检索文档与问题的相关性 | Reranker 分数、人工打分 |
✅ 推荐构建一个小型“知识库问答测试集”(50~100 个问题)用于迭代优化。
四、RAG 前沿技术与趋势(2025)
🌟 1. Self-RAG:让模型自己决定“要不要检索”
2023 年论文提出,模型在生成过程中动态决定是否检索、检索什么。
- 生成特殊 Token:
[检索]
、[不检索]
- 更灵活,避免无关检索浪费资源
- 适合开放域问答
🌟 2. Corrective RAG(CRAG):检索结果“纠错+增强”
2024 年提出,对检索结果进行可信度评估,低质量结果进行网络搜索补充。
- 用 LLM 判断检索文档“是否可靠”
- 不可靠 → 自动调用 Google Search API 补充
- 极大提升回答准确率
🌟 3. Graph RAG:用知识图谱增强检索
将知识库构建成“实体-关系”图谱,检索时走图谱路径,适合复杂推理。
- 例:问“马斯克创办了哪些公司?” → 图谱中找“马斯克 → 创办 → ?”
- 微软、DeepMind 已在探索
🌟 4. 多模态 RAG
检索内容不仅是文本,还包括图片、表格、视频帧。
- 例:问“这张发票的金额是多少?” → 检索相似发票图片 + OCR 文本
- 需要多模态 Embedding(如 Qwen-VL-Embedding)
五、实战推荐架构(2025 最佳实践)
用户提问
↓
[HyDE 生成假设文档] → [BGE-M3 混合检索 Top-20]
↓
[BGE Reranker 精排 Top-5]
↓
[构造 Prompt + Qwen-Max 生成答案]
↓
输出带引用标注的回答
✅ 工具栈推荐:
- LangChain / LlamaIndex:流程编排
- BGE-M3 + BGE-Reranker:检索+重排(中文最强)
- vLLM + AWQ:本地高效推理
- Chroma / Weaviate:向量数据库
- LlamaParse / Unstructured:文档解析
六、RAG vs 微调 vs 预训练 —— 如何选择?
方法 | 成本 | 更新知识速度 | 减少幻觉 | 适用场景 |
---|---|---|---|---|
RAG | 低 | 实时(改知识库即可) | ✅ 强 | 企业知识库、客服、最新资讯 |
微调(SFT) | 中 | 慢(需重新训练) | ⚠️ 一般 | 领域术语、固定任务(如法律、医疗) |
预训练 | 极高 | 极慢 | ❌ 弱 | 通用能力、基础模型研发 |
💡 黄金法则:
- 新知识、私有数据 → 选 RAG
- 固定领域、术语风格 → 选 微调
- 两者结合 → RAG + 微调(如用领域数据微调 Embedding 模型)
✅ 总结:RAG 技术全景图
用户提问
│
▼
[HyDE 假设文档生成] → [混合检索:语义+关键词]
│
▼
[重排序:BGE Reranker 精选 Top-3]
│
▼
[构造 Prompt + 大模型生成带引用答案]
│
▼
输出 → 可信、可溯源、无幻觉
🎓 RAG = 给大模型配一个“超级外脑”
不是替代大模型,而是让它“如虎添翼”。
更多推荐
所有评论(0)