先看现象。FastGPT 4.8 的知识库开了自动追问,导入 80 条 FAQ 后问怎么开票,命中的分段答案字段是空的,原文在库里完整,分段预览里只看到问题。
排查方向其实有限,先把可能性排一排。自动追问按问号拆内容,答案被归到前一段。少数情况下是QA 结构要求答案非空,拆分后答案字段落空。
另外,分段长度上限把长答案截成空串。
少数情况下是导入 CSV 时列名没对上,问答两列映射错位。
动手时先看导入文件的实际列名
python -c "import csv;print(next(csv.reader(open('faq.csv',encoding='utf-8-sig'))))"
接着关闭自动追问改用问答导入
curl -s -X POST http://127.0.0.1:3000/api/core/dataset/collection/create -H "Authorization: Bearer $FASTGPT_KEY" -H "Content-Type: application/json" -d '{"datasetId":"","trainingType":"qa"}'
再往下按问题与答案两列显式映射
python -c "print([{'q':'怎么开票','a':'在订单页点开票'}])"
剩下的就是抽几条检查答案字段是否为空
python -c "print(sum(1 for a in ['在订单页点开票','联系客服'] if a))"
恢复的判定其实很直接。80 条 FAQ 的答案字段全部非空,抽 10 条问题命中后能拿到完整答案,分段预览里问与答成对出现。
自动拆分适合论坛长文,FAQ 这种强结构数据最好手工指定列映射,拆开反而破坏结构。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。
