LabHub

博客

知识图谱工具与框架地图 — 什么时候该选什么

한국어English日本語中文

引言 — 需要的是地图,不是图钉

知识图谱工具的地形,在过去两年里爆发了。光是图数据库就有六个值得认真考虑,RDF 栈有二十年的历史,图 RAG 框架几乎每个月都有新的冒出来。这类文章常见的失败,是罗列三十个链接就完事。链接清单已经足够多了。

所以本文画一张地图。每个类别,都讲 拿它做什么、两三个代表性工具,以及什么时候该选什么。这是本系列实用意义上的最后一篇 — 走过为什么要用图 RAG如何构建图如何把领域建模为本体,如今终于来回答「那么,到底该用什么」。

先摆一个诚实的前提:工具是会变的。就在写这篇文章的过程中,一个知名的嵌入式图 DB 就被归档了。所以,比起工具的名字,我把 挑选的标准 写得更用心,好让它能留得更久。

大分岔 — 属性图 vs RDF 三元组存储

无论你最终选什么,第一个分岔口都是数据模型。这里有两大家族。

属性图给带标签的节点和边挂上任意的键值属性。形式化模式(schema)不是必需的,对开发者友好,用 Cypher(以及在 2024 年成为 ISO 标准的 GQL)、Gremlin、GSQL 来查询。

// 属性图 (Cypher): 实用,模式可选
CREATE (a:Person {name: 'Ada'})-[:WORKS_AT]->(c:Company {name: 'AE Ltd'})

RDF 三元组存储以(主语、谓语、宾语)三元组来保存,用全局 IRI 标识实体,用 RDFS/OWL 定义形式化本体(ontology),并且能跑逻辑推理。你用 SPARQL 查询它;因为是 W3C 标准,跨组织的互操作性很强。

# RDF (SPARQL): 全局标识符、形式化词汇、可推理
SELECT ?person WHERE { ?person a :Person ; :worksAt ?org . }

诚实的判断标准是这样的。大多数 LLM 与图 RAG 应用,适合用属性图。 它的仪式(ceremony)更少,处理那些抽取出来、混着噪声的图时也更宽容。要动用 RDF,是在你需要形式化语义的时候 — 多个团队或组织共享的词汇、逻辑推理、合规与标准、数据集成。本体到底要形式化到什么程度,我在领域本体篇里另外讲过。

顺带一提,Amazon Neptune 两者都支持(属性图用 openCypher/Gremlin,RDF 用 SPARQL)。所以「已经在 AWS 上了」本身就是一个很强的理由。

图数据库 — 什么用在哪里

我按实用标准把六个分一分。

嵌入式 vs 服务器,这样区分。原型、笔记本、单节点,就用嵌入式(Kùzu)。要并发、要生态、要上生产,就用服务器(Neo4j)。想要托管,就选 Neptune 或 AuraDB。

RDF 与本体栈 — 当你需要形式化语义

如果你踏上了 RDF 这条路,工具组合大体是这样的。

挑选标准:原型、Python 就用 RDFLib。开源的生产级 RDF 应用就用 Jena(+Fuseki)。需要推理和规模的企业级三元组存储就用 GraphDB(或 Stardog)。做数据管家(data stewardship)的组织就用 TopBraid EDG。撰写本体,随便在哪都用 Protégé。

图 RAG 框架 — 自己搭,还是自带电池

在这里,用两个维度来切分,选择就会变简单。(1) 是自带电池的流水线,还是组装部件;(2) 批量索引是重还是轻。

自己搭 vs 自带电池的诀窍:如果你只是想把实体和关系塞进自己的图里,那么 LangChain/LlamaIndex 的抽取器、或者一次普通的 LLM 调用就够了。Microsoft GraphRAG 只有在你真正需要它那套社区摘要、全局查询的机器时,才对得起它的成本。

向量 + 图 — 嵌入的位置

一个常见的误解,是把向量还是图看成二选一。现代的默认答案是 混合

向量检索负责模糊的语义回忆(「像这样的段落」),图遍历负责精确的多跳关系(「X 与 Y 是怎么连上的」「Z 会影响到的一切」)。标准套路是这样的 — 把节点和分块做嵌入,用向量检索找到入口点,再从那里遍历图,把连带的上下文牵引进来。neo4j-graphrag 的 VectorCypherRetriever 正是这个形状。

而且如今大多数图 DB(Neo4j、Kùzu、Memgraph、Neptune Analytics、GraphDB、TopBraid)都内置了向量索引。所以很多时候,你并不非得再来一个单独的向量 DB。嵌入也用在 构建 图这件事上 — 把相似节点连起来的实体解析(entity resolution)就是一个例子,TopBraid EDG 8.0 的向量 DB、txtai 的语义图,做的就是这件事。

什么时候不该用图

放上诚实的另一头砝码。如果你的问题用单跳相似度就能解(「找关于 X 的文档」「帮我把这份政策总结一下」),那么普通的向量 RAG 更简单、更便宜、更快,而且已经够用。图会加上抽取流水线、存储、模式、遍历逻辑 — 而其中的每一样都可能出错。

图能对得起成本,只在你需要下面这四样之一的时候:多跳推理、关系感知的检索、覆盖整个语料库的全局综合、可解释的来源追溯。如果你说不出这里面到底需要哪一样,那答案多半就是向量 RAG。怎样先把检索的基本功扎扎实实打好,我整理在生产级 RAG 模式里。

还有一点 — 建在糟糕抽取之上的图,比没有图更糟。 构建的质量决定了一切(参见图构建篇)。

决策流程

压缩成一页,就是这样。

1. 问题需要关系吗?
   (多跳、「X 与 Y 是怎么连上的」、整个语料库的主题)
   否   -> 普通的向量 RAG。到此为止。别去建图。
   是   -> 继续。

2. 需要形式化语义吗?
   (逻辑推理、跨组织共享的词汇、标准与规制)
   是   -> RDF 栈: 用 Protege(OWL)撰写、存进 Jena/GraphDB、用 SPARQL 查询。
   否   -> 属性图 (见下)。

3. 选图 DB:
   本地 / 笔记本 / 单节点  -> Kuzu (注: 2025 年仓库归档,社区分叉)
   生产服务器、最大生态    -> Neo4j
   实时 / 流式更新         -> Memgraph
   AWS 托管                -> Amazon Neptune
   图 + 文档放进一个存储   -> ArangoDB
   超大规模并行深链分析    -> TigerGraph

4. 选图 RAG 层:
   「整个语料库的主题」综合    -> Microsoft GraphRAG (成本用 LazyGraphRAG 解决)
   押注 Neo4j、想要 1st-party  -> neo4j-graphrag
   已经在某个框架里            -> LlamaIndex PropertyGraphIndex / LangChain
   持续的智能体记忆            -> Cognee
   轻量 / 本地 / 主题探索      -> txtai 语义图

结语

是地图,不是图钉。工具会摇摆 — Kùzu 就是今年的证据。不摇摆的是问题本身。属性图还是 RDF,不是赶时髦,而是 语义 的问题;图还是向量,不是炒作,而是 关系 的问题。先回答好这两个,再去挑工具。

至此,我们走到了这个系列实用意义上的终点。为什么要用图 RAG讲了理由,图构建讲了怎么建,领域本体讲了建模,而这一篇讲了工具。再把那篇为「图用得过头」时准备的生产级 RAG 模式也放在手边,这张地图就足够了。

最诚实的最后一句:最好的图项目,通常是能回答问题的那个最小的 — 而有时候,那意味着压根不用图。

参考资料

评论

还没有评论。

登录后即可发表评论