基于 GraphBLAS 稀疏矩阵引擎的超高性能多租户图数据库,以 Redis Module 形态运行,面向 GraphRAG 与 AI Agent 场景深度优化。
FalkorDB 是一款以线性代数为核心执行引擎的属性图数据库,底层利用 GraphBLAS 将图结构存储为稀疏邻接矩阵,通过矩阵运算替代传统遍历来执行 OpenCypher 查询,并结合 AVX SIMD 指令与 OpenMP 并行实现高性能计算。系统以 Redis Module(.so 共享库)方式运行,要求 Redis 7.4+,原生支持多租户图级隔离、全文搜索、向量相似度搜索与范围索引,同时提供 RESP 和 Bolt 双协议接入。
核心架构#
┌─────────────────────────────────────────────┐
│ 协议层:RESP (Redis) / Bolt │
├─────────────────────────────────────────────┤
│ 查询引擎:OpenCypher 解析器 │
│ ↓ │
│ 执行后端:GraphBLAS 线性代数运算 │
│ ↓ │
│ 存储引擎:稀疏邻接矩阵(压缩存储) │
├─────────────────────────────────────────────┤
│ 索引层:全文 / 向量相似度 / 范围索引 │
├─────────────────────────────────────────────┤
│ 多租户层:图级命名空间隔离 │
├─────────────────────────────────────────────┤
│ 持久化:Redis RDB/AOF │
└─────────────────────────────────────────────┘
图存储与查询引擎#
- 稀疏矩阵图表示:首个可查询的属性图数据库,利用稀疏矩阵表示邻接矩阵,优化存储与查询
- 线性代数查询执行:基于 GraphBLAS,以线性代数运算替代传统图遍历执行查询
- AVX SIMD 加速:利用 AVX 指令集进行性能优化
- OpenCypher 兼容:兼容 OpenCypher 查询语言,包含专有扩展
- 属性图模型:完整支持带属性的节点和关系
多租户与部署#
- 原生多租户:多图隔离,每个图独立命名空间,零开销
- 水平扩展:线性扩展能力
- 高可用:集群部署、多区域部署
- 持久化与备份:依赖 Redis RDB/AOF,云服务额外提供每 12 小时自动备份
- 安全机制:TLS、VPC、图级访问控制
- 双协议支持:RESP(Redis 协议)+ Bolt 协议
GenAI / GraphRAG#
- GraphRAG SDK:内置工具链,支持高级图推理与生成式 AI 任务
- 本体自动检测:从非结构化数据自动生成本体
- 内置 Agent 编排:原生 agent orchestration 能力
- 向量搜索集成:与图查询原生协同的向量相似度搜索
快速开始#
Docker 部署(推荐)#
docker run -p 6379:6379 -p 3000:3000 -it --rm -v ./data:/var/lib/falkordb/data falkordb/falkordb
- 端口
6379:FalkorDB Server(RESP 协议) - 端口
3000:FalkorDB Browser(Web UI)
源码编译#
git clone --recurse-submodules -j8 https://github.com/FalkorDB/FalkorDB.git
apt-get install build-essential cmake m4 automake peg libtool autoconf python3 python3-pip libgomp1
make
# 产物:bin/<arch>/src/falkordb.so
加载为 Redis Module#
redis-server --loadmodule /path/to/module/src/falkordb.so
前置要求:Redis 7.4+
使用示例#
Python 客户端#
from falkordb import FalkorDB
db = FalkorDB(host='localhost', port=6379)
g = db.select_graph('MotoGP')
g.query("""CREATE
(:Rider {name:'Valentino Rossi'})-[:rides]->(:Team {name:'Yamaha'}),
(:Rider {name:'Dani Pedrosa'})-[:rides]->(:Team {name:'Honda'})""")
res = g.query("""MATCH (r:Rider)-[:rides]->(t:Team)
WHERE t.name = 'Yamaha' RETURN r.name""")
for row in res.result_set:
print(row[0])
官方客户端库#
| 语言 | 包名 | 客户端许可证 |
|---|---|---|
| Python | falkordb-py (PyPI) | MIT |
| JavaScript/Node.js | falkordb-ts (npm) | MIT |
| Java | jfalkordb (Maven) | BSD |
| Rust | falkordb-rs (Crate) | MIT |
| Go | falkordb-go | BSD |
| C# | NFalkorDB (NuGet) | Apache-2.0 |
适用场景#
- GraphRAG / AI 检索增强:将 LLM 与领域知识图谱结合,减少幻觉,增强 AI 响应准确性和可追溯性
- Agentic AI:为 AI Agent 提供记忆和推理支持
- 欺诈检测:图遍历分析复杂关系链
- 安全图谱:威胁情报查询(案例:Securin 在 350ms 内完成 7 跳威胁情报查询)
- Snowflake 集成:在 Snowflake AI Data Cloud 中作为原生图数据库运行
待确认事项#
- GraphBLAS 具体实现版本与子模块细节
- 性能基准测试方法论与数据集未验证
- Securin 案例具体部署规模与配置
- Snowflake 集成具体可用性与实现方式
- SSPLv1 对企业用户的合规影响
- OpenCypher 兼容覆盖率(CTP 测试集通过率)
- GraphRAG SDK 支持的 LLM 提供商与嵌入模型范围
- Bolt 协议具体版本号