RAG 检索增强生成
一句话定义:生成前先从外部知识库检索相关片段注入上下文,让模型基于"事实"作答,降幻觉、引最新/私有知识。
1. 为什么需要 RAG
- LLM 有幻觉、知识有截止日期、不知私有信息。
- RAG 把"记忆"外置到可更新检索库,用检索代替部分微调。
2. 工作流程
flowchart LR
A[用户问题] --> B[查询改写]
B --> C[检索: 向量+关键词]
C --> D[重排序 Rerank]
D --> E[组装上下文]
E --> F[LLM 生成带引用回答]
离线建库
- 文档加载(PDF/HTML/代码)。
- 切分(Chunking):按语义切,保留元数据。
- 嵌入(Embedding):向量化每个 chunk。
- 入库:向量数据库(Pinecone/Milvus/Qdrant/pgvector)。
在线查询
- 查询改写/扩展。
- 检索(向量 + BM25 混合)。
- 重排序(cross-encoder 精排)。
- 组装上下文送 LLM。
- 生成带引用回答。
3. 关键设计
- 切分:太大淹没重点,太小丢上下文;保留重叠。
- 混合检索:向量 + 关键词通常优于单一。
- 重排序:top-k 召回后精排,显著提升相关性。
- 引用校验:核对引用真实存在,防伪造。
4. 进阶
- Multi-hop RAG:多跳检索综合多片段。
- GraphRAG:用知识图谱做关系检索。
- Self-RAG:模型自决定是否检索。
5. 学习要点
- 检索质量是 RAG 成败关键。
- 切分 + 混合检索 + 重排序是三大杠杆。
- RAG 与微调互补:RAG 供动态知识,微调定行为。
6. 参考资料
- Lewis et al., "Retrieval-Augmented Generation"(2020)
- "Lost in the Middle"
评论
评论加载中…