-
huo4 音频站 管理员
前言
上个月接了个活:给客户的知识库做问答。文档动辄几万字,第一版方案我用的是"最直觉"的做法——把整篇文档塞进长上下文模型直接问。
能用,但一算账单我就坐不住了。于是花了一个周末做了几种架构的对比实测,结论是:同样的问题,最贵方案和最省钱方案的账单差了 20 倍,而回答质量的差距远没有账单差距大。
这篇把测试过程和架构结论分享出来。
一、四种架构,从贵到便宜
方案 A:全量长上下文(直觉方案)
整个文档塞进 prompt,每次提问都带全量。
账单构成:每次请求输入 ≈ 30k tokens
10 个问题 = 300k 输入 tokens(还没算重复)
问题显而易见:每个问题都在为整篇文档重复付费。
方案 B:文档摘要 + 分段路由
预处理阶段做一次性投资:让模型把文档切成章节并生成每章摘要(这笔钱只花一次)。用户提问时,先用摘要判断问题落在哪些章节,只把相关章节塞进上下文。
预处理:一次性 ≈ 40k tokens(全文档摘要)
每次提问:≈ 3~6k tokens(2~3 个相关章节)
方案 C:传统 RAG(embedding + 向量检索)
最经典的方案:切片、embedding 入库、检索 top-k。精度取决于切片和 embedding 质量,工程复杂度最高。
方案 D:B + C 混合
摘要路由做粗筛,向量检索做精排。
二、实测结果(3 万字技术文档,20 个测试问题)
方向性结论,模型迭代快,请以自己的实测为准。
| 方案 | 单问题输入 tokens | 20 问总成本* | 回答质量 |
|---|---|---|---|
| A 全量长上下文 | ~30k | 最高(基准) | 最全,偶尔引用错位 |
| B 摘要路由 | ~5k | 约基准的 1/6 | 90% 的问题无感知差异 |
| C 传统 RAG | ~2k | 约基准的 1/10 | 依赖切片质量,细节准但全局弱 |
| D 混合 | ~3k | 约基准的 1/8 | 细节与全局兼顾 |
*成本还与模型单价相关:我用聚合网关的实时倍率计价(用的 Rqu AI,价格在模型广场透明可查),不同端点请按自己的单价换算。
质量上的关键发现:方案 A 输了两次——问"全文的核心论点是什么"这类全局问题时,长上下文模型反而会"只见树木";方案 B/C 输在跨章节问题("第 3 章和第 7 章的观点矛盾吗")。混合方案 D 是唯一没有明显短板的。
三、一个容易被忽略的成本杠杆:模型分层
同样的架构,模型选择还能再砍一半:
- 摘要路由这一步(判断问题属于哪章)是轻量任务,用便宜模型足够——这一步占每次请求 tokens 的 5%,却常常被人用旗舰模型跑;
- 真正需要质量的只有最终回答那一步,才值得上好模型;
- 预处理摘要是一次性投资,用中档模型跑一遍即可。
我的最终配置:路由用 deepseek 级(约 0.001 元/次),回答用 sonnet 级。整体账单比"全量长上下文 + 全旗舰"方案省了约 95%。
四、什么时候直接用方案 A
公平起见,三种情况长上下文直塞依然是正解:
- 文档 < 1 万字——切分的工程成本超过 token 成本;
- 问题高度不可预测且全是全局性问题——路由会漏;
- 一次性任务——不值得搭管线。
我的经验阈值:文档超过 2 万字、且会被反复提问,才值得上 B/C/D 架构。
五、复现清单
- 一个 OpenAI 兼容端点(聚合网关最方便,切模型不改代码);
- 预处理脚本:按标题切章 → 逐章摘要(一次性);
- 路由脚本:问题 + 章节摘要列表 → 让便宜模型输出相关章节号;
- 回答脚本:问题 + 相关章节原文 → 好模型输出答案;
- 记账:每次调用打日志,按方案分组统计——没有账单数据的优化都是自我感动。
系列上一篇《四模型横评》里的成本估算方法可以直接复用在这里。
六、结论
- 长上下文能力解决了"塞得进去"的问题,但没解决"每次都重复付费"的问题;
- 文档越长、复用越多,路由架构的收益越大;
- 模型分层是第二重杠杆:路由用便宜的,回答用好的;
- 先测量再优化——把每次调用的 token 记下来,账单会告诉你答案。