Session 0005

RAG 系统设计

RAG 不是“文档切块 + embedding + topK”。生产级 RAG 是数据系统、检索系统、上下文系统和质量系统的组合,必须处理解析、权限、召回、排序、引用、冲突、更新和评测。

1. 训练目标

本页要练会:把企业知识库问答拆成 ingestion、chunking、indexing、ACL filtering、hybrid retrieval、rerank、context packing、citation、no-answer 和 RAG eval。

可靠依据:Pinecone/Qdrant/Weaviate hybrid retrieval docs / LlamaIndex RAG patterns。本页把官方能力和生产工程约束转成面试题,而不是堆概念定义。

题量标准:5 个中大型深题 + 7 个知识广度题。深题用于系统设计和追问承压,广度题用于查漏补缺。

2. 五个深题

深题 01

设计一个企业知识库问答系统,要求权限隔离、引用来源、文档更新后增量生效。你怎么做?

考察点:考 RAG 是否能从 demo 讲成生产系统。

7+ 分回答骨架:接入时解析 PDF/网页/表格,保留标题、层级、source_url、version、ACL、updated_at。chunk 按结构和语义切,写 embedding、sparse tokens、metadata。查询时先按 tenant/ACL/time filter,再 dense+sparse hybrid retrieval,rerank 后 context packing。答案必须带 citation,证据不足 no-answer。文档更新触发 affected chunks 重建,保留版本支持回放。

继续追问会衍生:衍生知识点:ACL filter、hybrid retrieval、rerank、citation、incremental indexing。

知识展开

概念是什么工程落点面试表达 / 常见坑
ACL filterACL filter 是按用户、租户、角色、文档权限过滤可检索范围,防止越权证据进入候选。在检索前或检索阶段用 metadata filter、分区索引或 row-level security 执行。面试表达:权限过滤必须早于上下文构建,不能让模型事后判断能不能看。
hybrid retrievalhybrid retrieval 结合 dense 语义召回和 sparse 关键词召回,兼顾语义问题和精确实体。查询时同时生成向量和关键词信号,再融合或 rerank。常见坑是只用 embedding,遇到编号、专有名词、错误码时召回很差。
citationcitation 是答案与证据片段的可追溯绑定,不是随便列几个来源。context packing 保留 chunk_id/source_url/page/section,生成时要求关键结论绑定引用。强回答要说明 citation accuracy 要评测:引用必须支持对应句子。
深题 02

答案错了,你如何判断是检索错、上下文错,还是生成错?

考察点:考失败定位。

7+ 分回答骨架:保存 trace:query rewrite、filters、retrieved chunks、scores、rerank 排名、packed context、final answer。若正确 chunk 未召回是 retrieval miss;召回但没进 context 是 packing/rerank 问题;context 有证据但答案错是 generation/faithfulness;文档本身冲突则需要 source authority 和冲突策略。

继续追问会衍生:衍生知识点:retrieval miss、context precision、faithfulness、conflict policy。

知识展开

概念是什么工程落点面试表达 / 常见坑
retrieval missretrieval miss 是正确证据没有被召回,生成模型再强也很难答对。通过 trace 检查 query rewrite、filters、topK、scores、rerank 前候选。面试里要先定位证据是否到场,再讨论 prompt。
context precisioncontext precision 衡量塞进 prompt 的片段中有多少真正支持回答。rerank 和 packing 阶段减少噪声,控制 token budget 和来源多样性。常见坑是 topK 很大但上下文噪声多,模型反而更容易答错。
faithfulnessfaithfulness 衡量答案是否只基于给定证据,不编造证据没有的事实。评测时对答案句子逐条检查是否被引用片段支持。强回答要把 answer correctness 和 faithfulness 区分开。
深题 03

如何设计 chunking,避免切太碎或太大?

考察点:考数据结构理解。

7+ 分回答骨架:按文档结构优先:标题、段落、表格、代码块、列表。chunk 保存 parent/child、section path、page、token length。长文档可 parent-child retrieval:小 chunk 召回,大 parent 给上下文。用 eval 比较 Recall@k、context precision 和 citation accuracy,而不是凭感觉调 chunk size。

继续追问会衍生:衍生知识点:semantic chunking、parent-child retrieval、section path、chunk eval。

知识展开

概念是什么工程落点面试表达 / 常见坑
semantic chunkingsemantic chunking 按语义和文档结构切块,而不是固定字符数硬切。利用标题、段落、表格、代码块、列表和页码生成 chunk,并保存 section path。面试表达:chunk size 不是拍脑袋,用 recall 和 citation eval 调。
parent-child retrievalparent-child retrieval 用小块召回、大块供上下文,平衡精准召回和完整语境。索引 child chunks,命中后取 parent section 或相邻 chunks 进入 context。常见坑是小 chunk 断上下文,大 chunk 召回噪声高。
chunk evalchunk eval 比较不同切块策略对 Recall@k、context precision、citation accuracy 的影响。固定 golden questions,重建索引后对比指标和失败案例。强回答要说 chunking 是可评估的数据工程选择,不是一次性配置。
深题 04

企业知识库有权限,为什么“先向量召回再过滤”可能错?

考察点:考安全与召回。

7+ 分回答骨架:如果先在全库召回再过滤,可能发生越权候选进入中间 trace、排序受越权文档影响,且过滤后 topK 为空导致漏召回。应在检索前或检索阶段应用 tenant/ACL metadata filter;对无法过滤的索引按权限分区或重建。

