返回

文章详情

展示 HN: HelixDB - 基于对象存储构建的图数据库

Hacker News2026年6月10日 15:47

HelixDB 是一个数据库,旨在让您在一个平台上轻松构建 AI 应用程序所需的所有组件。您不需要单独的应用程序数据库、关系数据库、向量数据库、图数据库或管理多个存储位置的应用层。HelixDB 为您的代理提供对公司数据的联合访问,适用于内存、公司大脑和应用程序。Helix 主要采用图 + 向量数据模型,但同时也支持 KV、文档和关系数据。 开始使用 1. 安装 CLI Helix CLI 运行和管理本地实例,并与 Helix Cloud 通信。 curl -sSL "https://install.helix-db.com" | bash 已经安装?使用 helix update 更新到最新版本。 2. 最快速路径 — helix chef helix chef 是一个交互式的一次性引导工具。它安装 HelixDB 查询技能和文档 MCP,搭建一个项目,启动本地实例,填充一些示例数据,并写入 HELIX_CHEF_PROMPT.md。如果有可用的编码代理(Claude Code、Codex 或 OpenCode),它可以交接并从您想要的内容的一行描述中构建一个完整的应用程序—前端及所有组件。 helix chef 就这样 — 不需要任何标志。回答“您想构建什么?”并按照提示操作。 3. 手动本地设置 如果您更愿意自己进行配置:初始化项目。这会搭建 helix.toml、.helix/ 工作目录,以及一个随时可以运行的 examples/request.json。 mkdir my-helix-app && cd my-helix-app helix init 启动本地实例。在 6969 端口上运行一个后台容器,等待接受查询。 helix start dev ⚠️ 默认存储模式是内存 — 停止实例会清除数据。使用 helix start dev --disk 以在重启之间持久化数据,或使用 --foreground 来流式传输日志。 发送查询。 helix query dev --file examples/request.json 完成后停止实例。 helix stop dev 使用 SDK 编写查询 查询使用 Rust 或 TypeScript DSL 编写,并直接作为动态请求发送到正在运行的实例,POST /v1/query — 不需要构建或部署步骤。两个 SDK 生成相同的 JSON AST。以下示例与 http://localhost:6969(默认的 helix start dev 端口)上的本地实例进行通信。请参见查询指南以获取完整的构建工具目录和动态查询线格式。 Rust 安装 crate(发布为 helix-db,导入为 helix_db): cargo init && cargo add helix-db tokio sonic-rs 定义您的查询为 #[register] 函数,然后通过客户端直接运行它们: 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(); // 默认使用 http://localhost:6969 // 添加用户 let new_user = client.query::<sonic_rs::Value>() .dynamic(add_user("John Doe".to_string())) .send().await.unwrap(); println!("新用户: {:#}", sonic_rs::to_string_pretty(&new_user).unwrap()); // 获取用户 let user = client.query::<sonic_rs::Value>() .dynamic(get_user("John Doe".to_string())) .send().await.unwrap(); println!("用户: {:#}", sonic_rs::to_string_pretty(&user).unwrap()); } TypeScript 安装包(Node.js 20+): npm init -y && npm install @helix-db/helix-db 定义您的查询为函数,然后将它们 POST 到正在运行的实例: import { Predicate, PropertyInput, PropertyProjection, defineParams, g, param, readBatch, writeBatch, } from "@helix-db/helix-db"; const addUserParams = defineParams({ name: param.string() }); function addUser(p = addUserParams) { return writeBatch() .varAs("user", g().addN("User", { name: PropertyInput.param("name") }) .project([PropertyProjection.new("name")]),) .returning(["user"]); } const getUserParams = defineParams({ name: param.string() }); function getUser(p = getUserParams) { return readBatch() .varAs("user", g().nWithLabel("User") .where(Predicate.eqParam("name", "name")) .project([PropertyProjection.new("name")]),) .returning(["user"]); } const HELIX_URL = "http://localhost:6969/v1/query"; // 添加用户 const newUser = await fetch(HELIX_URL, { method: "POST", headers: { "content-type": "application/json" }, body: addUser().toDynamicJson(addUserParams, { name: "John Doe" }), }).then((r) => r.json()); console.log("新用户:", newUser); // 获取用户 const user = await fetch(HELIX_URL, { method: "POST", headers: { "content-type" : "application/json" }, body: getUser().toDynamicJson(getUserParams, { name: "John Doe" }), }).then((r) => r.json());

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