问题出现得很突然,日志倒是留得挺全。回答里引用的原文在页面上只有前半句,剩下半句在下一个 chunk 里,前端按 chunk 单独渲染,用户核对时认为模型编造,投诉到了业务方。
刚开始盯着「块之间的重叠部分没有用于展示」,折腾了半个多小时,排掉了。
真正麻烦的地方在于,几个原因的现象几乎一样。分块边界落在句子中间,引用只取命中的那块。少数情况下是引用拼接没有按原文顺序做跨块合并。
另外,前端按固定字数截断了引用。
上来先打印命中块的起止偏移
python -c "import json;d=json.load(open('hit.json'));print(d['start'], d['end'])"
再往下按文档偏移合并相邻块再展示
python citation_merge.py --window 1 --in hit.json
调整分块策略在句末切分
python chunk.py --split-on sentence --size 400
复核引用与原文是否逐字一致
python verify_quote.py --q '违约金比例' --n 10
改完先别撤,确认这几项。引用文本与原文完全一致,跨块的句子完整,前端不再出现半句截断。
补一句。引用是可信度的来源,展示层再做一次截断等于自己拆自己的台。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
