kuzu
嵌入式图数据库:列式存储+向量化查询引擎,兼容Cypher,原生支持向量搜索与全文检索
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
嵌入式图数据库:列式存储+向量化查询引擎,兼容Cypher,原生支持向量搜索与全文检索
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你正在开发一个社交网络应用,需要查询「某个用户的三度人脉中,有多少人同时喜欢摇滚乐和科幻电影」。在传统关系型数据库里,这类多跳查询往往要写几十行 SQL JOIN,查询时间随数据量呈指数级增长。而 Kuzu 把这件事变得像呼吸一样自然——一条 Cypher 语句,几毫秒出结果。
图数据库并不是新概念,Neo4j 自 2007 年问世以来就占据了这个赛道的半壁江山。但 Neo4j 作为独立服务器运行,需要额外运维,且在大规模数据场景下性能表现参差不齐。2019 年,卡内基梅隆大学数据库团队孵化了 Kuzu(意为「葛根」——一种快速蔓延的植物),目标明确:让图数据库能够嵌入应用程序进程,不依赖外部服务器,同时在大数据量下保持极致查询性能。 Kuzu 的核心团队后来创立了商业公司 Kùzu Inc.,2024 年该公司被慈善数据平台 Impact.com 收购,但开源项目仍保持活跃维护。2025年6月,KuzuDB 宣布 archive 归档,但强调现有版本可继续使用,0.11.3 版本仍可持续下载维护。
Kuzu 的技术选型极具特色。它采用 C++20 开发,存储层使用列式存储(Columnar Storage),查询处理则采用向量化执行器(Vectorized Query Processor)。列式存储意味着数据按列而非按行组织,这在分析型查询(OLAP)中能极大减少 I/O——查询某个属性的所有值只需读取一个列文件,而非整表扫描。 更关键的是 Factorized Query Processor(因子化查询处理器)。在传统数据库中,JOIN 操作会产生大量中间笛卡尔积,数据在多个算子之间重复传递。而 Kuzu 的因子化处理会将公共数据「折叠」为更紧凑的因子化表(Factorized Tables),相同值只存储一次,显著降低内存占用和计算开销。这篇设计论文被发表在数据库顶级会议 CIDR 2023。 Kuzu 还实现了 CSR(列式稀疏行)邻接表,用于高效存储图的边关系。每个节点的出边/入边以压缩格式连续存储,配合 CSR 索引实现 O(1) 级别的邻居定位,多跳查询不再需要全表扫描。
Kuzu 并不只是一个「传统图数据库」。它内置了 vector 扩展,支持向量索引(HNSW 算法),可直接在图中存储和检索 Embedding 向量——这意味着你可以用 Cypher 语法查询「与这段文本最相似的 5 个节点」。这对 AI Agent 的记忆层、知识图谱增强 RAG 等场景价值巨大。 同时 fts 扩展(Full-Text Search)提供内置全文搜索能力,无需引入外部 Elasticsearch。结合图的结构化查询能力,Kuzu 实际上是一个多模态查询引擎——结构化关系 + 向量相似度 + 全文关键词,三种能力合一。
Kuzu 提供了丰富的 API 绑定。通过 CMake 编译后,Python 包(pykuzu)、Node.js 包(kuzu)、Java(通过JNI)、Rust 以及原生 C API 均可调用。对于 Python 数据科学工程师,可以直接用 pip install pykuzu 安装,然后:
import pykuzu
db = pykuzu.Database("my_graph.db")
conn = db.connect()
conn.execute("CREATE NODE TABLE User (name STRING, age INT64, PRIMARY KEY(id))")
conn.execute("CREATE REL TABLE Follows (FROM User TO User, since INT64)")
conn.execute("MATCH (a:User)-[f:Follows]->(b:User) WHERE a.name = 'Alice' RETURN b.name")
这比启动一个 Neo4j 容器、配置 Bolt 协议、引入 driver 依赖要简洁得多。Kuzu 数据库文件从 v0.11.0 起从目录变为单文件(约等于数据库即文件),进一步简化了分发和备份。
Kuzu 提供了丰富的官方扩展生态:
ghcr.io/kuzudb/extension-repo)分发,v0.11.3 版本已预装 algo、fts、json、vector 四个常用扩展。Kuzu 的定位是嵌入式分析型图数据库,不适合事务型写入(OLTP)场景。它没有内置的用户认证和访问控制,事务隔离级别为 Serializable(最高),但在高频写入并发场景下表现有限。 其次,从源码编译有一定门槛——需要 CMake 3.15+ 和 C++20 编译器支持,编译时间在普通笔记本上可能超过 30 分钟。没有提供预编译的 Docker 镜像,部署到生产环境需要自行打包。 最后,项目于 2025 年中宣布 archive(归档),虽然社区版仍可下载使用,但官方扩展服务器已不再维护,新功能开发可能放缓。
Kuzu 代表了图数据库领域的几个重要趋势: