两年前,当 RAG(检索增强生成)技术刚火的时候,我们团队兴奋地花了两个星期,用 LangChain 加上一个开源向量数据库,给公司搭了一个“内部知识问答助手”。
刚开始的测试很完美,问它一些公司福利、请假制度,它答得有模有样。直到我们将几百份冗长的《审计报告》和《财务报表》丢进去,灾难发生了。 你问它“某项目第一季度的应收账款是多少”,它给出的数字竟然是隔壁项目的;你问它“某个条款的例外情况”,它把前置条件全丢了,直接给出了一个合规风险极大的建议。
业务部门试用了半天后,扔下一句话:“这玩意儿一本正经地胡说八道,根本不敢用。”
传统 RAG 的“原罪”
经过痛苦的排查,我们发现大模型之所以产生“幻觉”,问题根本不出在模型不够聪明,而是我们喂给它的数据是“碎”的。
传统 RAG 的逻辑非常粗暴:把一个文档按固定字数(比如 500 字一刀)切成小块(Chunk),算个向量存起来。 如果你切的是一本小说,这没问题。但如果你切的是一份金融财报呢? 一个横跨两页的复杂财务报表,被生生切成了三块。表头在 A 块,数据在 B 块。当大模型拿着这些支离破碎、失去了行列表头坐标的数字时,它除了瞎猜和拼凑,别无他法。
更要命的是,它给出的答案没有“证据”。用户不知道它是从哪一页抄来的,无从核实。这在严谨的 B 端业务里是不可容忍的。
我们的重构:ZGI 确定性知识引擎
为了解决这个“敢不敢用”的问题,在研发 ZGI(www.zgi.cn/) 平台 时,我们推翻了传统的 RAG 范式,重构了一条被称为 “确定性知识引擎” 的链路。
第一步:放弃粗暴切片,转向“结构化重建” 我们引入了多模态的文档解析引擎。当一份 PDF 传进来时,系统不会先切分字数,而是先去做版面分析。 系统会识别出哪里是标题层级,哪里是图片,哪里是表格。对于表格,系统将其转换为带有行列结构的 Markdown 或 JSON 格式;对于条款,保留其父子逻辑树。我们把文档重新抽象成了具有精确 Schema 的数据对象。
第二步:图谱增强( Graph RAG)防断连 有时候,一个问题的答案并不在一个段落里。比如“张三参与了哪些项目”,可能分布在文档的多个位置。 ZGI(www.zgi.cn/) 在底层引入了知识图谱的逻辑。在解析时,抽取实体与关系,在检索时不仅通过向量找相似性,还通过图谱找关联性。这样召回的上下文极其丰富且逻辑严密,彻底抹平了信息差。
第三步:终极杀手锏——段落级双向溯源 这是拯救业务信任度的关键。 我们要求系统在吐出答案的同时,必须附带其引用的“坐标”。在 ZGI (www.zgi.cn/)的前端界面上,用户看… AI 算出的财务数据后,只要点击旁边的 [引用1] 标签,右侧会自动弹出版面原始 PDF,并高亮框选出这组数字在原文档中的具体位置。
这叫什么?这叫“提供呈堂证供”。 当 AI 把证据摆在你面前时,幻觉的危害就被降到了零。即使 AI 总结有瑕疵,业务人员也能一眼通过高亮的原文进行校对。
经验总结 不要迷信大模型的参数量能解决一切问题。在企业内部数据面前,“巧妇难为无米之炊”。用工程化的手段(如 ZGI(www.zgi.cn/) 的结构化解析与溯源)把数据洗干净、理清楚,才是消除幻觉的唯一正途。