RAG
# RAG 检索增强生成
一句话:RAG = 检索技术 + LLM 提示,让模型结合外部知识库回答。
# 为什么需要 RAG
- LLM 训练数据有截止日期,答不了最新信息
- 可能产生幻觉
- 企业私有数据不在训练集中
# RAG vs 微调
| 维度 | RAG | 微调 |
|---|---|---|
| 知识更新 | 更新数据源并完成索引刷新后可检索;时效取决于流程 | 通常需要重新训练或更新适配器 |
| 成本 | 检索、索引、重排和模型推理均有成本 | 训练与推理均有成本,取决于模型规模和训练方式 |
| 适用 | 查询外部资料、知识库问答 | 调整任务表现、回答风格或输出格式 |
| 来源追溯 | 可返回检索来源,但仍需验证回答与来源一致 | 单靠模型权重通常无法定位具体来源 |
两者可以组合使用。RAG 不要求一定使用向量库,也可以采用关键词或混合检索;加入检索和引用不能保证消除幻觉。
# 完整流程
# 1. 索引阶段(离线)
以下是向量检索的一种实现。分块、向量化和索引策略需要结合数据与查询场景选择。
文档 → 分块 → Embedding 向量化 → 存入向量数据库
1
# 2. 检索 + 生成阶段(在线)
用户提问 → 向量化 → 向量库搜索召回相关片段
→ 片段 + 问题组装成 Prompt → LLM 生成回答
1
2
2
┌─────────────────────────────────────────────┐
│ 文档 → 分块 → Embedding → 向量库 │ (离线)
├─────────────────────────────────────────────┤
│ 问题 → Embedding → 搜索 → 相关片段 │
│ → 注入 Prompt → LLM → 回答 │ (在线)
└─────────────────────────────────────────────┘
1
2
3
4
5
6
2
3
4
5
6
# 参考
最小验证清单
| 检查项 | 需要验证的问题 |
|---|---|
| 数据更新 | 文档修改或删除后,索引是否同步? |
| 检索质量 | 是否召回回答问题所需的片段,而非仅仅措辞相似? |
| 回答依据 | 每个关键结论是否得到检索片段支持?缺少依据时是否说明? |
| 访问权限 | 检索结果是否遵守当前用户的数据访问权限? |
上次更新: 2026/10/18, 22:14:48