TL;DR
RAG(Retrieval-Augmented Generation,检索增强生成)是 2020 年 Lewis 等人提出的架构:先从一个外部知识库检索相关片段,再交给 LLM 生成答案,用于解决幻觉、知识过时和私有数据不可见的问题。标准流程:文档切块 → 向量化 → 存入向量库 → 查询时召回 Top-K → (可选重排)→ 拼进上下文 → 生成。
标准流程
| 步骤 | 说明 | 常见工具 |
|---|---|---|
| 1. 切块 | 按语义/长度切成 chunk | LangChain、LlamaIndex |
| 2. 向量化 | 用 Embedding 模型转成向量 | OpenAI、BGE、text-embedding 系 |
| 3. 存储 | 向量数据库 | pgvector、Milvus、Qdrant、FAISS |
| 4. 召回 | 相似度检索 Top-K | 向量检索 + 关键词混合 |
| 5. 重排 | 精排提高准确率(可选) | Cohere Rerank、BGE-Reranker |
| 6. 生成 | 把片段拼进 prompt 交给 LLM | 任意 LLM |
与纯 LLM、微调对比
| 方案 | 更新成本 | 幻觉风险 | 私有数据 | 适用场景 |
|---|---|---|---|---|
| 纯 LLM | 无 | 高(知识截止) | 不可用 | 通用问答 |
| RAG | 低(换文档即可) | 中(依赖检索质量) | 可用 | 客服、企业知识库、实时数据 |
| 微调 | 高(训练) | 中 | 可学但易过拟合 | 风格/格式/领域术语 |
常见坑
- 切块太大:召回片段含大量无关内容,挤占上下文;切块太小:语义断裂;
- 只用向量检索:专有名词/编号容易召回失败,建议关键词+向量混合(Hybrid Search);
- 不做重排:Top-K 里前几名可能是噪声;
- 幻觉不能根除:检索到错误或过时文档时,RAG 会"自信地"引用错误内容,必须有引用溯源和人工兜底。
常见问题
RAG 和微调怎么选?
要更新快、引用具体文档、处理私有数据:RAG;要改变模型语气/输出格式/领域术语:微调;生产上常两者结合。
chunk size 多大合适?
没有唯一答案,常见 300–800 token;以"一个 chunk 能独立回答一个问题"为目标,结合检索实验调整。
RAG 能完全消除幻觉吗?
不能。它能大幅降低幻觉,但检索本身可能召回错误文档;必须给答案带来源引用,并做评估(命中率、忠实度)。
来源
- Lewis et al., Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks, arXiv:2005.11401(2020),2026-08-04 访问
- IBM / AWS 官方 RAG 文档,2026-08-04 访问