返回

文章详情

LatticeDB – 像 SQLite 一样但用于图形数据库

Hacker News2026年8月25日 16:52

嵌入式属性图数据库,具有本地向量和全文索引功能。LatticeDB 是一个单文件本地数据库,用于连接、语义和文本数据。它使您能够遍历关系,运行向量相似性搜索,并在同一数据集上在一个引擎和一个查询层中进行 BM25 全文搜索。它设计用于在单个机器上处理关系密集型工作负载,具有零配置操作和嵌入式单写入者模型。LatticeDB 是一个嵌入式的单文件图数据库,让本地应用程序通过关系、语义和文本查询相同的数据,然后从同一个文件中消费持久化图形和应用事件。像 Graph RAG、代理记忆和本地知识工具等工作负载是建立在这些原语之上的示例,而不是引擎的定义。一个文件。您的整个数据库都是一个便携式文件。无需服务器,无需配置。一个查询层。图遍历、HNSW 向量相似性和 BM25 全文搜索 — 在同一种查询语言中。一个事件日志。持久化命名流和内置图形变更通知与图形写入共享相同的事务/WAL 路径。以本地优先。设计用于在一台机器上的一个拥有过程,具有 WAL 支持的持久性。快速。0.13 微秒节点查找。在 1M 向量上以 100% 召回率执行 0.83 毫秒向量搜索。 -- 找到与查询相似的块,遍历到它们的文档,然后到作者 MATCH (chunk:Chunk) - [:PART_OF] -> (doc:Document) - [:AUTHORED_BY] -> (author:Person) WHERE chunk.embedding <=> $query_vector < 0.3 AND doc.content @@ "neural networks" RETURN doc.title, chunk.text, author.name ORDER BY chunk.embedding <=> $query_vector LIMIT 10 安装 CLI curl -fsSL https://raw.githubusercontent.com/jeffhajewski/latticedb/main/dist/install.sh | bash Python pip install latticedb 预计已发布的轮子将在支持的平台上捆绑 liblattice。源安装也可以在轮子构建期间捆绑一个阶段性的本地库,方法是使用 LATTICE_BUNDLE_LIB_DIR=/path/to/lib。TypeScript / Node.js npm install @hajewski/latticedb 预计已发布的包 tarballs 在支持的平台上捆绑 liblattice。源检出可以使用 LATTICE_BUNDLE_LIB_DIR=/path/to/lib npm run bundle:native 将本地库阶段到包内。Go 请参见 bindings/go/README.md 了解当前的 cgo 工作流程。默认的消费路径使用已安装的 pkg-config 元数据;仓库中的开发可以使用 -tags repolocal 针对 zig-out/lib。examples/go 中还有一个可运行的图形/向量/文本检索示例。最近的绑定表面清理已将嵌入帮助程序移动到专用模块和子包中。请参见 docs/client_api_migration.md 了解首选导入和当前兼容性别名。这里开始 获取开始映射了 CLI、Python、TypeScript 和 Go 的最短路径。CLI 快速入门是库中最小的复制粘贴示例。示例概览覆盖了更大的图形/向量/文本检索演示。示例 完整示例:创建一个小的知识图,包含文档和作者,存储嵌入,索引文本,然后通过所有三种搜索模式进行查询。Python 从 latticedb 导入 Database 从 latticedb.embedding 导入 hash_embed with Database ("knowledge.db", create=True, enable_vectors=True, vector_dimensions=128) as db: # --- 构建图 --- with db.write() as txn: # 创建作者 alice = txn.create_node(labels=["Person"], properties={"name": "Alice", "field": "ML"}) bob = txn.create_node(labels=["Person"], properties={"name": "Bob", "field": "Systems"}) txn.create_edge(alice.id, bob.id, "COLLABORATES_WITH") # 创建包含标题、文本和作者的文档 for title, text, author in [("Attention Is All You Need", "The transformer architecture uses self-attention...", alice), ("Scaling Laws for LLMs", "We find that model performance scales predictably...", alice), ("Log-Structured Merge Trees", "LSM trees optimize write-heavy workloads...", bob)]: doc = txn.create_node(labels=["Document"], properties={"title": title}) chunk = txn.create_node(labels=["Chunk"], properties={"text": text}) # 存储嵌入和索引文本 txn.set_vector(chunk.id, "embedding", hash_embed(text, dimensions=128)) txn.fts_index(chunk.id, text) txn.create_edge(chunk.id, doc.id, "PART_OF") txn.create_edge(doc.id, author.id, "AUTHORED_BY") txn.commit() # --- 查询:向量搜索 + 文本匹配 + 图遍历 --- results = db.query(""" MATCH (chunk:Chunk)-[:PART_OF]->(doc:Document)-[:AUTHORED_BY]->(author:Person) WHERE chunk.embedding <=> $query < 0.5 RETURN doc.title, chunk.text, author.name ORDER BY chunk.embedding <=> $query LIMIT 5 """, parameters={"query": hash_embed("transformer attention mechanism", dimensions=128)}) for row in results: print(f" {row['doc.title']} by {row['author.name']} ") # --- 全文搜索 --- for r in db.fts_search("self-attention transformer"):

赞助内容

NordVPN Next-gen Antivirus

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

请我喝杯咖啡