【从零到一学 RAG】检索增强生成全流程精讲:step/agentic/hybrid 三种流程+向量库+检索评估全覆盖!1. 引言:为什么需要 RAG
大语言模型(LLM)虽然能力强大,但存在知识截止、幻觉、无法访问私有数据等固有局限。检索增强生成(Retrieval-Augmented Generation,RAG)通过引入外部知识库,在生成前先检索相关内容,再让模型基于检索结果作答,从而显著提升回答的准确性、时效性和可解释性。
本文将从零到一,系统讲解 RAG 的完整流程,覆盖 step、agentic、hybrid 三种主流流程范式,以及向量库的构建与检索评估方法,帮助读者建立从原理到实战的完整认知。
2. RAG 基础概念
在深入流程之前,先厘清几个核心概念:
- 检索(Retrieval):从知识库中找出与用户问题最相关的文本片段。
- 增强(Augmentation):将检索到的上下文与用户问题拼接,构造更完整的提示词。
- 生成(Generation):LLM 基于增强后的提示词生成最终回答。
RAG 的价值在于:它把模型的「记忆」从参数内扩展到外部知识库,既降低了幻觉风险,又让知识可以随时更新,无需重新训练模型。
3. 三种 RAG 流程范式
根据检索与生成的交互方式,RAG 流程可以划分为 step、agentic、hybrid 三种范式,各有适用场景。
3.1 Step RAG(单轮检索)
Step RAG 是最经典的流程:用户提问后,系统执行一次检索,将结果拼入提示词,再由 LLM 生成回答。整个过程是线性的、确定性的,适合问题明确、知识库结构清晰的场景。
其优点是实现简单、延迟低、成本可控;缺点是面对复杂多跳问题时,单次检索往往无法覆盖全部所需信息。
3.2 Agentic RAG(智能体检索)
Agentic RAG 引入智能体(Agent)机制,让模型自主决定「何时检索、检索什么、是否继续检索」。模型可以多次调用检索工具,根据中间结果调整检索策略,甚至改写查询词。
这种范式适合复杂推理、多跳问答、需要动态规划的场景,灵活性更高,但代价是延迟和 token 消耗增加,且对模型的工具调用能力要求较高。
3.3 Hybrid RAG(混合检索)
Hybrid RAG 将多种检索方式融合,常见组合是「关键词检索(BM25)+ 向量检索(Embedding)」,再通过 RRF(Reciprocal Rank Fusion)等算法融合排序结果。
关键词检索擅长精确匹配专有名词、编号,向量检索擅长语义相似匹配,二者互补能显著提升召回质量。Hybrid 范式在工业界应用最广,是兼顾效果与稳定性的主流选择。
4. 向量库的构建
向量库是 RAG 系统的核心基础设施,负责存储文本的向量表示并支持相似度检索。构建一个可用的向量库通常包含以下步骤:
4.1 文档切分
原始文档需要先切分为合适的块(Chunk)。切分粒度直接影响检索效果:块太大则噪声多、精度低;块太小则上下文不完整、召回率低。常见策略包括按固定长度、按段落、按语义边界切分,并设置合理的重叠(Overlap)以保留上下文连续性。
4.2 向量化
将每个文本块通过 Embedding 模型转换为向量。常用的 Embedding 模型包括 OpenAI 的 text-embedding-3、BGE、M3E 等。选择模型时需考虑语言支持、维度、推理成本等因素。
4.3 索引与存储
向量需要建立索引以支持高效检索。主流向量数据库包括 Milvus、Qdrant、Weaviate、Chroma 等,也支持在 PostgreSQL 中通过 pgvector 扩展实现。索引算法常用 HNSW、IVF 等近似最近邻(ANN)方案,在召回速度与精度之间取得平衡。
5. 检索评估方法
检索质量直接决定 RAG 的上限,因此必须建立科学的评估体系。评估通常分为「检索评估」和「生成评估」两个层面。
5.1 检索评估指标
| 指标 | 含义 | 适用场景 |
|---|---|---|
| Recall@K | 前 K 个结果中命中的相关文档比例 | 衡量召回能力 |
| Precision@K | 前 K 个结果中相关文档占比 | 衡量结果纯净度 |
| MRR | 第一个相关结果的倒数排名 | 单答案场景 |
| NDCG@K | 考虑排序位置的归一化折损累计增益 | 多相关文档排序 |
5.2 生成评估指标
生成质量通常结合自动指标与人工评估:
- 忠实度(Faithfulness):回答是否严格基于检索到的上下文,不引入幻觉。
- 答案相关性(Answer Relevance):回答是否切题、完整。
- 上下文相关性(Context Relevance):检索到的上下文是否与问题相关。
业界常用 RAGAS、TruLens 等框架自动化评估这些维度,也可结合人工标注构建评测集。
6. 完整流程实战示例
下面以一个基于 Python 的简化示例,串联「文档切分 → 向量化 → 检索 → 生成」的完整流程。
from langchain_community.vectorstores import Chroma from langchain_community.embeddings import OpenAIEmbeddings from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.chains import RetrievalQA from langchain_openai import ChatOpenAI 1. 文档切分 text = "你的知识库文档内容……" splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) chunks = splitter.split_text(text) 2. 向量化并入库 embeddings = OpenAIEmbeddings() vectorstore = Chroma.from_texts(chunks, embeddings) 3. 构建检索问答链 qa = RetrievalQA.from_chain_type( llm=ChatOpenAI(model="gpt-4o-mini"), retriever=vectorstore.as_retriever(search_kwargs={"k": 3}) ) 4. 生成回答 answer = qa.invoke("你的问题") print(answer)实际生产系统中,还需考虑检索重排(Rerank)、多路召回融合、缓存、监控告警等工程化能力。
7. 常见问题与优化方向
- 检索不到相关内容:检查切分粒度、Embedding 模型选择、查询改写策略。
- 回答幻觉严重:增加检索结果约束,引入忠实度校验,必要时降低模型温度。
- 延迟过高:优化索引结构、减少检索轮次、引入缓存。
- 知识更新不及时:建立增量入库与文档版本管理机制。
8. 总结
RAG 是连接大模型与外部知识的关键桥梁。本文从基础概念出发,梳理了 step、agentic、hybrid 三种流程范式的特点与适用场景,讲解了向量库的构建要点,并给出了检索与生成的评估方法。掌握这些内容后,读者可以根据业务需求选择合适的流程范式,搭建并持续优化自己的 RAG 系统。