📚 首页 / architecture-exercises / scenarios-retrieval-context.md

架构决策训练 — 检索/上下文类(EX01–EX08)

主题:知识接入选型(RAG / long context / tool query / fine-tuning)、检索质量治理(query 侧、位置侧)、权限。八要素中的 Scenario / Constraints / Options 为题目;答案五要素在文末「答案与解析」。先做题,再翻答案。

EX01 — 法务合同库问答(★☆☆)

核心张力:RAG or long context?(依据:模块 07 §8)

Scenario 你为法务部门构建合同问答助手。知识体 = 标准合同模板 + 条款解释文档,共约 150,000 token(约 400 页)。每年随法务政策审订更新一次。查询以「这条条款什么意思/怎么写」的事实型问答为主,模式可预测。公司已有 1M token 上下文窗口的模型,法务对首次响应延迟敏感。

Constraints

Options A. 全量知识库放进 system prompt + prompt caching B. Hybrid RAG(embeddings + BM25 + RRF + reranking) C. Agentic search(搜索工具交给模型按需检索) D. 全量拼接、不开缓存


EX02 — 电信运营商 8M token 知识库(★☆☆)

核心张力:RAG or long context?

Scenario 运营商客服助手的知识库约 800 万 token:设备手册、故障工单历史、资费说明、网络覆盖文档,混合 PDF/HTML/工单文本,持续每周更新。查询大多是「用户报故障码 + 设备型号」的排查类问题。服务 5 个租户(不同省公司),文档权限按租户隔离。

Constraints

Options A. 1M 窗口模型 + 每次按租户拼接「最常用」文档子集 B. Hybrid RAG + metadata pre-filter(tenant/文档类型/时间)+ reranking C. 只用向量检索(无 BM25 路)的 RAG D. Agentic search 让模型自己翻目录找文档


EX03 — 客服 RAG 的「加料」提案(★★☆)

核心张力:more context or better retrieval?

Scenario 客服 RAG 上线三个月,抽查发现约 20% 的回答「没用上本该用的文档」。团队内两派意见:一派提议把 Top-K 从 10 提到 40,「多塞点上下文总能盖住」;另一派提议改检索本身(目前是纯向量检索,无 rerank,query 原句直查)。检索层评估显示:金标块 recall@10 = 0.61,很多失败查询是口语化短句(「wifi 灯红的咋整」)或含故障码精确词。

Constraints

Options A. Top-K 10 → 40,其余不动 B. Top-K 不动;引入 hybrid retrieval(+BM25)与 reranking(150→20),并用小模型做查询改写 C. 直接换更大的嵌入模型重索引 D. 换最大的模型(「模型强了就能在 40 块里找对」)


EX04 — 销售分析助手(★★☆)

核心张力:RAG or tool query / database?(依据:模块 07 §8.4、模块 06)

Scenario 销售VP 要一个对话式助手,典型问题:「上季度华东区销售额 Top 5 的产品?」「对比去年同期的毛利率变化」。数据在公司数仓(结构化表,每日 ETL 更新),同时还有 2000 页非结构化的销售策略文档。

Constraints

Options A. 全部走 RAG:数仓导出文本快照 + 策略文档一起向量化 B. 结构化问题走 tool query(text-to-SQL 工具,应用侧只读视图 + 行数限额);策略文档走 RAG——混合路由 C. 每日把数仓全量报表塞进长上下文 D. 微调模型学会「背下」常用报表数字


EX05 — 年度更新的编码手册(★★☆)

核心张力:fine-tuning or RAG?

Scenario 医疗编码团队的合规助手需要掌握国际疾病编码手册(约 10 万条编码条目 + 使用规则)。手册每年官方修订一次,修订幅度 5–10%。团队有微调预算,有人提议「把手册微调进模型,回答更快更准」。

Constraints

Options A. 每年用新版手册微调一次模型 B. RAG:手册结构化分块(按编码层级)+ hybrid 检索 + citations C. 手册全量塞长上下文 + prompt caching D. A+B 双管齐下


EX06 — 金标块总被忽略(★★☆)

核心张力:reranking + position(Lost in the Middle)(依据:模块 07 §15)

Scenario RAG 检索质量已达标(金标块 90% 进 Top-20),但端到端评估发现:当金标块位于拼装后上下文的中部(第 8–16 位)时,回答引用率明显低于它排在前 3 位时。目前块的摆放顺序 = 检索融合分数从高到低,20 块一次性罗列。

Constraints

Options A. 维持现状,接受中部损失 B. 重排摆放:把 reranker 分数最高的块放最前(其余放后部),配合 <document index> 编号 + 「先引用再作答」提示结构 C. 把 20 块对半拆成两次请求分别处理再拼接答案 D. 把 K 降到 5,只留前 5 块


EX07 — 竞品情报分析(★★☆)

核心张力:pre-built RAG or agentic search?

Scenario 战略团队要做竞品情报:问题形态开放(「X 公司最近在开发者生态上有什么动作?」),信源异构且动态(官网、新闻稿、应用商店评论、内部销售反馈),无法预判下一步要查什么,常需多轮追问式检索。此前预建索引的 RAG 方案总漏「上周刚发生的事」。

Constraints

Options A. 继续预建索引 RAG,把索引频率提到每天 B. 混合策略:固定基础档案预先进上下文(+缓存);动态信源交给搜索工具按需检索(just-in-time) C. 全 agentic:所有资料(含固定档案)都让 agent 现查 D. 放弃检索,微调一个「懂行业」的模型


EX08 — 多租户知识库(★★★)

核心张力:prompt-level or retrieval-level permissions?(依据:模块 07 §5.1、模块 11)

Scenario SaaS 知识库服务 200 家企业客户,文档权限矩阵复杂:租户隔离是底线,租户内还有部门级 ACL(HR 文档只有 HR 角色可见)。Agent 回答用户问题时绝不能引用无权文档。安全审计在即。

Constraints

Options A. system prompt 写明「只引用用户有权文档」,权限表作为上下文附加 B. 每个(租户×部门)建独立小索引,按用户路由到对应索引 C. 统一索引 + metadata pre-filter:块带 tenant/ACL 元数据,检索前由应用按会话身份过滤(应用层强制) D. 检索后再过滤(post-filter):先 Top-100,再按权限剔除



答案与解析

做完再看。评估自己:Best choice 答对只算一半,「What would change the answer」能独立复述才算通过。

EX01 — Best choice: A

Why

Why other choices are weaker

Tradeoffs

What would change the answer

EX02 — Best choice: B

Why

Why other choices are weaker

Tradeoffs

What would change the answer

EX03 — Best choice: B

Why

Why other choices are weaker

Tradeoffs

What would change the answer

EX04 — Best choice: B

Why

Why other choices are weaker

Tradeoffs

What would change the answer

EX05 — Best choice: B

Why

Why other choices are weaker

Tradeoffs

What would change the answer

EX06 — Best choice: B

Why

Why other choices are weaker

Tradeoffs

What would change the answer

EX07 — Best choice: B

Why

Why other choices are weaker

Tradeoffs

What would change the answer

EX08 — Best choice: C

Why

Why other choices are weaker

Tradeoffs

What would change the answer

📚 目录