RAG 系统核心组件怎么搭?
文档处理、检索器与生成器集成的技术细节
原题:请详细说明RAG(检索增强生成)系统的技术实现细节,包括文档处理、检索器设计、生成器集成等关键组件。
重排与优化 · 美团真题
回答与解析
一、文档处理
解析 PDF、HTML、表格和图片时保留标题层级、来源、版本、权限和原文坐标。清洗页眉页脚与重复模板后,按结构、固定长度或递归策略产生候选块,并在目标查询集上比较证据完整性与成本。所谓语义或 Agentic 分块也要经过同一评测,不能因为使用 LLM 就默认更好。
二、检索器
- 使用向量检索、BM25、结构化过滤或多路召回生成候选。
- 对不同分数做校准、RRF 融合或独立重排,避免直接相加不可比的原始分数。
- 用 Cross-Encoder 或领域 Reranker 对候选精排,并保留召回器、索引和模型版本。
- 查询改写、HyDE 和子查询分解只在离线与端到端评测证明有效时启用,因为它们也可能引入偏移。
三、生成器集成
候选去重、裁剪、排序并附来源标识后,与用户问题和回答约束一起组装上下文。长文档压缩可能丢证据,应保留原文映射。模型输出引用后,服务端校验引用是否真实支持对应 claim;资料不足、冲突或越权时拒答或继续检索。
四、评测与运行
- 检索侧:证据 Recall@K、MRR/NDCG、重复率、过滤正确性。
- 生成侧:答案正确性、Faithfulness、引用准确率、拒答质量。
- 工程侧:索引新鲜度、吞吐、P50/P95/P99 延迟、成本和失败率。
延迟目标必须依据产品 SLO、硬件和模型确定,不能把“向量检索低于 50ms、整体 P99 低于 500ms”作为所有 RAG 系统的通用标准。
结论:RAG 的技术实现是一条带版本、权限、评测和回滚能力的证据链,而不是固定的组件清单。
口语版讲法(约4分钟)
- RAG本质是给大模型配外挂知识库
- 文档处理:清洗、分块、元数据
- 检索器:多路召回加重排
- 生成器:上下文压缩与引用
- 架构演进与优化方向
如果让我设计一个 RAG 系统,我会把它拆成五个模块:文档处理、索引与检索、重排序、生成集成,以及评估监控。每个模块都有自己的输入输出,不能只把它理解成“向量库加大模型”。
文档处理是第一层,也经常是最容易被低估的一层。原始文档进来后,先做解析和清洗,比如 PDF、网页、表格、图片 OCR,各自的处理方式不一样。清洗完以后做分块,分块要结合文档结构,不能简单按 500 token 硬切。技术文档可以按标题层级切,客服 FAQ 可以一问一答作为块,合同类文档可能要保留条款编号。每个 chunk 还要带 metadata,比如来源、标题、时间、权限、版本号。企业场景里,权限和版本非常重要,否则检索结果可能正确但不该给当前用户看。
第二层是检索器。最基础的是向量检索,把 query 和 chunk 都转成 embedding,用 ANN 索引找 TopK。但实际我一般会做多路召回:向量召回负责语义相似,BM25 负责关键词和专有名词,必要时再加业务规则召回,比如按产品线、时间范围、用户权限过滤。多路召回之后可以用 RRF 或加权融合先合并候选。
第三层是 reranker。因为第一阶段召回优先保证覆盖,候选中往往会混入噪声,所以可以用 cross-encoder 或 reranker 对 query-document 对重新打分,把更能回答问题的文档排到前面。很多 RAG 项目里,rerank 是投入产出比很高的一步,因为它直接决定大模型看到的上下文质量。
第四层是生成器集成。这里不是简单把 TopK 拼进去,而是要做上下文治理:去重、截断、压缩、排序、保留来源。Prompt 里我会明确要求模型基于资料回答,资料不足就说不足,关键结论要带引用。对于低置信检索结果,可以直接拒答或转人工,而不是让模型自由发挥。
最后是评估和监控。检索侧看 Recall@K、MRR、NDCG;生成侧看答案正确率、忠实度、引用准确率;线上还要看延迟、成本、拒答率和用户反馈。没有这层闭环,RAG 很容易变成“感觉效果还行”,但不知道问题出在哪。
所以一个完整 RAG 系统的实现重点,不是把文档塞进向量库就完了,而是文档质量、召回覆盖、排序精度、生成约束和评估闭环一起工作。只有这样,系统才可迭代、可排查、可上线。
关键一句:RAG 的核心工程能力是可评估、可排查,不只是能把答案生成出来。
面试官还可能这样问
- 问法 1 · 场景切入
假设你在做一个内部知识库问答系统,用户上传了一堆 PDF 和网页,然后问‘今年的Q2财报里研发费用占比多少?’——你从文档处理到最终给出答案,中间每一步具体是怎么串起来的?
- 问法 2 · 层层追问
RAG 系统里你怎么处理文档的?……分块一般注意什么?……那检索的时候,光用向量够吗?……怎么把检索结果喂给生成模型,上下文太长怎么办?
- 问法 3 · 直球架构
请详细说一下 RAG 系统的技术实现,从文档预处理、检索器的多路召回和重排序,到生成器怎么集成检索结果,包括 Prompt 设计和上下文压缩,完整的 pipeline 怎么搭?