【LLM】RAG技术简介
背景
大语言模型在训练阶段通常基于大规模语料(如 Common Crawl、Wikipedia、Books、Code等)进行离线学习,因此它们的知识存在以下问题:
- 静态性:一旦模型训练完毕,知识无法动态更新。
- 封闭性:模型只能生成其“知道”的内容,对未见信息无法准确回答。
- 幻觉性(Hallucination):即使模型生成看似合理的内容,也可能完全不符合真实事实。
为此,RAG(Retrieval-Augmented Generation,检索增强生成)框架被提出,用于将外部知识库引入到生成模型推理流程中,通过“检索 → 生成”的两阶段架构,让模型“读过资料再作答”。
RAG 的优势
- ✅ 知识实时更新:只需更新知识库,无需重新训练大模型。
- ✅ 降低幻觉风险:模型有“证据”可依,减少无中生有。
- ✅ 适用于私有数据:支持接入企业文档、数据库、网页等作为知识来源。
- ✅ 可控性强:检索模块可以人为控制,比如只让模型访问合规内容。
RAG 的工作流程
一个典型的 RAG 系统包含两个核心模块:
- 检索器(Retriever):从外部知识库(Knowledge Base)中找出与问题最相关的文档片段。
- 生成器(Generator):利用语言模型(如ChatGPT、LLaMA、Qwen等)读取检索到的内容并生成最终回答。通常会将“问题 + 检索结果”拼接作为Prompt输入模型。
RAG的具体实现方案
| 模块 | 实现方案 |
|---|---|
| 文档预处理 | 文档切分(按段落/窗口滑动),清洗,结构化 |
| 文档向量化 | sentence-transformers,text2vec,OpenAI Embedding API,BGE 等 |
| 向量索引 | FAISS, Milvus, Weaviate |
| 检索接口 | 自定义相似度搜索、Hybrid-Retrieval、LangChain Retriever API |
| Prompt构造 | 自定义模板,支持Query + Top-k文档拼接,或 chunk reranking |
| 生成模型 | transformers 中的 LLM,如 Qwen, ChatGLM, Mistral, llama.cpp 等 |
| 框架集成 | LangChain、LlamaIndex、Haystack、RAGatouille、PrivateGPT 等 |
RAG 的典型应用场景
- 💼 企业知识库问答:员工通过问答界面快速获取制度/政策信息。
- 🧠 智能客服:结合产品手册/用户问答,提供准确答复。
- 📚 教育和训练:学生提问,模型结合教材资料答题。
- 🔍 法律/医疗/金融领域问答:高要求领域结合专业数据库更可靠。
拓展资料
- 【RAG 工作机制详解——一个高质量知识库背后的技术全流程-哔哩哔哩】 https://b23.tv/gEl3kzB
- 【使用Python构建RAG系统 —— 用代码还原 RAG系统的每个细节-哔哩哔哩】 https://b23.tv/Mq1yWvT
评论