知识 QA:垃圾进,垃圾出——这不是开玩笑

周一上午,老李盯着屏幕上的 AI 回答,保温杯差点从手里滑出去。

“咱们的产品有 100 多个功能?”他念出声来,“我怎么不知道?”

小王凑过来看了一眼,AI 的回答里赫然列着“功能 73:智能推荐系统(已废弃)”、“功能 89:语音输入(内部测试版,从未发布)”、“功能 102:团队协作白板(仅存在于某封邮件中的脑洞)”。

“这是上个月你把全公司的邮件、Slack 消息、废弃的 PRD 全灌进知识库的结果。”小王语气平静,“AI 把闲聊、半成品方案和正式功能一锅炖了。”

老李眉头拧成疙瘩:“多塞点文档总没错吧?知识越多越聪明,这道理不对?”

“老李你想啊——你家的书架,如果塞满了过期杂志、盗版书、小孩的涂鸦本和外卖菜单,你还能快速找到那本《资治通鉴》吗?”

老李张了张嘴,没说出话。


知识质量的四个维度

“知识不是越多越好,是越靠谱越好。”小王走到白板前,写下四个词。

准确:“这是最基本的一条。知识库里写的必须是事实,不是某个人的臆想。那个‘功能 73 智能推荐系统’,三年前在邮件里提过一次,后来根本没立项。把这种信息当正式功能告诉用户,就是在造谣。”

完整:“一份产品文档,如果只有功能介绍没有参数限制,AI 回答‘API 调用频率限制’时就会漏掉关键信息。不完整的知识比没有知识更危险——它让人误以为自己掌握了全部。”

一致:“同一个问题,知识库里不能有两个互相矛盾的答案。‘年假是 10 天’和‘年假是 15 天’如果同时存在,AI 随机选一个回答,用户会以为我们在耍他。”

新鲜:“过期的知识是毒药。旧的 API 文档、废弃的技术方案、已离职员工的信息——如果不标时、不清理,AI 就活在时空错乱里。”

老李盯着这四个词,缓缓拧开保温杯:“那我们现在的知识库,这四个维度打分能有多少?”

“准确度大概 60%,完整度 40%,一致性和新鲜度——没测过,但我猜不超过 50%。”

老李差点被枸杞呛到。


自动化质检:让机器当“知识保安”

“那怎么办?人工一条条审?我们团队就五个人,文档上万份。”老李显然想到了那个十五层目录树的噩梦。

“不用全人工,大部分脏东西可以用自动化检测抓出来。”小王打开终端,开始搭一个质检管道。

第一关:重复检测。 相同或高度相似的文档块不仅浪费存储,还会在检索时占据多个排名位置,把真正有用的信息挤出去。

python
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np

def find_duplicates(embeddings, texts, threshold=0.95):
    """找出语义高度重复的文档对"""
    sims = cosine_similarity(embeddings)
    duplicates = []
    for i in range(len(sims)):
        for j in range(i+1, len(sims)):
            if sims[i][j] > threshold:
                duplicates.append((texts[i][:50], texts[j][:50], sims[i][j]))
    return duplicates

# 在实际管道中,把重复的文档标记为"需合并"或直接归档旧版本

第二关:矛盾检测。 用自然语言推理模型判断两条陈述是否存在冲突——比如“年假 10 天”和“年假 15 天”会被检出。

python
def detect_contradiction(statement_a, statement_b, model):
    """用 NLI 模型检测两条知识是否矛盾"""
    result = model.predict(f"{statement_a} </s> {statement_b}")
    # 如果结果是 contradiction,触发人工复核
    if result == "contradiction":
        return True, statement_a, statement_b
    return False, None, None

第三关:过期检测。 基于文档元数据中的日期或版本信息,自动标记超过一定时间未更新的文档,或新版本出现后仍未下架的旧版。

老李看着小王演示,突然问:“那如果我写‘产品支持 8 种语言’,但实际上只支持 4 种,机器能发现吗?”

小王摇头:“这类错误需要外部事实校验——机器做不到。必须人工抽检。”

“所以自动化负责找‘低级错误’——重复、明显矛盾、明显过期。人工负责做‘事实核查’。”


知识清洗管道:入库前的五道安检

“这样,”小王在白板上画了一条流水线,“我们给每份要入库的文档,设五道安检。”

图:知识入库五道安检

“格式检查——是不是乱码?段落有没有丢失?去重检测——是不是已经有了?矛盾检测——会不会跟现有知识打架?时效标记——这信息有效期到什么时候?最后一道,人工抽检——每周抽 5% 的新入库文档做事实核查。”

老李指着最后一步:“那如果抽检发现问题呢?”

“整批打回,修完再审。质量这东西,松一个口子,整体就崩了。”


质量仪表盘:让知识健康状况一目了然

“光检还不够,”小王补充道,“得有个监控。”

他切到一个仪表盘页面,几根柱状图赫然在目:“这是‘知识体检报告’——每周自动跑一次。重复率、矛盾数、过期文档占比、各分类下的完整度评分。趋势不对就亮黄灯,跌出阈值就报警。”

老李凑近屏幕,看到“技术文档”分类下的准确度评分是 92%,而“会议记录”分类只有 47%。

“看到了吧?不是你塞进去的所有东西都同等重要。会议记录完整度低、矛盾多,但用户很少搜它。技术文档只要准确度一下降,用户投诉立马涨。质量投入也要分优先级。”

老李靠在椅背上,保温杯在手里转了好几圈。

“行。这个月先把技术文档和 FAQ 的质检管道跑通。邮件和 Slack 消息——全部下架,只留经过人工整理的摘要。”

他站起来,走了两步又停住:“那什么……你刚才说的矛盾检测模型,它是怎么判断两句话打架的?能区分‘年假 10 天’和‘年假 15 天’是矛盾,但‘产品支持 Linux’和‘产品需要 Windows 服务器’算不算矛盾?这个阈值怎么定?给我看看那个 prompt。”

小王笑了,把 NLI 模型的推理日志调出来。老李端着保温杯凑过去,枸杞在杯里晃晃悠悠,像质检管道里那些被来回筛检的知识碎片——有些被留下,有些被轻轻地扫了出去。

让知识库和变化的世界保持同步
多模态知识库:文字、图片、表格、代码,一个都不能少