RAG 系统:完整指南
“RAG 弥合了 LLM 的静态知识与动态、特定领域信息之间的鸿沟。”
检索增强生成 (Retrieval-Augmented Generation, RAG) 通过从外部知识库检索相关的上下文来增强 LLM 的能力,使 AI 能够访问实时、准确的企业私有数据。
为什么需要 RAG?
| LLM 局限性 | RAG 解决方案 |
|---|---|
| 知识截止日期 (Knowledge cutoff) | 提供最新信息 |
| 幻觉 (Hallucinations) | 使响应基于事实 |
| 无法访问私有数据 | 访问内部文档 |
| 昂贵的微调 | 无需模型训练 |
RAG 架构概览
核心概念概览
1. 数据处理流水线
- 文档加载:多格式支持 (PDF, HTML, Markdown, DOCX)
- 智能分块:基于语义的结构化拆分
- 元数据提取:自动及 LLM 增强的元数据
- 批量向量化:优化 API 调用成本
2. 向量索引
- Embedding 模型:OpenAI, BGE, Cohere 模型选择
- 索引算法:HNSW 图索引、IVF、PQ 压缩
- 存储优化:缓存策略、批量操作
- 性能调优:搜索速度与召回率的权衡
3. 检索策略
- 向量搜索:语义相似度匹配
- 混合检索:结合关键词和向量搜索
- 查询转换:多查询 (Multi-Query)、分解 (Decomposition)、HyDE
- 智能路由:根据查询类型动态选择策略
- 重排序 (Re-ranking):Cross-Encoder 精度提升
4. 生成增强
- 提示词工程:上下文注入策略
- 参数调优:Temperature, Top-P, Top-K
- 生成模式:Refine, Tree Summarize, 多跳 (Multi-hop)
- 引用生成:答案溯源与可信度
5. 评估框架
- RAG 三元组:忠实度 (Faithfulness)、回答相关性、上下文精度
- 检索指标:召回率 (Recall)、精确率 (Precision)、MRR、NDCG
- 生成指标:BLEU, ROUGE, BERTScore
- 评估方法:黄金数据集 (Golden Dataset)、LLM-as-a-Judge
使用 Spring AI 快速开始
@Service
public class RAGService {
private final ChatClient chatClient;
private final VectorStore vectorStore;
public String query(String userQuestion) {
return chatClient.prompt()
.user(userQuestion)
.advisors(new QuestionAnswerAdvisor(vectorStore))
.call()
.content();
}
}