返回笔记
LLM
RAG 技术深度解析:检索增强生成的完整流程
RAG
向量数据库
Embedding
检索增强生成
RAG 是目前最热门的大模型应用范式之一。它通过给模型"外挂知识库"的方式,让大模型能够回答之前没见过的问题。
为什么需要 RAG
大模型有两大问题无法靠训练解决:
- 知识截止日期:模型训练完后,不知道之后发生的事情
- 幻觉问题:对于不懂的问题,模型会编造答案
RAG 的思路是:先检索相关文档,再把文档和问题一起给模型,让模型"照着材料回答"。
RAG 的五个核心步骤
1. 文档加载与切分
把 PDF、网页、数据库里的内容加载进来,切成合适大小的 chunk。chunk 太大检索精度差,太小语义不完整。一般 500-1000 token 比较合适,且 chunk 之间保持一点重叠以防止切断关键信息。
2. 向量化
用 Embedding 模型(如 text-embedding-3-small)把每个 chunk 转成向量。语义相近的文本向量距离也近。
3. 向量存储
把向量存入向量数据库(如 Pinecone、Weaviate、Qdrant、Chroma、Milvus)。向量数据库支持高效的近似最近邻搜索。
4. 检索
用户提问后,把问题也转成向量,在向量库中搜索最相似的 top-K 个 chunk。这一步决定了 RAG 的召回质量。
5. 生成
把检索到的 chunk 作为上下文,和用户问题一起拼接成 prompt,发给大模型生成回答。
常见优化技巧
- Hybrid Search:向量检索 + 关键词检索(BM25),两者互补
- Re-ranking:初筛后用小模型重新精排,提升精度
- Query Rewriting:先把用户问题改写得更精确再检索
- Self-RAG:让模型自己判断检索结果是否相关,不相关就重新检索