作者:Daniel Davis
原文:https://dev.to/jackcolquitt/the-context-graph-manifesto-2a8m
两年前,当Mark Adams和我启动了如今已落地为TrustGraph的项目时,我们就知道图结构对于实现人工智能技术的潜力至关重要,尤其是是大语言模型(LLM)。
我一直不太喜欢“RAG”(检索增强生成)这个词,事实上我们一直避免将TrustGraph称为“RAG平台”,因为它远不止于此。而这始终是关键所在——要充分发挥大语言模型的潜力,仅仅依靠RAG是不够的。
当然,我并不是说你只需要图谱就够了,我也一直不太喜欢 GraphRAG 这个术语(尤其是在微软盗用了这个术语之后),因为再说一遍,你需要的不仅仅是图结构。
我始终认为 “场景工程”(Context Engineering) 是更贴切的说法,只是它此前未引起广泛的关注,或许当下迎来了转机?好友柯克・马普尔(Kirk Marple)近期发布文章《智能体真正需要的上下文层》引起了我的注意。该文是作为对Foundation Capital的Jaya Gupta、Ashu・Garg的推文《人工智能的万亿美元机遇:场景图谱》(你或许也读过)的回应,这也让我开始深入探讨这一方向。
那么...什么是场景图谱?
考虑到我们研究这个问题已经一段时间了,而且TrustGraph开源近一年半的时间,我觉得自己有资格给出一个定义。简单来说,场景图谱是一种针对人工智能优化的数据三元组表示。听起来很简单,对吧?几年前我刚开始研究知识图谱的时候也是这么想的……
模糊性难题:什么是知识图谱?
问得好,不开玩笑——你只要让一群知识图谱专家围坐在一张桌子旁,提出这个问题,然后等着看他们开始争论吧。而且,我说的“争论”可不是开玩笑。知识图谱社区对“正确”的做法有着近乎狂热的执着。想象一下,就像在推特上讨论政治,只不过用的是晦涩难懂的信息论和语言学的术语。
或许这个术语最大的推动者是来自Neo4j的菲利普 拉斯尔(Philip Rathle),Neo4j提供了最知名的用于存储知识图谱的图数据库系统。但问题也由此产生:知识图谱究竟是存储的内容,还是存储内容的方式?或者它不仅仅是知识图谱,它也是一个图数据库。这种区别至关重要,但二者之间的界限却很模糊。
尽管菲利普竭尽全力,“知识图谱”这个术语仍然含义模糊。Neo4j 的宣传重点在于它是一个“图数据库”。“知识”一词本身就难以捉摸,人们对信息和数据有着深刻的理解,但知识究竟是什么?它是丰富数据的结果吗?还是能够利用数据采取行动才能获得知识?这些问题没有明确的答案,这也是相关讨论如此激烈的原因之一。
这只是个模型
归根结底,知识图谱是一种数据模型——它定义了你如何组织数据。在不同的规模下,有很多方法可以实现这一点。我本来可以跑题,从 Lakehouse 入手,谈谈 Apache Iceberg、dbt 以及文件/对象存储。这些也都是数据,对吧?当然,当你谈论的是 Petabytes (或者现在更常见的 Exabytes )数据时,它们当然是数据。也许最令人困惑的地方就在于:同样的术语,在不同的场景中有着不同的应用方式。
数据分为三部分:三元组
一切都与这个三角相关:
主语 → 谓语 → 宾语
Subject-Predicate-Object
就是这样,人们谈论知识图谱时,通常指的是三元组的集合。三元组表示两个数据点之间的关系。直到 20 世纪 90 年代,使用“动词”而不是“谓词”仍然很常见。例如,如果 Alice 是 Bob 的母亲,你可能会用动词来表达:
- 爱丽丝 → 有 → 孩子
- 鲍勃 → 是 → 孩子
或者加上谓词:
- 爱丽丝 → 是鲍勃的母亲 → 鲍勃
有很多方法可以对这种关系进行建模,但谓词允许你在单个三元组中建模更多信息。在“动词”的例子中,Alice 和 Bob 之间并没有直接联系,需要额外的三元组才能稳健地连接它们。但同样,有很多方法可以做到这一点——这也是相关争议激烈的原因。
从动词到谓语
正如我常说的,这些概念并不新鲜。“谓词”一词源于谓词逻辑,其起源可以追溯到19世纪。谓词在知识图谱中的应用出现在20世纪60年代,伴随着“语义网络”的兴起。而互联网的兴起和语义网的构想将“谓词”推向了主流视野。
语义网和RDF
随着互联网在 20 世纪 90 年代和到21 世纪初这期间规模的不断扩大,技术专家开始提出这样一个问题:自主系统之间如何交换信息?这个问题听起来是不是很熟悉?它是现代互操作性挑战的基础,就像MCP还有A2A——只不过这些方法把它当作新事物来对待,而实际上语义网社区早在20世纪90年代就开始考虑这个问题了。我个人曾在航空航天工业中使用过可互操作的网络“协议”,这些协议起源于20世纪60年代,至今仍在沿用。
RDF(资源描述框架,Resource Description Framework,RDF)通过引入类、类型、范围和严格的语法规则,为三元组概念增添了结构。语义网旨在通过提供一个任何人都可以使用的标准框架,使知识表示成为主流。许多人对RDF感到奇怪的地方在于它使用URI(统一资源标识符,Uniform Resources Identifiers,URI)——通常以URL的形式出现。为什么要使用网址作为标识符?其愿景是实现互操作性:拥有全局唯一的标识符可以确保两个使用相同URI的系统指向同一个实体。URL本身重要吗?不重要,这很容易让人产生误解。
RDF 支持多种序列化格式。RDF/XML 遵循 XML 结构,但对人类来说极其难看。N-Triples 只是一个包含主谓 URI 的三元组列表——虽然更简单,但仍然难以阅读。喜欢 JSON 的用户可以选择 JSON-LD。Turtle 是最易读的格式,它优雅简洁,但对缩进和空格的要求非常严格。
RDF 已经非常成熟且强大。然而,自学 RDF 几乎是不可能的——这正符合“部落知识”的定义。如果没有 TrustGraph 的联合创始人 Mark Adams 专门为我撰写的指南,我永远都无法搞懂它。准确的RDF教程很难找到,很多在线文章要么是错误的,要么带有单一视角,存在偏见。
了解RDF技术栈
人们谈到“RDF”时,通常指的不仅仅是基本的RDF标准。RDF本身定义了三元组,但它还叠加了其他补充标准,RDFS(RDF Schema)在此基础上添加了类型、属性和结构约束。
网站本体语言(Web Ontology Language,OWL)是RDFS的扩展,它增加了丰富的本体功能。实际上,人们不会说“我正在使用RDF和RDFS”,而是将它们视为一个整体生态系统。当我们提到“RDF”时,通常指的是这一系列层层叠加的技术,每一层都建立在前一层的基础上。
属性图谱
在开始讨论之前,请系好安全带,深呼吸。我并无恶意——我只是想帮助大家解释一些非常令人困惑的概念。是的,我即将深入探讨一些非常有争议的论点。
三元组由主语、谓语和宾语 (S, P, O) 组成,但在图论中,常用的术语还有节点(nodes)、边(edges)和弧(arcs)。节点代表主语,两个节点相连时,它们之间的关系称为边(有时也称为弧,在欧洲文献中更为常见)。三元组中的宾语则较为复杂:宾语可以是属性(与节点关联的字面值),也可以是关系(与其他节点的链接)。
这就是属性图谱和RDF的根本区别所在:属性图严格区分属性(与字面值的连接)和关系(与节点的连接),这是一个清晰的区分。在RDF中,可以使用OWL来指定事物之间的关系,并使用RDFS范围声明来定义允许的对象类型,这比属性图谱提供了更大的灵活性。RDF功能更强大,但属性图谱更容易理解。
另一个关键区别在于:属性图允许在边上定义属性。虽然在RDF中也可以建模类似的内容,但边属性提供了一种更简便的方法,而RDF中的实现则相当复杂。这正是属性图方法的真正优势所在。
至于标准方面:RDF 是一套模块化、分层的标准体系——各种相互竞争的方案都经过了测试,最终在实际应用中脱颖而出。然而,属性图却缺乏正式的标准,不过Cypher(源自 Neo4j)通过广泛应用成为事实上的行业标准。其他属性图工具虽然也实现了Cypher,但大多是其变体版本。最近,这种实际应用影响了 ISO 标准的制定。
与模块化的 RDF 生态系统不同,Cypher 和 GQL 更像是单一标准,没有采用推动RDF实现跨越式发展的分层开发模式。
本体论
最近关于本体论的讨论很多,我们推出了TrustGraph 中的自定义本体功能,甚至有人使用了“本体论RAG”(OntologyRAG)这个词,但本体论究竟是什么呢?
为了理解本体论,区分四个相关但又不同的概念很有帮助:
- 词汇表(Vocabularies):词语的易于理解的定义
- 分类法(Taxonomies):领域特定术语的易于理解的层级结构和定义
- 模式(Schemas):用于存储和检索的机器可读数据表示
- 本体(Ontologies):术语的机器可读定义、术语层级结构及其关系
OWL(Web本体语言)是最常见的本体之一——它是RDF的扩展,旨在构建结构化分类。SKOS(简单知识组织系统,Simple Knowledge Organization System)是另一个有趣的本体,它比 OWL 更注重概念,但从未得到广泛采用。Schema.org可能是最知名的本体——它是语义网的直接扩展,试图为网站上出现的所有类型的信息创建一个细粒度的分类。
本体本质上是语义网的一个概念,源于信息互操作交换的愿景。但这并不意味着本体只能用于三元组存储——你也可以将本体用于属性图,区别在于概念的起源及其主要应用场景。
没有唯一的“正确方法”
做这些事情并没有“正确”的方法。你可以使用RDF或属性图来存储相同的信息。这一点至关重要:无论任何“专家”怎么说,你都可以将相同的信息存储为三元组存储、属性图,甚至是连接表。选择哪种方式取决于哪种方式最适合你的用例、团队的专业知识以及你的运营需求。
事实上,TrustGraph 的默认图存储是 Apache Cassandra。我记得第一次告诉 Neo4j 的 Philip Rathle 我们的默认图存储是 Cassandra 时,他真的以为我在开玩笑。当我提到我们的一位用户在 Cassandra 中通过 TrustGraph 加载了超过十亿个节点和边时,他更加怀疑了(别担心,Philip,我知道 Neo4j 永远是你心中的第一)。令人惊讶的是:这位用户完全可以使用 Neo4j。TrustGraph 可以将图构建为 Cassandra 中的 RDF 三元组存储,或者将其转换为 Neo4j 存储格式。一个是三元组存储,另一个是属性图,这重要吗?我们构建的智能体似乎并不在意。
机器可读性VS人可读性
尽管我们对大语言模型(LLM)的生成能力感到惊叹,但或许其最大的颠覆性在于它能够同时处理人类可读和机器可读的数据。LLM可以理解文本、图像、软件代码、复杂模式和本体。它不仅能够理解这些数据,还能以所有这些格式的组合输出结果。
信息系统不再受限于为特定模式和本体构建自定义检索算法。LLM 可以动态生成结构和检索逻辑,这就引出了一个有趣的问题:将机器可读数据与人类可读数据存储在一起是否有意义?
我们的实验工作正是在这里展现出其价值。我们测试了各种上下文结构——CSV 文件、基于符号的表示形式(例如“->”)、项目符号列表和编号列表。我们想当然地认为,使用更简洁的结构,LLM 的输出性能应该会更好,对吧?然而事实并非如此。尽管增加了token消耗,但使用 Cypher 或 RDF 等更复杂的结构化格式提供上下文,反而提高了响应速度。为什么呢?因为结构本身就包含信息。当 LLM 遇到 Cypher 或 RDF(它可以流畅地读取这些格式)时,结构本身就编码了关于节点、属性和关系的信息,语法本身就蕴含着意义。
数十年的成熟图算法
在我们抛弃数十年积累的知识之前,我们应该意识到那些成熟的图检索算法正等待着被充分利用:图遍历深度优化、聚类分析、密度计算、异常值检测等等。这些技术能够从图结构本身建立数据之间的关系,LLM似乎已经能够凭直觉做到这一点,我们难道不应该感到惊讶吗?
前沿:时序性场景
今年早些时候,我曾与尼科・杰罗尔德一同做客《人工智能的构建之道》播客节目(2025 年 2 月 13 日播出的《时序检索增强生成:借时间维度打造更智能、更可靠的知识图谱》一期),在节目中我就提到:时序关联是解锁数据深层理解的下一个前沿方向。尽管直面这一问题会让人感到棘手,但 “真相” 的概念本身往往模糊难辨。确立基准真相的一种方式,是找到具备恒定性的观测结果—— 即某个数据维度的事实,过去始终如此,未来也将保持不变。但问题是,仅凭单次观测结果,我们真的能确立所谓的真相吗?
当我们开始观察数据随时间的变化时,就可以评估信息是“新鲜的”还是“过时的”。我们本能地会认为新数据更值得信赖。然而,事实并非总是如此。以当代的UFO/UAP研究为例。
我在上世纪80年代长大,那时关于不明飞行物和外星人的话题是禁忌。即使到了90年代中期,像《X档案》这样的剧集在黄金时段热播,喜欢这类题材的人也难免会被贴上“怪人”的标签。而如今,我们已有《揭秘时代》这类纪录片,现任政府官员会在片中公开探讨这一话题。社会文化的态度已然转变:从将其当作边缘话题嗤之以鼻,到坦然思考一个问题 —— 政府最终是否会正式承认相关真相。
但问题在于:数据实际上并没有发生太大变化。几十年前经过精心研究并记录在书中的观察结果,与今天讨论的观察结果基本相同。超过50年的重复观察就能确立事实吗?当我们让语言大模型分析这些信息时,我们应该优先考虑那些看起来仍然“新鲜”且有据可查的50年前的数据,还是那些缺乏观察验证的较新数据?新鲜度和时效性并不等同于准确性和精确性。仅仅因为数据陈旧晦涩,并不意味着它就无效。
互操作性的新范式
MCP 和 A2A 的目标是实现一个崇高的目标——互操作性。历史证明,这从来都不是一件容易的事。我个人在使用互操作系统方面的经验告诉我,无论目标多么崇高,设计能够不断发展且不会因复杂性膨胀而成为负担的互操作标准,几乎是不可能完成的任务,语义网未能实现的愿景就是一个例证。然而,LLM 提供了一个新的机遇:它们使我们能够以前所未有的方式处理动态本体。
过去,本体必须是静态的,以便构建能够理解它们的检索算法。LLM 可以动态地“读取”和理解本体——正如我们在 TrustGraph 中最近展示的本体功能一样。或许 LLM 最终将实现语义网的愿景,但会采用略有不同的数据结构和更灵活的实现模式。
发展历程:从RAG到场景图谱
我们正在经历的人工智能之旅遵循着清晰的进程:
1. 逻辑学习模型可以根据其训练数据回答问题。
2. RAG 出现:我们向提示信息中填充文本块以增加知识,意识到仅靠 LLM 训练数据是不够的,因此我们使用基于向量嵌入的语义相似性搜索来查找文本块。
3. GraphRAG 应运而生:我们突破了文本块和语义相似性搜索的局限,采用灵活的知识表示,可以进行导航和改进,从而更好地控制实体、概念等之间的丰富关系。
4. 本体 RAG:我们控制加载到图中的内容,使用结构化本体来提高精确度和召回率,并以更高的粒度标注关系以进行检索。
这种发展过程很有启发性,步骤 3(GraphRAG)对现有图算法的使用非常有限,步骤 4 则从工具箱中调用了本体,我们实际上仅仅触及了图工具功能的冰山一角。
这就是我们目前的处境。接下来会发生什么?
5. 针对不同数据类型的信息检索分析:我们针对时间序列数据、对精度要求较高的数据、异常情况、聚类以及其他特定领域的信息检索挑战,开发了专门的检索策略。
6. 自描述信息存储:这类信息系统携带关于自身结构的元数据,使得检索算法能够自动适应所遇到的信息。
7. 动态信息检索策略:LLM 可以从学习到的模式中进行泛化,从而针对从未见过的信息类型推导出完整的信息检索策略。
8. 闭环实现自主学习:系统重新吸收其输出,并用元数据标注生成数据,从而可以调整新信息的检索方式(相对于“旧”数据),并且还能调整“旧”数据的结构,这正是真正能够学习的自主系统梦寐以求的目标。
场景图谱代表了众多信息论学者毕生致力于追求的愿景,其中蕴藏着巨大的机遇。
构建时代
正如Kirk和我最近在《2025RAG现状》博客讨论的那样,我们都倾向于相信那些被承诺的创新终将到来——只是不会像炒作宣传的那样迅速。LLM正是这两种因素共同作用的例证,LLM 的发展速度惊人,达到了很高的成熟度。然而,LLM 如此迅速地走向成熟,也导致了如何充分发挥其潜力的空白,场景图谱应运而生。
如果我们看看人工智能领域的领导者,比如Ilya Sutskever 和Yann Lecun,他们两人都已从大语言模型(LLM)转而投身人工智能领域的“下一个重大突破”,创办了旨在成为长期研究机构的企业。那么,这个“下一个重大突破”何时到来呢?很可能需要量子计算达到规模化应用——而这本身就是一个巨大的问号。目前大多数量子计算仍然是将量子方法与不同程度的经典计算相结合(自晶体管发明以来,我们一直沿用这种计算方式)。
或许,真正促成变革的并非“单一因素”,事实上,这种情况很少发生。LLM的飞速发展得益于数据的可用性、计算能力的快速提升以及大量资金的涌入,场景图谱会成为人工智能领域下一个重大突破的关键推动因素吗?我们认为会。
了解更多信息:
Documentation: https://docs.trustgraph.ai
GitHub Repository: https://github.com/trustgraph-ai/trustgraph
Discord Community: https://discord.gg/sQMwkRz5GX
Website: https://trustgraph.ai