企业知识库问答是最常见的 AI 落地场景之一。很多团队发现:模型换来换去效果提升有限,真正的瓶颈在数据处理和检索。

【一、文档预处理决定上限】
- 格式解析:PDF 中的表格、页眉页脚、多栏排版很容易被解析乱。建议抽查解析结果,必要时针对不同文档类型使用不同解析器。
- 清洗:去掉重复的免责声明、目录页、无意义的导航文本。
- 元数据:保留文档标题、章节、更新时间、权限标签,后续可用于过滤和引用。

【二、切分(Chunking)策略】
- 固定长度切分:简单,但可能把一句话或一个表格切断。可设置一定重叠(overlap)缓解。
- 按结构切分:按标题、段落、条款切分,语义更完整,推荐优先使用。
- 块大小的取舍:太小会丢失上下文,太大则检索不精准、浪费上下文。没有通用最优值,需要用评测集对比几个候选设置。
- 给每个块附上所属文档和章节标题,能显著改善“只看片段不知所云”的问题。

【三、检索调优】
- 混合检索:向量检索擅长语义相近,关键词检索(如 BM25)擅长型号、编号、专有名词,两者结合通常更稳。
- 重排序(Rerank):先召回较多候选,再用重排模型精选少量给大模型。
- 查询改写:把口语化问题改写为更适合检索的形式,或拆分为多个子问题。
- 权限过滤:在检索阶段就按用户权限过滤,而不是生成后再处理。

【四、生成阶段】
- 要求“仅根据提供的资料回答,资料不足请说明”。
- 要求输出引用来源,方便用户核对。

【五、评估要分两段】
分别评估检索(正确文档是否被召回)和生成(答案是否忠实于资料)。只看最终答案,很难定位问题出在哪一环。

讨论:
1. 你们的 chunk 大小和重叠是怎么确定的?
2. 表格和图片类内容,你们是怎么处理的?