你的 RAG 助手不会数数——别再让它去算了
来源:dev.to — 2026-07-31
📋 概述
一个用户问文档搜索助手某人写了多少篇文档,正确答案是数据库算出的 84,但助手自信地回答了一个截断后的数字。原因在于 RAG 管线的每一层(检索截断 top-k、权限过滤、版本合并、最多 30 张卡片)都是为了搜索而优化,却一步步破坏聚合计数。作者提出明确主张:LLM 永远不该算聚合值,计数/求和/最新都应来自系统记录(数据库),模型的职责只是把它表述出来。文中还指出一个经典 bug——状态字段 total_available_results 在管线中语义漂移,导致正确的真值被覆盖。
🔑 核心要点
- 模型不算聚合:计数、求和、“最新”都不该交给 LLM,答案应来自数据库这个权威系统记录
- 管线层层破坏计数:检索 top-k 截断、权限门控、版本合并、30 张卡片上限,每步都把数据库问题变成上下文窗口问题
- 正确数字被覆盖:文档服务本已返回真值 total_available_results,却被下游权限节点用展示数覆盖
- 语义漂移是 bug 工厂:同一字段在管线不同点含义不同(数据库匹配数 vs 屏幕卡片数),谁最后读就拿到最新含义
- 修复原则:权威值给它独立字段且下游不可触碰,数据库计数、模型只负责叙述
💡 金句
An LLM should never compute an aggregate. The answer comes from the system of record — the model’s only job is to phrase it.
👍 0
👎 0
← 返回 Dev.to 首页