继续追问会衍生:衍生知识点:pre-filtering、row-level ACL、tenant isolation、secure retrieval。

知识展开

概念是什么工程落点面试表达 / 常见坑
pre-filteringpre-filtering 是先约束可检索集合,再做向量或混合召回。tenant、ACL、时间、文档类型、业务范围作为检索条件进入 vector DB 或搜索引擎。面试中要指出先召回后过滤可能越权、漏召回和排序偏移。
row-level ACLrow-level ACL 是每个 chunk 或记录都有独立权限,而不是只给整个索引分权限。metadata 存 allowed_users/groups/tenant/classification,查询时按 auth context 过滤。常见坑是文档级权限变化后 chunk 权限没同步。
secure retrievalsecure retrieval 是把检索链路本身当安全边界设计,而不是把安全交给生成模型。包括权限过滤、trace 脱敏、缓存隔离、结果最小化和审计。强回答要覆盖检索、上下文、输出三层,不只说 prompt。
深题 05

如何处理两个权威文档答案冲突?

考察点:考 source authority。

7+ 分回答骨架:metadata 中维护 source authority、version、effective date、owner。生成前检测冲突:同一问题多个候选给出不同事实时,不强行合成;优先最新/更高权威来源,或输出冲突说明和引用,必要时触发人工确认。

继续追问会衍生:衍生知识点:source authority、freshness、conflict detection、abstention。

知识展开

概念是什么工程落点面试表达 / 常见坑
source authoritysource authority 表示不同来源的权威级别,例如政策原文高于论坛讨论。metadata 中记录 owner、document_type、effective_date、approved_status。面试表达:冲突时不能平均综合,要按权威和时效决策。
freshnessfreshness 处理文档版本和时间有效性,新文档不一定权威,但过期文档不能误用。保存 version、updated_at、effective_from/to,查询时按时间过滤或排序。常见坑是索引不更新,模型引用旧政策给出错误答案。
abstentionabstention 是证据不足或冲突时拒答、澄清或提示冲突,而不是强行编答案。生成策略要求 low evidence、conflicting evidence、no authorized evidence 时 no-answer。强回答要把 abstention 作为可靠性能力,而不是失败。

3. 七个广度题

编号问题准确回答
广度 01Dense retrieval 和 sparse retrieval 各擅长什么?dense 擅长语义相似,sparse 擅长关键词、编号、专有名词和精确匹配。
广度 02Rerank 解决什么问题?对召回候选按与问题的真实相关性重排,减少相似但不回答问题的片段。
广度 03metadata filter 会提升语义准确率吗?不会直接提升语义模型;它约束候选集合,减少越权和无关文档。
广度 04No-answer 为什么重要?知识库没有证据时拒答比编造更可靠,也是 RAG 质量指标。
广度 05Citation accuracy 怎么测?检查答案句子的引用是否真的支持该句,而不是只引用了同一文档。
广度 06Query rewrite 什么时候有用?用户问题口语化、多跳或缺少实体时,rewrite 可生成检索友好的查询。
广度 07RAG 延迟高优先看哪里?拆 ingestion 不影响在线;在线看 query rewrite、retrieval、rerank、model context length 和网络工具。

4. 知识索引

ACL filter

ACL filter 是按用户、租户、角色、文档权限过滤可检索范围,防止越权证据进入候选。

hybrid retrieval

hybrid retrieval 结合 dense 语义召回和 sparse 关键词召回,兼顾语义问题和精确实体。

citation

citation 是答案与证据片段的可追溯绑定,不是随便列几个来源。

retrieval miss

retrieval miss 是正确证据没有被召回,生成模型再强也很难答对。

context precision

context precision 衡量塞进 prompt 的片段中有多少真正支持回答。

faithfulness

faithfulness 衡量答案是否只基于给定证据,不编造证据没有的事实。

semantic chunking

semantic chunking 按语义和文档结构切块,而不是固定字符数硬切。

parent-child retrieval

parent-child retrieval 用小块召回、大块供上下文,平衡精准召回和完整语境。

chunk eval

chunk eval 比较不同切块策略对 Recall@k、context precision、citation accuracy 的影响。

pre-filtering

pre-filtering 是先约束可检索集合,再做向量或混合召回。

row-level ACL

row-level ACL 是每个 chunk 或记录都有独立权限,而不是只给整个索引分权限。

secure retrieval

secure retrieval 是把检索链路本身当安全边界设计,而不是把安全交给生成模型。

source authority

source authority 表示不同来源的权威级别,例如政策原文高于论坛讨论。

freshness

freshness 处理文档版本和时间有效性,新文档不一定权威,但过期文档不能误用。

abstention

abstention 是证据不足或冲突时拒答、澄清或提示冲突,而不是强行编答案。

5. 巩固训练

练习要求自检
8 分钟口述任选一个深题,先给架构,再讲风险、指标、恢复和上线。是否覆盖状态、权限、失败、eval、成本或延迟。
追问压缩把每个深题的回答压缩成 5 句话。每句话必须包含一个工程事实,不能是空泛判断。
反例修正先故意给一个弱回答,再补齐缺失模块。能否说出弱在哪里,以及如何验证强答案。

6. 弱回答红线