首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >企业知识库问答老答错?一张排查清单分清“检索问题”还是“生成问题”

企业知识库问答老答错?一张排查清单分清“检索问题”还是“生成问题”

原创
作者头像
用户5658160
修改2026-09-14 09:49:03
修改2026-09-14 09:49:03
140
举报

导读:把公司文档接入大模型做知识库问答,上线后最常见的反馈是"答案不对"。多数人的第一反应是换更强的模型,其实大多数问题出在检索链路。这篇文章给你一张可直接用的分步排查清单:先把"答错"分成三类,再沿文档解析→切分→向量化→检索→重排→提示词逐环节定位,每环节给出现象、常见原因与自检方法,最后附引用溯源做法。纯通用工程实践,不绑定任何平台。

一、先分类:三种"答错"要分开看

知识库问答答得不对,原因几乎总落在三个环节:没检索到相关资料(检索不到)、检索到了但排序不对(检索不准)、资料对了但模型生成跑偏(生成问题)。三种问题的解法完全不同,第一步是分清属于哪种。

判断方法很简单:让模型在回答里带上引用来源。如果引用里根本没有相关文档,是"检索不到";引用里有相关文档但排在很后面,是"检索不准";引用来源正确但答案仍然错,才是"生成问题"。先分好类,再往下查,能省掉大量无效调参。

二、环节一:文档解析与清洗

常见现象:同一份 PDF 里的表格被读成一串乱码;扫描件整段是空白;网页正文混进了导航和广告。

常见原因:PDF 文字版与扫描版走了同一条解析管线;表格、页眉页脚、多栏排版没有被专门处理;HTML 抓取没有做正文抽取。

自检方法:把解析结果导出成纯文本,肉眼抽查 5~10 页,重点看表格、公式、代码块是否完好。必要时按文档类型分流:扫描件先 OCR,文字版走文本解析,表格优先转成 Markdown 表格再入库。

三、环节二:切分策略

常见现象:问"合同里违约金条款是什么",答案引用了整份合同却找不到具体条款;问一个跨章节的连续逻辑,答案被切散。

常见原因:固定长度切分(比如每 512 字一刀)把语义完整的段落拦腰切断;没有按 Markdown 标题、段落边界做结构感知切分;切分粒度与后续检索的查询粒度不匹配。

自检方法:把切分结果打印出来看断点是否落在段落边界。推荐"结构优先":优先按标题、列表、表格块切,再对超长块做二次细分,并保留相邻块之间的重叠区(overlap),避免关键词刚好落在切口上。

四、环节三:向量化与混合检索

常见现象:换个说法问就查不到,比如文档写"退款政策",用户问"钱怎么退";热门关键词能查到,长尾问法全落空。

常见原因:只用了向量检索,而向量对"字面完全不同、语义相近"的表述敏感度不稳定;索引里混入了大量低质量分块,稀释了相关性;topK 取太少,有效资料根本进不了候选。

自检方法:建立一组"改写测试集",每个真实问题配 3~5 种问法,逐一验证能否召回同一份文档。生产推荐混合检索:向量召回 + 关键词(BM25)召回取并集,再做统一排序,能同时照顾语义与字面两类需求。

代码语言:javascript
复制
// 混合检索:向量 + 关键词取并集后统一打分
async function hybridSearch(query, topK) {
  const [vecHits, bm25Hits] = await Promise.all([
    vectorSearch(query, topK * 2),
    bm25Search(query, topK * 2),
  ]);
  const merged = mergeAndScore(vecHits, bm25Hits); // 去重 + 加权合并
  return merged.slice(0, topK);
}

五、环节四:重排与提示词组织

常见现象:检索召回的内容看似都相关,但最关键的证据排在后面,模型被次要内容带偏。

常见原因:没有重排,直接按向量相似度截断;重排后没有做阈值过滤,把不相关片段也塞进了上下文;提示词里没有明确"只能依据给定资料回答、资料不足要明说"。

自检方法:看模型实际收到的上下文里,正确答案排在第几位。生产建议在检索后加一道重排,把最相关的 3~5 段送入生成,并显式声明引用规则,让模型在资料不足时直接回答"资料中没有",而不是编造。

六、引用溯源:让答案可核验

给每个分块保留文档 ID、章节号、原文片段。生成时要求模型按"引用编号"标注来源,前端渲染成可点击的出处链接。这一步既是质量兜底,也是排查工具:任何一次答错,都能顺着引用快速定位到具体环节。

七、踩坑清单

  • 不分类就调参,把生成问题当检索问题反复试;
  • 解析、切分、向量化全链路没有中间产物,问题定位全靠猜;
  • 只测标准问法,没建改写测试集,换说法就崩;
  • 纯向量检索,字面差异大一点的问法全部漏检;
  • 没有引用溯源,答错一次要人工翻半天日志;
  • 上线后不监控,检索命中率下降毫无感知。

八、工程落地建议

落地建议三步走:第一,先补齐可观测性——把解析、切分、召回、重排每个环节的中间结果都留一份,能回答"这条回答的引用从哪来";第二,建改写测试集,把它作为每次改动前后的回归基准;第三,检索质量稳定后,再投入精力优化生成环节。开源向量库、自研切分脚本、通用重排服务都可以按团队情况取舍,核心是把链路打明、可度量、可回归。知识库规模不大时,先用数据库自带全文索引做关键词检索兜底,往往就能解决一大半问题。

排查思路适用于任何自建知识库;若希望直接使用现成的知识库问答能力,可参考乔拓云企业网站产品。

九、复盘清单

  • 是否已经能对每次答错做"检索/生成"分类?
  • 改写测试集是否覆盖了用户真实问法?
  • 引用溯源是否上线?命中率是否有周维度监控?

结语:知识库问答的质量,七分在检索、三分在生成。先把链路每一环的中间结果打开看,绝大多数"答不对"都能在一个小时内定位到根因。本文与《AI Agent 会话一长就失忆?上下文管理 4 种策略的取舍与落地对照》同属 AI 工程落地系列,可对照阅读。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、先分类:三种"答错"要分开看
  • 二、环节一:文档解析与清洗
  • 三、环节二:切分策略
  • 四、环节三:向量化与混合检索
  • 五、环节四:重排与提示词组织
  • 六、引用溯源:让答案可核验
  • 七、踩坑清单
  • 八、工程落地建议
  • 九、复盘清单
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档