一个完整的 RAG 流水线包含哪些步骤?
先用自己的话答,再看参考说法
60 秒是练习上限,不是必须凑满。原理题讲清因果,设计题讲清约束,项目题只讲真实证据。
别照着背。参考说法只用于对照;直接回答问题,简单题说清楚就收尾。项目题只用自己的经历和数字。
参考内容当前已显示;开始口述后会暂时隐藏。
面试时怎么答
别把 RAG 说成“向量库加大模型”。先分成离线建库与在线问答:前者负责解析、切块、Embedding 和索引,后者负责查询处理、召回、重排、上下文组装、生成与引用。
回答末尾给出排障分层会很加分:先判断证据有没有被召回,再看排序和上下文是否正确,最后查模型是否忠实使用证据。追问常从 Chunk、权限或评测三处展开。
可以这样答:
完整 RAG 有两条链路。离线侧把文档解析、清洗、切块、向量化,并建立带版本和权限的索引;在线侧处理用户查询,进行多路召回与重排,在 Token 预算内组装证据,再让模型生成答案和引用。它让知识可更新、可追溯,但检索正确不代表生成一定忠实,所以要分层评估 Recall、排序质量、Faithfulness、引用准确率和延迟。
核心回答
RAG 通常分为离线建库和在线问答两条链路。离线阶段完成数据采集、解析、切块、向量化并建立索引;在线阶段处理用户问题,在当前 tenant、用户和 ACL 约束下召回候选片段,再去重、融合或重排后组装上下文,让模型基于问题和证据生成回答。RAG 给模型提供了可更新、可追溯的外部信息,但不能保证模型一定忠实使用这些信息。
展开说明
一条常见链路可以拆成:
- 数据准备:解析网页、PDF、数据库等来源,保留标题、页码、版本和权限元数据。
- 索引构建:按语义边界切块,用 Embedding 模型编码,并写入向量或关键词索引。
- 查询处理:规范化问题,必要时补全指代、改写或拆分查询。
- 检索与排序:获取较大的候选集,再过滤、融合和重排,选出最终证据。
- 上下文组装:控制 token 预算,保留来源标识,并减少重复或冲突片段。
- 生成与校验:要求模型依据证据回答;对答案、引用和拒答条件做检查。
原始 RAG 将模型参数视为参数化记忆,将外部索引视为非参数化记忆。生产系统中的检索器、索引和生成器可以独立升级,因此排错时也应分层评估。
工程实践
最小可用版本先做到“可回放”:记录数据版本、原始查询、候选文档、最终上下文、模型版本和答案。回答错误时先判断证据是否被召回,再判断生成器是否正确利用证据,避免把所有问题都归因于 Prompt。
常见追问
- RAG 为什么能更新知识而不重新训练模型? 知识保存在外部索引中,更新文档与索引即可让下一次推理读取新证据,模型参数不必随每次知识变化而更新。
- 离线建库和在线查询分别有哪些性能瓶颈? 离线常卡在解析、Embedding 吞吐和索引构建;在线常卡在查询改写、向量检索、重排和 LLM Prefill,并要关注尾延迟。
- 已经召回正确文档,为什么仍可能回答错误? 关键片段可能在切块或打包中丢失,也可能被噪声淹没;生成器还可能忽略、误读或与参数记忆冲突。
一句话复习
RAG 是“建库、检索、组装证据、生成与校验”的完整链路,不只是向量数据库加一次模型调用。
参考资料
评论与补充
评论会直接显示在这道题下面。可以写自己的答法、继续追问或指出错误,不需要 GitHub 账号,也不会跳转到 Issue;内容会公开,请勿填写个人隐私、公司机密或受保密约束的材料。
正在连接站内评论服务…
正在加载评论…
还没有评论,你可以先写下自己的理解或追问。