做知识库问答的人大多经历过这个过程:接上大模型,效果不理想,于是换模型、调参数、改检索策略……折腾一圈之后发现,问题一直在语料里。
语料的问题有个特点:它不会报错,只会让答案慢慢变得不可信。所以必须在入库前设关口。
一、五个关口
语料入库前的五道关
二、逐关说清楚
第一关:来源可追溯
每一份进库的文档至少要记录四项:来源、责任人、版本日期、有效期。
为什么重要:当有人质疑某个答案时,你需要能立刻指出”这条来自哪份文件的第几节”。做不到这一点,整个知识库的可信度就是零。
第二关:时效有效
时效问题的三种表现
第三关:内部无冲突
这是最难做也最容易被跳过的一关。两份文档对同一个问题给出不同说法时,检索系统不会告诉你有冲突——它只会返回其中一份。
冲突排查的做法
第四关:结构可切分
检索是按文本块工作的。所以文档能不能被合理切块,直接决定了能不能被检索到。
常见的切分障碍
第五关:权限已分级
知识库最容易出的事故不是答错,是答对了不该答的人。薪酬制度、客户名单、未公开的商务条件——这些一旦进了全员可查的库,就收不回来了。
入库前给每份文档打一个级别,最少三级:公开 / 内部 / 受限。没有分级机制的话,受限内容干脆别入库。
三、入库检查表
语料入库检查表(逐份过)
四、一个反直觉的建议
语料宁少勿滥。一百份高质量文档的问答效果,通常好过一千份混杂文档。因为混杂文档带来的不只是噪声,还有相互矛盾的答案——而矛盾比缺失更难被发现。