大家好,我是何三,独立开发者

之前写 RAG 应用的时候,我真的很崩溃。

装个 PostgreSQL 存用户数据,装个 Milvus 做向量检索,再装个 Neo4j 搞知识图谱,最后还得写一堆胶水代码把这些东西串起来。三个数据库,三套 API,三个部署流程,加一个中间层。

一个 AI 应用还没写,光搭基础设施就花了一周。

直到我翻到了这个项目——HelixDB。近 5000 Star(确切是 4.8k+),YC 孵化,Rust 写的,一个数据库同时干了图、向量、KV、文档四件事。

而且,它居然还自带了 MCP 协议支持

什么意思?你的 AI Agent 可以直接连上它,不需要写任何适配层。

一个数据库,而不是四个

先说我看到这个项目的第一反应。

没懂作者为什么这么设计。图数据库就好好存图,向量数据库就好好做搜索,硬塞到一块儿,不会是缝合怪吧?

看完文档后,我收回这句话。

HelixDB 的核心数据模型是图 + 向量。每个节点可以有属性(像文档),可以连关系(像图),属性上可以建向量索引(像向量库),还能做 BM25 全文检索。

HelixDB 架构图

说白了——它用一张底层存储,把四种数据库的事情全干了。你不需要在不同数据库之间倒数据,不需要写 ETL 管道,不需要维护多个集群。

这个思路,怎么说呢……就是那种你一直想要但没人做出来的东西。

装一个顶四个?上手试试

安装体验让我有点意外。

一条命令:

curl -sSL "https://install.helix-db.com" | bash

装完之后,更骚的操作来了——helix chef

这是个一键引导器。你告诉它你想做什么,它帮你初始化项目、启动本地实例、灌示例数据,甚至——如果检测到你有 Claude Code 或 Codex——它会自动帮你把整个应用搭起来。

我试了一下,输入"建一个知识图谱,存 GitHub 仓库和贡献者的关系,支持语义搜索"。

几分钟后,它生成了一整个能跑的项目。

说真的,用 Rust 写出这玩意儿,真的服。

helix chef
# 然后回答一个自然语言描述
# 它帮你搞定一切

手动启动也不复杂:

mkdir my-helix-app && cd my-helix-app
helix init
helix start dev

默认运行在 localhost:6969。端口都选得这么骚。

用 Rust 写查询?这波操作我没想到

HelixDB 的查询是用 Rust 或 TypeScript 的 DSL 写的。

等等——用宿主语言写数据库查询?

我第一次看到这个设计的时候,说实话,有点懵。

后来理解了它的逻辑:查询在编译期被校验,错误提前暴露,而不是等到运行时才报错。而且 Rust 的宏系统让查询 DSL 用起来极其自然。

use helix_db::Client;
use helix_db::dsl::prelude::*;

#[register]
pub fn add_user(name: String) {
    write_batch()
        .var_as("user", g().add_n("User", vec![("name", name)])
            .value_map(None::<Vec<String>>))
        .returning(["user"])
}

#[register]
pub fn get_user(name: String) {
    read_batch()
        .var_as("user", g().n_with_label("User")
            .where_(Predicate::eq("name", name))
            .value_map(None::<Vec<String>>))
        .returning(["user"])
}

#[tokio::main]
async fn main() {
    let client = Client::new(None).unwrap();

    let new_user = client
        .query::<sonic_rs::Value>()
        .dynamic(add_user("John Doe".to_string()))
        .send()
        .await
        .unwrap();
    println!("new user: {:#}", sonic_rs::to_string_pretty(&new_user).unwrap());
}

这是 Rust SDK 的写法,增删改查都写在 #[register] 函数里。HelixDB 内部有一个叫 HelixQL 的中间语言,而 SDK 只是把 DSL 编译成这个中间语言再发给服务端。

翻译一下:写代码的时候 IDE 就能提示你写错了,不用等跑起来才报 500。

如果不用 Rust,TypeScript 也支持:

import { g, readBatch, writeBatch, Predicate, PropertyInput } from "@helix-db/helix-db";

function addUser(name: string) {
  return writeBatch()
    .varAs("user", g().addN("User", { name: PropertyInput.value(name) })
      .project(["name"]))
    .returning(["user"]);
}

这套 DSL……怎么说呢,刚开始会觉得有点奇怪,习惯了之后发现比写 SQL 还顺手。因为它是类型安全的。

跟 Neo4j 打了一架,还赢了

HelixDB 的团队在博客里发了 benchmark 数据——跟 Neo4j 和 PostgreSQL(用表 join 模拟图关系)做了对比。

结果?在真实的图数据集上,HelixDB 的查询性能全面领先。

当然,benchmark 这东西,看看就好,实际性能取决于你的数据模型。但至少说明它不是来凑数的。

它的向量搜索用的是 HNSW 算法,这是目前最主流的近似最近邻搜索算法——跟 Milvus、Qdrant 这些专用向量库用的是同一套东西。所以向量搜索能力不是"能用"的水平,而是生产级。

MCP 协议:给 AI 智能体准备的礼物

这个才是让我真的觉得"卧槽"的功能。

HelixDB 内置了 MCP(Model Context Protocol) 支持。MCP 是 Anthropic 推的一个标准协议,让 AI Agent 能直接连接外部工具和数据源。

大多数数据库要支持 MCP,得自己写一个中间适配层。而 HelixDB 直接原生支持——你的 AI Agent 可以通过 MCP 直接查询 HelixDB 里的知识图谱,不需要任何胶水代码。

说白了,如果你的 AI 应用需要长期记忆企业知识库上下文管理,HelixDB 是市面上少有的开箱即用方案。

同类工具怎么看

这个赛道上,最接近的竞品可能是 Neo4j + 向量插件,或者 SurrealDB(也是一体化数据库)。

Neo4j 做了很多年,生态成熟,但向量搜索是后来加的插件,性能一般,而且——贵。企业版一年几万刀。

SurrealDB 也支持多模型,但用了一种叫 SurrealQL 的自研查询语言,学习成本比 HelixDB 的 Rust/TS DSL 高不少。

HelixDB 的优势很明显: - Rust 写,性能好 - 编译期校验 - MCP 原生支持 - YC 背景,社区活跃

但劣势也有——项目还比较新,生态不如 Neo4j 成熟,中文资料基本没有。

如果只是做个小项目自己玩,用 HelixDB 很爽。如果是大厂核心系统,可能还得观望一下。

觉得这工具有意思?我上周还写过《自建 AI 工作台的 N 种姿势》,关注后回复「ai」就能看到。

GitHub 地址:https://github.com/HelixDB/helix-db

总结

一个数据库顶四个,Rust 写的性能不掉链子,MCP 协议让 AI Agent 开箱即用。

HelixDB 不是那种"能跑就行"的项目,它在设计上的很多选择——编译期查询校验、宿主语言 DSL、MCP 原生支持——都让我觉得,这团队的思路确实不一样。

原理大概就是这样,细节可能有出入——有懂的大佬欢迎指正。

装不装都行,看你自己。但建议你先 star 一下,万一哪天用上了呢。

本文使用 MGO 编辑并发布

关注"何三笔记",回复"mgo" 免费下载使用