发布于 Wed Feb 25 2026 08:00:00 GMT+0800 (中国标准时间)
深度评测FastGPTRAG
FastGPT 知识库调优全攻略:把准确率从 0.62 提到 0.89
FastGPT 知识库默认配置只能拿到 60% 准确率,调对了能到接近 90%。本文给出分块策略、问题增强、Reranker 的逐步实测。
基准设置#
- 数据:3500 条电商 FAQ + 200 条产品文档
- 测试集:150 道真实用户问题
- 评估指标:MRR@5
起点:默认配置#
bge-m3 Embedding,500 字按段落切,top_k=5。
结果:MRR@5 = 0.62——勉强能用,但用户反馈「答案常常错位」。
第 1 步:换分块策略#
| 策略 | MRR@5 | 提升 |
|---|---|---|
| 按段落切(默认) | 0.62 | — |
| 按 H2/H3 标题切 | 0.71 | +9 |
| QA 拆分(FastGPT 自带) | 0.79 | +17 |
| 父子分块(小切检索 + 大块回传) | 0.83 | +21 |
关键:FastGPT 的「QA 拆分」是国内项目里做得最好的,它会用 LLM 把长段落改写成「问题—答案」对,再分别索引。
第 2 步:开启问题增强#
FastGPT 有个开关叫「索引时问题增强」,对每个 chunk 自动生成 2-3 个变体问题。
| 状态 | MRR@5 |
|---|---|
| 关闭 | 0.83 |
| 开启(每条 2 个变体) | 0.86 |
代价:索引时间 3-5 倍,但只是一次性成本。
第 3 步:加 Reranker#
检索回 5 条后用 Reranker 重新排序。bge-reranker-v2-m3 是默认推荐。
| 配置 | MRR@5 | 耗时增加 (ms) |
|---|---|---|
| 无 Reranker | 0.86 | 0 |
| + bge-reranker-v2-m3 | 0.89 | +150 |
150ms 换 3 个百分点准确率,几乎所有客服场景都赚。
第 4 步:检索后处理#
| 后处理 | MRR@5 |
|---|---|
| 无 | 0.89 |
| + 去重(cosine > 0.95 视为同一条) | 0.89 |
| + 强制 top_k 内至少有一条「答」类 chunk | 0.91 |
第 5 步:Prompt 端的最后一脚#
你是 [品牌] 的客服助手。请只使用「参考资料」回答用户问题。
要求:
1. 若参考资料不足以回答,回复「我没有相关信息,正在转人工」
2. 不要编造任何数字或日期
3. 回答需附上来源 chunk_id
参考资料:
{{context}}
用户问题:{{question}}
| Prompt 状态 | Faithfulness |
|---|---|
| 默认 Prompt | 0.81 |
| 加严格约束 + 引用 chunk_id | 0.94 |
总成本对比#
| 阶段 | MRR@5 | Faithfulness | 累计成本 |
|---|---|---|---|
| 起点 | 0.62 | 0.78 | — |
| + QA 拆分 | 0.79 | 0.81 | 索引时间 +50% |
| + 父子分块 | 0.83 | 0.81 | 索引时间 +30% |
| + 问题增强 | 0.86 | 0.82 | 索引时间 +200% |
| + Reranker | 0.89 | 0.85 | 查询 +150ms |
| + Prompt 优化 | 0.89 | 0.94 | 0 |
| 总收益 | +0.27 | +0.16 | — |
没用的尝试#
我们也试过这些但没有显著提升:
- 把 Embedding 换成 Conan-embedding(+0.005,差距在噪音范围)
- 上下文窗口从 5 改 10 轮(对单轮检索无关)
- 调高 LLM temperature 让回答「更丰富」(反而降低 Faithfulness)