Fluree DB(GitHub 仓库)

TLDR AI 工具

摘要

Fluree DB 是一个开源的时间图数据库,具有类似 Git 的分支、集成的向量/文本/地理搜索、细粒度的访问控制,并支持 SPARQL、JSON-LD 和 Open Cypher。它针对 AI 代理记忆进行了优化,在十亿级图上实现了高性能。

Fluree DB 是一个为数据提供集成向量、文本和地理搜索的图数据库。
查看原文
查看缓存全文

缓存时间: 2026/06/24 13:43

fluree/db 来源:https://github.com/fluree/db

Fluree DB - 为重要数据而生的图数据库。具备时序性、可验证性、符合标准、类 Git 的分支与合并,并为 AI 智能体优化。集成向量、文本和地理空间搜索,且无需外部依赖即可实现细粒度访问控制。支持 RDF 1.1 / 1.2、Open Cypher 预览版(https://github.com/fluree/db/pull/1361)、SPARQL 和 JSON-LD 查询(包括历史查询及其他 Fluree 特性扩展)。在普通硬件上可处理数十亿条图事实。批量导入速度超过 200 万条事实/秒。基准测试领先(https://labs.flur.ee),比第二名数据库快 10.4 倍。在完整的 215 亿三元组 Wikidata 数据集上,所有 850/850 个 WGPB 图模式查询均完成,几何平均时间为 43 毫秒。

[!注意] Fluree Memory — 是 Fluree DB CLI 的一部分。 为 AI 编码助手提供持久化、可搜索的记忆。为 Claude Code、Cursor 及其他 AI 工具提供长期项目记忆:事实、决策和偏好可在会话间持久化于您控制的 Fluree 账本中——按仓库或用户限定范围,并可通过 git 共享。 Fluree Memory 文档 → (https://labs.flur.ee/docs)

安装

云/无服务器 — 在 flur.ee 上以免费的无服务器堆栈运行(https://flur.ee/solo)(有限制使用量),根据需要按需启动独立服务器。与本地 fluree CLI 无缝交互(安装说明见下文)。

Docker — 预配置的 HTTP 服务器,准备好在 8090 端口接受查询。适用于试用 API 或将 Fluree 作为服务运行。

docker run -p 8090:8090 fluree/server:latest

Homebrew、Shell 安装器或 Windows PowerShell — 安装 fluree 二进制文件,它同时包含 CLI 和嵌入式服务器(fluree server run)。

# Homebrew (macOS / Linux)
brew install fluree/tap/fluree

# Shell 安装器 (macOS / Linux)
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/fluree/db/releases/latest/download/fluree-db-cli-installer.sh | sh
# Windows (PowerShell)
irm https://github.com/fluree/db/releases/latest/download/fluree-db-cli-installer.ps1 | iex

预构建二进制文件和每个版本的变更日志位于 GitHub Releases 页面(https://github.com/fluree/db/releases)。

60 秒内从零到图

fluree init
fluree create movies
fluree insert '
  @prefix schema: <http://schema.org/> .
  @prefix ex: <http://example.org/> .

  ex:blade-runner a schema:Movie ;
    schema:name "Blade Runner" ;
    schema:dateCreated "1982-06-25"^^<http://www.w3.org/2001/XMLSchema#date> ;
    schema:director ex:ridley-scott .

  ex:ridley-scott a schema:Person ;
    schema:name "Ridley Scott" .

  ex:alien a schema:Movie ;
    schema:name "Alien" ;
    schema:dateCreated "1979-05-25"^^<http://www.w3.org/2001/XMLSchema#date> ;
    schema:director ex:ridley-scott .
'
fluree query --format table 'SELECT ?title ?date WHERE { ?movie a <http://schema.org/Movie> ; <http://schema.org/name> ?title ; <http://schema.org/dateCreated> ?date . } ORDER BY ?date'
┌──────────────┬────────────┐
│ title        │ date       │
├──────────────┼────────────┤
│ Alien        │ 1979-05-25 │
│ Blade Runner │ 1982-06-25 │
└──────────────┴────────────┘

这是一条 SPARQL 查询。相同的查询用 JSON-LD 表示:

fluree query --jsonld '{
  "@context": {
    "schema": "http://schema.org/"
  },
  "select": ["?title", "?date"],
  "where": [
    { "@id": "?movie", "@type": "schema:Movie", "schema:name": "?title", "schema:dateCreated": "?date" }
  ],
  "orderBy": "?date"
}'

两种语言访问相同的引擎——相同的功能,相同的性能。

现在更新数据并查询过去:

# 给所有雷德利·斯科特的电影添加类型
fluree update '
  PREFIX schema: <http://schema.org/>
  PREFIX ex: <http://example.org/>
  INSERT { ?movie schema:genre "sci-fi" }
  WHERE { ?movie schema:director ex:ridley-scott }
'

# 那次更新之前的数据是怎样的?
fluree query --at 1 'SELECT ?title ?genre WHERE { ?movie a <http://schema.org/Movie> ; <http://schema.org/name> ?title . OPTIONAL { ?movie <http://schema.org/genre> ?genre } }'
# → Blade Runner (无类型), Alien (无类型)

# 现在呢?
fluree query 'SELECT ?title ?genre WHERE { ?movie a <http://schema.org/Movie> ; <http://schema.org/name> ?title . OPTIONAL { ?movie <http://schema.org/genre> ?genre } }'
# → Blade Runner "sci-fi", Alien "sci-fi"

每次更改都被保留。通过交易编号、ISO 时间戳或内容寻址的提交 ID,可以查询历史中的任意时间点。

Fluree 的与众不同之处

时间旅行

每次交易都是不可变的。查询数据在任何时间点的状态——通过交易编号、ISO-8601 时间戳或内容寻址的提交 ID。无需特殊表,无需缓慢变化的维度。这一切都内置在存储模型中。

fluree query --at 2024-06-15T00:00:00Z 'SELECT * WHERE { ?s ?p ?o }'

了解更多:时间旅行概念时间旅行食谱

属性图与边注释

将属性附加到关系而不仅仅是节点——在 worksFor 边上附加 rolesince 日期,在声明上附加 sourceconfidence。Fluree 实现了 RDF 1.2 / SPARQL 1.2 注释语法,因此您可以获得带标签的属性图边、同一对节点之间的并行关系,以及单表面上的 RDF-star 语句级溯源。普通三元组查询保持不变——注释仅在您请求时才改变基数。

# 将元数据附加到边本身,而不是 Alice 或 Acme
INSERT DATA {
  ex:alice ex:worksFor ex:acme {| ex:role "Engineer" ; ex:since 2024 |} .
}

# 同时匹配边及其元数据
SELECT ?role ?since WHERE {
  ex:alice ex:worksFor ex:acme {| ex:role ?role ; ex:since ?since |} .
}

同样的结构也可通过 JSON-LD 的 @annotation 使用,包括在命名图中的边上。了解更多:边注释概念边注释食谱

集成搜索

BM25 全文搜索和 HNSW 向量相似度内置于查询引擎中——而不是外部附加的服务。搜索结果像其他任何图模式一样参与连接、过滤和聚合。

{
  "@context": { "ex": "http://example.org/" },
  "from": "mydb:main",
  "where": [
    { "@id": "?doc", "ex:title": "?title" },
    ["bind", "?score", "(fulltext ?title \"knowledge graph\")"]
  ],
  "select": ["?doc", "?title", "?score"],
  "orderBy": [["desc", "?score"]],
  "limit": 10
}

对于专用的 BM25 / HNSW 图源,同一查询引擎驱动 f:graphSource / f:searchText / f:queryVector 模式,并可由嵌入式索引或远程 fluree-search-httpd 服务支持。了解更多:BM25 全文向量搜索搜索食谱

类 Git 的数据管理

分支、变基、合并、推送、拉取——与开发者已用于代码的相同工作流程,应用于数据。分叉数据集以进行实验,不影响生产环境。准备就绪时合并。变基以跟上上游更改。每个分支都有独立的提交历史。

fluree branch create experiment
fluree use mydb:experiment
# ... 安全地进行更改 ...
fluree branch rebase experiment   # 跟上主分支
fluree branch merge experiment    # 快进合并到主分支
fluree branch drop experiment     # 清理

了解更多:分支食谱账本与名称服务

三元组级访问控制

策略是账本中的数据,在查询和交易时强制执行。用户只能看到他们被授权看到的内容——不是行,不是表,而是单个事实。无需应用层过滤。请参阅策略执行了解模型,策略食谱查看实际示例,以及策略模型与输入查看参考。

推理与推断

RDFS 子类/子属性推理、OWL 2 RL 前向链接以及用户定义的 Datalog 规则。数据库可以推断出您未显式存储的事实。了解更多:推理与推断OWL & RDFS 支持参考Datalog 规则

标准优先

完全支持 SPARQL 1.1,在 W3C 测试套件中零合规失败。原生 JSON-LD 用于惯用的 JSON API。两种查询语言访问相同的引擎,具有相同的能力——时间旅行、策略、图源等。了解更多:SPARQL 参考JSON-LD 查询参考标准与功能标志

值得了解的其它内容

  • SHACL 验证 — 在交易时强制执行的声明式形状约束,按目标、按属性报告违规。
  • OWL 本体导入 — 通过 f:schemaSource + owl:imports 将外部词汇表拉入账本,在提交时实例化。
  • Apache Iceberg / R2RML — 将 Parquet 数据仓库和关系存储作为一级图源进行查询,与原生 Fluree 数据并行。

按您的方式使用

CLI — 在终端中探索数据、编写脚本管道、管理账本。

fluree query -f report.rq --format csv > output.csv

HTTP 服务器 — 运行 fluree server 以获得带有 OIDC 认证、内容协商和 OpenTelemetry 的生产级 API。

fluree server run
curl -X POST http://localhost:8090/v1/fluree/query?ledger=mydb:main \
  -H "Content-Type: application/sparql-query" \
  -d 'SELECT ?s ?p ?o WHERE { ?s ?p ?o } LIMIT 10'

Rust 库 — 直接将 Fluree 嵌入您的应用程序。无需服务器进程。

let fluree = FlureeBuilder::memory().build_memory();
fluree.create_ledger("mydb").await?;
let result = fluree.graph("mydb:main")
    .query()
    .sparql("SELECT ?s WHERE { ?s a <http://schema.org/Movie> }")
    .execute()
    .await?;

MCP 服务器 — 通过模型上下文协议将 Fluree 暴露给 AI 助手。

fluree mcp serve
# stdio 传输,适用于 Claude Desktop、Cursor 等。

能力

查询语言SPARQL 1.1JSON-LD 查询
数据格式JSON-LD、Turtle、TriG、N-Triples、N-Quads
边注释属性图边与语句级元数据(RDF 1.2 / SPARQL 1.2)
时间旅行交易编号、ISO 时间戳、提交 ID
全文搜索集成 BM25 与 Block-Max WAND
向量搜索嵌入式 HNSW 或远程服务
推理RDFS、OWL 2 QL、OWL 2 RL、Datalog 规则
访问控制三元组级策略执行
地理空间GeoSPARQL、S2 单元格索引
可验证性JWS 签名的交易、可验证凭证
数据源Apache IcebergR2RML 关系映射
存储后端内存、文件、AWS S3 + DynamoDB、IPFS
复制实例间克隆、推送、拉取
分支分叉账本、独立提交历史
可观测性OpenTelemetry 追踪、结构化日志
验证SHACL 形状约束

文档

有关文档和更多信息,请访问 labs.flur.ee/docs(https://labs.flur.ee/docs)。完整文档也位于 docs/ 目录:

许可证

根据 Business Source License 1.1 许可,其更改日期为该文件中指定的 Apache License 2.0。

相似文章

Fluree AI

Product Hunt

Fluree AI 为AI代理提供可信的上下文,使其决策更可靠、更明智。

FluentDB

Product Hunt

FluentDB 是一款为 Mac 设计的 AI 驱动数据库客户端,集成 AI 功能以协助数据库查询和管理。

Show HN: HelixDB – 基于对象存储的图数据库

Hacker News Top

HelixDB 是一个用 Rust 构建的图-向量数据库,专为知识图谱和 AI 记忆设计,提供统一平台支持图、向量、键值、文档和关系型数据模型,并配有便于本地和云端部署的工具。

用于分析的纯 Clojure 列式数据库

Lobsters Hottest

Flatiron 是一个纯 Clojure 的列式分析库,用于内存表,具有类似 SQL 的 DSL,专为使用原始数组和批处理的高性能而设计。