Appearance
14.2.1 做 RAG 时,为什么应该优先保证“可用、可控、可评测”,再追求“高级”?
先给结论:高级能力只有建立在“可用、可控、可评测”的基础上,才真正有价值。否则它们大概率只会放大系统的不确定性。
很多团队做 RAG 时,最容易兴奋的部分往往是那些“高级能力”:
- 多路召回
- 重排
- 查询改写
- Agentic Retrieval
- 多阶段规划式检索
这些能力当然有价值,但它们有一个共同前提:
基础链路必须先站稳。
如果基础链路都还不稳定,就急着加复杂能力,结果通常不是系统更强,而是系统更难解释。
为什么要先保证“可用”
可用的意思不是“偶尔演示能跑通”,而是:
- 用户能稳定提问
- 系统能稳定检索到候选证据
- 多数典型问题能得到基本可接受的答案
- 失败时也能暴露出明确的问题信号
没有这个基础闭环,后续一切优化都没有稳固落点。
你甚至无法判断某次改动到底有没有真正提升系统。
为什么要先保证“可控”
可控意味着:当系统出问题时,你知道该查哪一层。
如果一个系统做不到这一点,你就会不断陷入这些局面:
- 回答不准,但不知道是召回错了还是生成错了
- 某次改动后效果变差,但不知道是数据、参数还是提示词导致的
- 新文档上线后结果波动,但你没有证据链去回溯
所以可控性的本质,是给系统建立“可解释的内部结构”。
这通常依赖于:
- 检索日志
- 上下文快照
- metadata 可视化
- 问题复现链路
- 改动版本对比能力
为什么要先保证“可评测”
评测的作用,是把“感觉系统变好了”变成“能证明它变好了”。
没有评测时,系统优化很容易变成两种错觉:
- 某次演示效果不错,就误以为整体提升了
- 某几个用户反馈变差,就误以为全部回退了
但真实系统从来不是靠印象优化的。
你至少要有一组最小评测集,去回答两个问题:
- 当前系统在哪些问题上稳定失效
- 某次改动后,这些问题是变好还是变差
为什么“高级能力”必须后置
因为高级能力几乎都会引入新的复杂度:
- 更多模块
- 更多参数
- 更多调试维度
- 更高延迟和成本
如果你现在连“为什么这个问题答错了”都还说不清,那么继续加复杂度,只会让问题更难定位。
更合理的优先级通常是:
- 先把数据质量、切块、metadata、基础检索跑顺
- 再补日志、评测集、问题复现能力
- 然后再考虑混合检索、重排、查询改写
- 最后再考虑更复杂的 Agent 化检索或多阶段链路
一个很实用的判断标准
你可以用一句话判断自己现在是不是该追求“高级能力”:
如果你还不能稳定说明“为什么这个问题答错了”,那就还没到该上复杂能力的时候。
这句话非常重要,因为它把注意力从“还能加什么功能”拉回到“系统是否已经可解释”。
一句话总结
先稳后强,永远比先强后稳更可靠。先把系统做成可用、可控、可评测,再追求高级能力,才是长期可持续的路线。