知识库问答Agent
知识库问答是企业场景中Agent应用最刚需的方向。每个组织都积累了大量文档——产品规范、技术手册、操作流程、政策制度——但找到需要的信息却越来越难。知识库问答Agent的目标是让用户用自然语言提问,就能得到准确、完整、可溯源的回答。本文将覆盖从文档导入到引用溯源的完整技术链路。
文档导入:不只是格式转换
文档导入是知识库系统的第一步,也是最容易被低估的步骤。很多人以为只是把PDF转成文本,实际上这个环节决定了后续所有环节的质量上限。
格式解析的挑战
企业文档格式多样:Word文档带嵌套表格,PDF有扫描版和原生版,Excel是结构化数据,Markdown是半结构化文本。每种格式的解析都有特定难题:
- 扫描版PDF:需要OCR,但OCR输出质量参差不齐。实战中建议对OCR结果做二次校对——用LLM对照原始图像检查关键段落的准确性,特别是数字、术语和表格内容。
- Word嵌套表格:表格是知识库问答的高频查询目标,但标准解析器经常把表格结构打散。正确做法是保留表格的逻辑结构(行列关系、单元格合并信息),在索引时为表格数据生成结构化的元信息。
- 多格式混合文档:一份产品手册可能同时包含文字段落、代码示例、配置参数表、架构图。解析时需要按语义单元切分,而不是按固定长度切分。一个代码示例不该被拆成两段,一个配置参数表应该整体保留。
元信息提取
文档导入不仅是提取文本,还要提取元信息——这些元信息在后续检索和回答生成中至关重要:
- 文档层级结构:章节标题、层级关系、前后文关联。用户问"第三章提到的部署流程",Agent需要知道第三章是什么。
- 文档版本与时间:知识有时效性。一份2022年的部署指南可能在2024年已经过时。索引中必须包含文档的时间戳和版本号。
- 文档来源与权限:不同部门的知识有不同访问权限。人力资源政策和公开产品文档不应该在同一无权限区分的索引中混存。
索引构建:检索质量的核心
索引构建是知识库问答系统的心脏。检索质量直接决定回答质量——模型再强,如果拿到的参考片段是错的,输出也不可能正确。
切分策略
文档切分不是简单的按字数分割。好的切分策略应该保持语义完整性:
- 按语义单元切分:一个完整的逻辑段落、一个独立的技术步骤、一个完整的FAQ条目——这些是自然语义单元。切分边界应该落在语义单元之间,而不是硬切在中间。
- 重叠窗口设计:相邻片段之间保留一定重叠(通常10-15%),避免关键信息正好落在切分边界上而丢失上下文。
- 多粒度索引:同一个文档同时建立粗粒度索引(整章级别)和细粒度索引(段落级别)。检索时先用粗粒度定位相关章节,再用细粒度提取精确片段,兼顾召回率和精准度。
向量索引与关键词索引的配合
纯向量检索擅长语义匹配但容易遗漏精确术语,纯关键词检索擅长精确匹配但无法理解语义关联。实战中必须两者结合:
- 混合检索策略:对每个查询同时执行向量检索和关键词检索,合并结果集后用交叉排序(如RRF算法)统一排序。这种混合策略在实测中通常比单一策略提升15-25%的检索准确率。
- 查询改写:用户的原始查询往往表达模糊。Agent应该先对查询做改写——补充隐含的上下文、拆解复合问题、扩展专业术语的同义表达。例如用户问"怎么回滚",Agent应该改写为"数据库回滚操作步骤"并扩展相关术语。
- 元信息过滤:利用索引中的元信息做检索过滤——限定文档类型、时间范围、业务领域。这能大幅减少无关结果,提升检索精准度。
多轮对话:超越单次问答
单次问答只解决信息查找,多轮对话解决信息理解。用户问一个问题后,往往需要追问、澄清、深入——这才是真实的知识获取过程。
对话上下文管理
多轮对话的核心挑战是上下文管理:
- 问题关联识别:用户说"那性能怎么样",这个"那"指代的是上一轮讨论的具体方案。Agent需要维护对话中的实体指代链,正确解析省略和指代。
- 意图漂移检测:对话中用户的关注点可能自然漂移——从部署流程问到监控方案再到告警配置。Agent需要识别这种漂移,在检索时调整上下文窗口,避免被早期话题的检索结果污染。
- 追问引导:当用户的提问过于宽泛时(如"告诉我关于微服务的一切"),Agent不应该试图一次性回答所有内容,而是主动引导聚焦:"微服务涉及很多方面——架构设计、服务拆分、通信机制、部署策略。你最关心哪个方面?"
知识状态追踪
高级知识库Agent应该追踪用户的知识状态——他已经了解了哪些信息,还缺少哪些关键概念:
- 渐进式解释:如果用户在前几轮对话中已经理解了基础概念,后续回答应该在此基础上深化,而不是重复基础内容。
- 知识缺口识别:当用户的追问暴露出对某个前置概念的理解缺失时(如问Kubernetes的Pod调度策略但不理解Pod基本概念),Agent应该主动补充前置知识,而不是让用户在信息碎片中拼凑。
引用溯源:可信度的基石
没有引用溯源的知识库问答系统是不可信的。用户必须能够验证Agent的回答来自哪里、是否准确、是否完整。
引用标注设计
回答中的每个事实声明都应该附带引用标注:
- 精确引用:不只是"据文档记载",而是"据《产品部署手册》第3.2节'数据库配置'段落记载"。引用应该精确到文档名称、章节位置,最好能直接链接到原文。
- 片段级溯源:回答由多个检索片段组合生成,每个片段的贡献应该可追溯。用户点击引用标记时,应该能看到原始文档片段,判断Agent是否准确理解和引用了原文。
- 置信度标注:对检索结果中匹配度较低或文档时效性可疑的部分,Agent应该主动标注不确定性,而不是把低质量信息包装成确定答案。
反幻觉机制
知识库Agent最严重的质量问题是幻觉——生成文档中不存在的信息。防御幻觉需要多层级机制:
- 检索结果约束:严格限制Agent只基于检索到的片段生成回答,不允许"创造性补充"。系统Prompt中应该明确声明:"只使用提供的参考文档中的信息回答问题,如果参考文档中没有相关信息,明确告知用户。"
- 事实校验层:在回答生成后,用一个独立的校验步骤对照检索片段检查每个事实声明。校验不需要复杂模型,一个轻量级模型+规则引擎就够了。
- 缺失信息声明:当检索结果不足以完整回答用户问题时,Agent应该明确说明哪些部分有据可依、哪些部分信息不足,而不是用模糊措辞掩盖信息缺口。
知识库问答Agent的构建是一个系统工程——文档导入、索引构建、检索策略、对话管理、引用溯源,每个环节都需要精心设计。单个环节的优化带来的提升有限,但全链路的协同优化能产生质变级别的效果提升。
本章小结
企业知识库问答系统核心链路:
- 文档导入:OCR、表格解析、多格式兼容
- 索引构建:语义分块、多粒度索引、混合检索
- 对话管理:多轮上下文、引用溯源、幻觉防御
- 持续优化:用户反馈、知识更新、效果评估
成功关键:检索质量决定回答质量,没有好的检索就没有好的问答。
📖 延伸阅读
- LangChain RAG Tutorial —— 官方 RAG 教程
- LlamaIndex 文档 —— 数据框架与 RAG 工具
- RAGAS —— RAG 评估框架
- Building a Q&A System —— Pinecone RAG 系列教程
