RAG 实践:让大模型拥有外部知识
检索增强生成(Retrieval-Augmented Generation, RAG)是解决大模型知识局限性的重要技术方案。
为什么需要 RAG?
大语言模型存在两个核心局限:
- 知识截止:训练数据有时间边界,无法获取最新信息
- 幻觉问题:模型可能生成看似合理但实际错误的内容
RAG 通过在生成前检索相关文档,将外部知识注入上下文,有效缓解上述问题。
RAG 基本流程
用户查询 → 向量化 → 检索 Top-K 文档 → 拼接 Prompt → LLM 生成回答
1. 文档处理与索引
将知识库文档切分为合适大小的 chunk(通常 256-512 tokens),使用 Embedding 模型向量化后存入向量数据库。
2. 检索策略
- 密集检索:基于向量相似度(如 cosine similarity)
- 稀疏检索:基于 BM25 等传统 IR 方法
- 混合检索:结合两者优势,通常效果更好
3. 生成增强
将检索到的文档片段与用户问题一起构造 Prompt,引导模型基于给定上下文回答。
工程优化要点
| 优化方向 | 具体措施 |
|---|---|
| 分块策略 | 语义分块、重叠窗口、层次化索引 |
| 检索质量 | 重排序(Reranker)、查询改写 |
| 上下文管理 | 动态截断、相关性过滤 |
常用工具栈
- Embedding:OpenAI text-embedding-3、BGE、M3E
- 向量数据库:Milvus、Qdrant、Chroma、pgvector
- 框架:LangChain、LlamaIndex、Haystack
RAG 是当前企业级 LLM 应用最主流的架构模式,值得深入实践。