当LLM不够用了——本体推理的企业决策实践
森林瀑布
本章最适合:正在落地 RAG/LLM 应用的工程师,以及关注 LLM 与知识图谱融合方向的技术研究者。本章是全书中对 LLM 技术着墨最多的一章——如果你的目标是"纯本体推理",可以先读 §8.4 了解本体增强方法,再按需深入 GraphRAG 部分。
前七章我们一直在讲"本体推理"——OWL 公理、SWRL 规则、Tableau 推理机、Palantir 的本体层。这些是确定性推理的世界。
这一章我们转向一个相邻但不同的领域:GraphRAG——基于图的检索增强生成。它和本体推理不是同一件事,但它们的交叉点恰恰是 LLM 时代最值得关注的技术方向:用结构化的知识图来增强非结构化的语言模型。
理解 GraphRAG,不是因为它能替代本体推理(它不能),而是因为它展示了知识结构化的另一条路径——从非结构化文本中自动抽取图谱,而不是由人手工建模本体。这两条路最终会在企业的决策系统中交汇。
从第六、七章到本章的过渡:第六章和第七章分别分析了 Palantir Foundry 和中数睿智动态本体引擎——它们的共同点是:本体由人手工建模(第六章)或 AI 辅助构建(第七章),推理机执行确定性推理,整条链路的逻辑是"先建好骨架,再跑推理"。但企业里还有大量知识是非结构化文本——合同、报告、内部文档——这些不可能全部靠人手工建模。GraphRAG 回答的是另一个问题:如果知识来源不是结构化数据库而是文本语料,能不能也用"图"来增强 LLM 的推理?答案是能,但代价是精度——自动抽取的图谱没有手工建模的 TBox 精确,无法做严格逻辑推理,但足以大幅改善 RAG 的"综合"和"关联"能力。两条路径(手工本体 vs 自动图谱)不是替代关系,而是互补关系——前者保证逻辑正确,后者扩大知识覆盖。
8.1 RAG 的局限与 GraphRAG 的突破
朴素 RAG 的两个天花板
检索增强生成(RAG)是本轮 LLM 热潮中落地最快的技术模式之一——先检索相关文档片段,把检索结果拼到 prompt 里,让 LLM 基于这些"接地气"的上下文生成回答。不微调模型,不显式注入知识,靠的是检索质量。
但这个模式有两个结构性天花板:
天花板一:只能"点查",不能"综合"
RAG 的工作方式是:用户问题 → 向量化 → 在向量库中找相似度最高的 top-k 片段 → 注入 prompt → LLM 生成。这是一个"点查"模型——你问"X 是什么",系统检索关于 X 的片段,回答。
但当问题是"这个数据集的主要主题是什么""和公司 A 有关联风险的最大供应商是谁"这种需要跨多个信息片段的综合推理的问题时,RAG 就失效了。因为向量相似度只能找出和问题直接相关的片段,不能串联分散在不同片段中的信息。
这就是微软 GraphRAG 团队所说的**"连接点"问题(Connecting the Dots)**——回答问题需要的信息分散在多个不连续的文本片段中,朴素 RAG 的"单跳检索"看不到这些片段之间的隐含关系。
天花板二:只能"原文匹配",不能"关系推导"
RAG 找到的是语义上相似的文本片段。但如果你的问题是"A 公司有哪些间接的供应链风险",RAG 只能找到包含"A 公司"“供应链”“风险"这些关键词的片段。它不知道"间接风险"意味着要去查"A 公司的供应商的供应商的状态”——这个"两层关系推导"不在向量语义相似度的能力范围内。
这是第二章讲的"查不深"问题在 RAG 上的具体体现。
GraphRAG 如何突破这两个天花板
微软在 2024 年 7 月开源的 GraphRAG 项目,用了一种从根本上不同的方法:在检索之前,先把所有文本转化为一个知识图谱。
GraphRAG 的完整流程分为两大阶段:
索引阶段(离线)
原始文本语料 → 文本切分(TextUnit) → 实体和关系抽取(LLM 调用) → 知识图谱构建(实体为节点,关系为边) → 社区检测(Leiden 算法,分层聚类) → 社区摘要生成(对每个层级的社区生成语义摘要)这个流程的核心输出是三样东西:
- 知识图谱:实体节点 + 关系边,描述了语料中"谁和谁怎样关联"
- 社区层级结构:通过 Leiden 算法对图谱做分层聚类,形成从细粒度到粗粒度的社区树
- 社区摘要:每个社区的语义总结,描述了"这群实体在一块的共同主题是什么"
注意:以上全部是离线完成的,在用户查询之前就已经做好了。
查询阶段(在线)
GraphRAG 提供了三种查询模式:
| 查询模式 | 工作原理 | 适用场景 |
|---|---|---|
| Local Search | 围绕目标实体扇出到邻居节点,收集关联信息 | “A 公司的供应商有哪些”“X 事件涉及哪些角色” |
| Global Search | 利用社区摘要做跨社区的全局综合回答 | “这个数据集的核心主题是什么”“主要趋势有哪些” |
| DRIFT Search | 结合 Local 的实体细节和 Global 的社区语义 | 需要同时理解细节和全局背景的复杂问题 |
为什么 GraphRAG 有效——但不是因为"有图所以高级"
GraphRAG 的核心突破不是"用图替代向量检索"——它仍然用了向量检索来做初始匹配。它的核心突破是“把信息之间的关系显式化了”。
朴素 RAG 的检索结果是:[片段 A, 片段 B, 片段 C]——三个独立的文本块。
GraphRAG 的检索结果是:[实体 X(含属性 + 邻居 + 所属社区摘要)]——一个包含上下文关系的信息结构。
关键区别:后者的"信息结构"让 LLM 在生成时不需要自己推测片段之间的关系——关系已经刻在了图谱里。
这跟 OWL 本体推理有一个深层共鸣:本体帮你把推理逻辑前置到建模阶段(TBox 公理),GraphRAG 帮你把信息关系前置到索引阶段(知识图谱+社区结构)。两者都是"把推理从回答时移到准备时",从而在回答时获得更好的质量和更低的不确定性。
GraphRAG 的已知局限
GraphRAG 不是万能的。根据微软官方文档和社区反馈,有以下几个核心局限:
前置构建成本高:需要先跑完整个索引流程(文本切分 → 实体抽取 → 图谱构建 → 社区检测 → 摘要生成),LLM 调用量大,处理大规模语料的成本和时间都不可忽略。
实体抽取质量依赖 LLM:GraphRAG 的图谱是由 LLM 从文本中抽取出来的。如果 LLM 抽取的实体和关系不准确,后续的社区检测和摘要全部建立在错误的基础上。这是一个误差级联问题。
变动数据的增量更新是短板:GraphRAG 的索引是离线批处理。如果语料每天更新,你需要每天重跑索引——成本很高。对于实时变化的企业数据场景,纯 GraphRAG 的适用性受限。
缺少本体层的语义约束:GraphRAG 抽取的图谱是"LLM 认为的有关联",不是"人类确认的有必然逻辑关系的公理"。这在知识问答场景中够用,但在需要合规性、一致性检测的企业决策场景中不够用。
8.2 本体为 LLM 提供可解释性骨架
GraphRAG 和本体推理不是竞品
一个常见的误解:既然 GraphRAG 能自动从文本建图谱了,那手工建 OWL 本体是不是要被淘汰了?
不是。它们解决的是两个维度的问题。
| 维度 | GraphRAG | OWL 本体推理 |
|---|---|---|
| 知识来源 | 非结构化文本(邮件、文档、报告) | 领域专家的结构化知识 |
| 构建方式 | LLM 自动抽取 | 人工建模 + SWRL 规则编写 |
| 关系类型 | “有关联”(共现、名言关系) | “必然有关系”(公理、逻辑蕴含) |
| 推理能力 | 图遍历 + 社区摘要 | Tableau 推理 + 一致性检测 |
| 可解释性 | 引用源文本片段 | 公理链回溯 |
| 适用场景 | 知识问答、文档分析 | 合规验证、决策支持 |
GraphRAG 擅长的是"信息发现"——从大量的文档中帮你找到相关的实体和关系。本体推理擅长的是"逻辑验证"——确保找到的关系在逻辑上是自洽的。
两者的正确关系是互补:
- GraphRAG 作为前端:从企业海量文档中自动抽取知识图谱,回答"谁和谁有什么关系"
- 本体推理作为后端:对 GraphRAG 抽取的图谱做一致性验证和逻辑推理,回答"这个关系是否合规/是否有风险/是否需要决策"
本体为 LLM 提供的不是数据,是"推理框架"
回到本书的核心论点:LLM 和本体推理是互补的,不是竞争的。这一章把这个论点落到具体的技术架构上:
用户问题 → LLM 理解意图,分解为子问题 → GraphRAG 检索相关实体和关系(信息发现) → 本体推理引擎验证逻辑一致性(逻辑验证) → 规则引擎执行决策评估(决策支持) → LLM 将结果组织为自然语言回答(输出层)注意这个架构中本体推理的位置:不是在入口(不是让用户先建好 OWL 本体才能用),不是在出口(不是让 LLM 说完再由本体最后验证),而是在中间——在 GraphRAG 找到了"谁关联了谁"之后,本体引擎回答"这个关联是否合理/是否有风险/是否触发规则"。
这就是本书一直在讲的"本体不是替代 LLM,是补充 LLM"的具体工程实现。
为什么"可解释性骨架"这个比喻是准确的
如果 LLM 是一个肌肉发达但方向感差的巨人,RAG 是给他一个手电筒——让他看清脚下的路。GraphRAG 是给他一张地图——让他知道周围有什么。而本体推理是给他的骨架——让他的每一步动作都有结构支撑和可追溯性。
这个比喻的核心是:骨架不是用来让你跑得更快的,是用来让你跑得更稳、更可信的。在企业决策场景中,"可信"比"快"重要得多——一个不能解释"为什么拒绝了这笔贷款"的 AI 系统,在法律和监管意义上是不存在的。
8.3 实践:构建一个本体驱动的企业问答助手
这一节不讲理论,讲一个可复现的工程方案。
目标场景
一个中型制造企业,有 5000+ 份技术文档、合同、质检报告、供应商评估记录。业务部门经常需要问这样的问题:
- “我们的供应商 X 最近有没有出现过质量问题?”
- “如果更换供应商 Y,我们需要重新做哪些认证?”
- “最近三年的质检不合格率趋势是什么?最突出的问题是哪个环节?”
这些问题有三个共同特征:需要跨文档的信息整合、需要关系推理(不只是关键词匹配)、答案必须可追溯。
架构设计
三个核心组件:
组件 1:GraphRAG 索引管道(信息发现层)
文档库(PDF/DOCX/HTML) → 文本提取 + 切分 → GraphRAG 索引: - 实体抽取(LLM 调用) - 关系抽取(LLM 调用) - 社区检测(Leiden 算法) - 社区摘要生成(LLM 调用) → 知识图谱输出(实体节点 + 关系边 + 社区结构)注意:这里不需要任何手工本体建模。GraphRAG 自动从文档中抽取所有的实体和关系。这是零人工成本的"信息发现"。
组件 2:本体推理引擎(逻辑验证层)
GraphRAG 输出的知识图谱 → 手工编写 OWL TBox(关键领域的公理和约束) 例如:供应商关系的传递性(如果 A 是 B 的供应商,B 是 C 的供应商, 则 A 是 C 的间接供应商) 例如:"质检不合格"是"质量问题"的子类 例如:供应商合格证有有效期约束 → SWRL 规则层(业务规则) 例如:如果供应商在 12 个月内出现 2 次以上质检不合格, 则触发"供应商审查" → 推理引擎(HermiT + Pellet) - 将所有 GraphRAG 抽取的关系加入 ABox - 运行一致性检测 - 运行规则触发关键设计决策:TBox 是手写的,ABox 是自动填充的。
这对应了第一章的"本体工程的核心关注点是 TBox"。你的领域公理(“什么是供应商”“什么构成质量问题”)需要领域专家的精确建模,这些不能靠 LLM 自动抽取。但你的实例数据(“文档 3 提到供应商 X 在 2024 年 3 月质检不合格”)可以由 GraphRAG 自动填充到 ABox 中,再通过推理引擎做一致性验证。
组件 3:LangChain 问答编排(应用层)
用户自然语言问题 → LangChain Agent 路由: 1. 判断问题类型(问答 / 分析 / 决策) 2. 如果是分析类问题: → 先调 GraphRAG 检索相关实体和关系 → 将检索结果注入本体推理引擎的 ABox → 运行推理得到结论 3. 如果是决策类问题: → 先运行推理引擎的规则检测 → 再调 GraphRAG 检索支持性的文档片段 4. 组装回答: → 推理结论 + 源文档引用 + 推理链(可选)LangChain 的作用——编排,不是替换
LangChain 在这个架构中的角色是编排器(Orchestrator),具体做三件事:
- 路由:根据问题类型决定走 GraphRAG 检索路径还是本体推理路径
- 串联:把 GraphRAG 的输出(实体和关系)喂给本体推理引擎作为 ABox 输入
- 组装:把推理引擎的结论和 GraphRAG 的源文档引用合并为最终回答
LangChain 本身不做推理,不做本体建模,不建图谱——它是一个胶水层。这在企业架构中是最合适的定位:让 LLM 做意图理解和自然语言生成,让 GraphRAG 做信息发现,让本体推理做逻辑验证,让 LangChain 把这些串起来。
这个架构和纯 GraphRAG 的区别——一个具体例子
问题:“供应商 A 的原材料 X,最近有没有引发过质量投诉?”
纯 GraphRAG 的回答:
根据文档 47,供应商 A 在 2024 年 3 月收到过一次关于原材料 X 的外观缺陷投诉。文档 92 显示该问题已在 2024 年 4 月解决。
这是信息检索层面的回答——找到了相关文档,告诉了用户"有这个事"。
GraphRAG + 本体推理的回答:
根据文档 47,供应商 A 在 2024 年 3 月因原材料 X 的外观缺陷被投诉。该投诉已在 2024 年 4 月关闭。
推理分析:
- 缺陷类型"外观缺陷"属于"表面质量问题"(本体公理)
- 同一原材料 X 的供应商 B 在 2024 年 5 月也出现了外观缺陷投诉(GraphRAG 检索到的关联)
- 供应商 A 和 B 都从原材料生产商 C 采购 X(GraphRAG 发现的供应链关系)
- 推理结论:问题的根因可能不在供应商 A 或 B,而在上游原材料生产商 C 的批次质量
- 建议:对 C 发起供应商审查流程(SWRL 规则触发)
相关文档:[47] 投诉记录 / [86] 供应商 B 质检报告 / [112] C 公司与 A/B 的供货合同
差异:纯 GraphRAG 告诉你 “发生了什么”。GraphRAG + 本体推理告诉你 “这意味着什么,以及该怎么办”。
8.5 多模态数据的本体接入
数据科学家常问:图表、扫描件、非结构化文本怎么纳入本体推理?答案是分两步走——抽取和验证。
抽取层:LLM做多模态到结构化
| 数据形态 | 抽取方式 | 输出格式 | 示例 |
|---|---|---|---|
| 合同/报告(PDF扫描件) | OCR + LLM 信息抽取 | JSON结构化实体+关系 | 从采购合同提取"供应商名称、金额、条款" |
| 组织架构图(PNG/Visio) | 多模态LLM理解关系 | 实体-关系对 | “部门A向部门B汇报” |
| Excel/CSV业务表格 | Pandas解析+LLM语义理解列名 | RDF三元组 | 将"供应商评分表"转换为ABox断言 |
| 时序数据(传感器/IoT) | 时序数据库查询+阈值规则 | 触发型ABox断言 | “设备X温度连续3小时>85°C” |
验证层:本体检查抽取结果的逻辑一致性
LLM抽取的结构化数据不能直接入本体——必须经过本体一致性检查:
- 类型检查:LLM提取"供应商X的信用等级为优",本体检查
CreditRating类的定义域是否包含Supplier - 关系完整性:LLM提取"供应商X供应零件Y",本体检查
suppliesPart关系的定义域和值域是否匹配 - 矛盾检测:如果已有ABox断言"供应商X已停用",而LLM从新合同中提取"供应商X活跃",HermiT一致性检查会报告冲突
实践建议
- 不要跳过验证层:LLM的多模态抽取平均准确率在85-92%之间,15%的错误率在本体推理中会被放大——一条错误的事实可以导致推理链完全失效
- 抽取和推理分离:抽取层换模型(如从GPT-4换到Claude),不影响推理层的逻辑结构
- 人机协同的验证:对于高风险的结论(如涉及金额>100万的决策),LLM抽取的ABox断言需要人工确认后再入本体
本章小结
这一章在全书的位置很特殊。前七章一直在讲"手工建本体 → 推理机推导 → 企业决策",这条路径是精确但昂贵的。本章引入了另一条路径:GraphRAG 自动从文本中建图谱,低成本但精确度受限。
两条路径最终会在一个架构里汇合:
GraphRAG(低成本信息发现) → 输出实体和关系 → 填充到本体推理引擎的 ABox 层 → 在本体的 TBox(领域公理)和 SWRL 规则上推理 → 输出可解释、可追溯、可执行的决策建议这就是 LLM 时代本体推理的终极价值:不是替代 LLM 或 RAG,是把它们的输出从"信息"变成"结论"。
下一章——最后一章——回到地面:如果你要开始第一条企业决策推理链,从哪一步开始。
参考资料
[1] Edge, D., Trinh, H., Cheng, N., et al. (2024). “From Local to Global: A Graph RAG Approach to Query-Focused Summarization.” Microsoft Research. arXiv.
[2] Microsoft. GraphRAG 官方文档. https://msdocs.cn/graphrag/
[3] LangChain. GraphRAG Integration Documentation. https://langchain-graphrag.readthedocs.io/
[4] 阿里云开发者. (2024). “GraphRAG:基于 PolarDB+通义千问+LangChain 的知识图谱增强方案.” https://developer.aliyun.com/article/1611770
[5] 腾讯云开发者. (2025). “将微软 GraphRAG 输出到 Neo4j 并使用 LangChain 实现本地和全局检索.” https://cloud.tencent.com/developer/article/2505878