标称 128K 上下文的模型一到真实业务就掉链子,这事我测过几轮,结论是:窗口长度和有效检索能力是两回事,实测方法比参数更重要。
先说测试方法。别用随机填充的合成文本糊弄,真实场景的干扰项是有语义的:我用的办法是把目标文档埋进 20 篇同主题干扰文档里,提问时要求给出原文出处段落,这样既能测召回也能测幻觉。
实测下来有三个规律。第一,位置效应真实存在:目标在文档开头和结尾时召回率最高,埋在中间 30%~70% 区间时掉得最明显,128K 下中间段召回比 32K 下低了约 15 个百分点。
第二,干扰项的语义相似度比长度更致命。同主题干扰文档一多,模型开始把干扰段落当答案,表现为引用错段落而不是答不出来,这种错误比拒答更难发现。
第三,分块策略比换模型更划算。把长文档先按语义切成 2K~4K 的块做粗排,再把 Top 块拼进上下文精排,同样模型下准确率能拉回 10 个点以上,成本还更低。
所以我的选型流程是:先按业务文档类型做埋针测试,画出召回率随位置变化的曲线,再决定是加分块还是换更长窗口的模型。只看标称窗口长度选型,等于只看油箱大小买车。
你们在长上下文场景里踩过最大的坑是什么?是位置丢失,还是干扰项串答案?