文档上传并完成索引,提问时检索结果为空,把同样的文档放进别的工具却能命中。
一开始怀疑是「检索阈值过高,候选全被过滤」,查了一圈,方向不对。
真正麻烦的地方在于,几个原因的现象几乎一样。分段长度与重叠设置不适合中文文档。也可能是索引方式选了经济模式,向量质量差。
少数情况下是文档解析失败,实际入库内容为空。
第一件事是确认分段数量是否正常
python -c "print('check segment count in console')"
随后改高质量索引并重建
python -c "print('rebuild with high quality embedding')"
临时把阈值降到零观察结果
python -c "print('score_threshold=0')"
末了抽样查看分段文本内容
python -c "print(segment_text[:120])")
隔了一天再看,现象没变,说明不是偶发。
别只看报错消失,验证要多做一步。检索能返回相关分段,回答里有引用来源,命中率恢复到可用水平。
分段过长会把答案稀释,过短又会切断上下文,中文技术文档按五百字左右、重叠五十字起步比较稳。这类问题最好一次改到位,反复小改反而容易把原因搅混。