FalkorDB/FalkorDB

GitHub: FalkorDB/FalkorDB

FalkorDB 是一个利用稀疏矩阵技术的高速图数据库,专为 LLM 提供快速知识图谱查询支持。

Stars: 4577 | Forks: 391

FalkorDB Logo Square B

FalkorDB

Ultra-fast, Multi-tenant Graph Database

Powering Generative AI, Agent Memory, Cloud Security, and Fraud Detection

FalkorDB%2FFalkorDB | Trendshift
Try Free
Discord Dockerhub Discord codecov Workflow
![FalkorDB GitHub 仓库 - 视频 - 640x365](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/ebfc3c54bf082705.gif)
## 独特特性 我们的目标是构建一个针对大型语言模型优化的高性能知识图谱,特别关注极低的延迟,以确保通过我们的图数据库提供快速高效的信息。 🆕 [FalkorDB](https://www.falkordb.com/) 是**首个利用稀疏矩阵**来表示图中的[邻接矩阵](https://en.wikipedia.org/wiki/Adjacency_matrix),并利用[线性代数](https://en.wikipedia.org/wiki/Adjacency_matrix)进行查询的**可查询[属性图](https://github.com/opencypher/openCypher/blob/master/docs/property-graph-model.adoc)数据库**。 ### 主要特性 * **稀疏矩阵表示**:利用稀疏矩阵表示邻接矩阵,优化存储和性能。 * **线性代数查询**:采用线性代数进行查询执行,提升计算效率。 * **属性图模型合规性**:支持带属性的节点和关系,符合属性图模型。 * **OpenCypher 支持:** 兼容 [OpenCypher](ttps://github.com/opencypher/openCypher/blob/master/docs/property-graph-model.adoc) 查询语言,包括用于高级查询能力的专有扩展。 ## 文档 [官方文档](https://docs.falkordb.com/) | [客户端](https://docs.falkordb.com/clients.html) | [命令](https://docs.falkordb.com/commands/) | 📊 [最新性能基准测试](https://benchmark.falkordb.com/) ## 快速开始 ### 步骤 1 要快速试用 FalkorDB,请使用 docker 启动一个实例: ``` docker run -p 6379:6379 -p 3000:3000 -it --rm -v ./data:/var/lib/falkordb/data falkordb/falkordb ``` ### 步骤 2 然后,打开浏览器并访问 `http://localhost:3000`。 你也可以使用任何受支持的[客户端库](https://docs.falkordb.com/clients.html)与 FalkorDB 进行交互。 ### MotoGP 联赛示例 在这个示例中,我们将使用 [FalkorDB Python 客户端](https://pypi.org/project/FalkorDB/) 创建一个代表部分参加 MotoGP 联赛的摩托车手和车队的小型图。创建图之后,我们将查询数据以探索其结构和关系。 ``` from falkordb import FalkorDB # 连接到 FalkorDB db = FalkorDB(host='localhost', port=6379) # 创建 'MotoGP' 图 g = db.select_graph('MotoGP') g.query("""CREATE (:Rider {name:'Valentino Rossi'})-[:rides]->(:Team {name:'Yamaha'}), (:Rider {name:'Dani Pedrosa'})-[:rides]->(:Team {name:'Honda'}), (:Rider {name:'Andrea Dovizioso'})-[:rides]->(:Team {name:'Ducati'})""") # 查询哪些车手代表 Yamaha? 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]) # 打印:'Valentino Rossi' # 查询有多少车手代表 Ducati 车队? res = g.query("""MATCH (r:Rider)-[:rides]->(t:Team {name:'Ducati'}) RETURN count(r)""") print(res.result_set[0][0]) # 打印:1 ``` ## 开始构建 ### 编译 请确保满足以下要求: 1️⃣ 克隆 FalkorDB 仓库:`git clone --recurse-submodules -j8 https://github.com/FalkorDB/FalkorDB.git` * Ubuntu,安装:`apt-get install build-essential cmake m4 automake peg libtool autoconf python3 python3-pip` * Alpine,安装:`apk add build-base cmake m4 automake libtool autoconf python3 py3-pip peg git libgomp openssl-dev` * OS X,请确保已安装 `homebrew` 并运行:`brew install cmake m4 automake peg libtool autoconf`。 * OS X 工具链附带的 Clang 版本不支持 OpenMP,而这是 FalkorDB 的一个要求。解决此问题的一种方法是运行 `brew install gcc g++` 并按照屏幕上的说明更新符号链接。请注意,这是一个系统范围的更改——如果这不可行,可以为 `CC` 和 `CXX` 设置环境变量。 2️⃣ 在项目目录中运行 `make` 进行构建。 恭喜!你可以在 `bin//src/falkordb.so` 找到编译后的二进制文件。 ### 运行测试 首先通过从 ```tests``` 目录运行 ```pip install -r requirements.txt``` 来安装所需的 Python 包。 ### 在 docker 中构建 FalkorDB 构建系统在 docker 内运行。有关构建的详细说明,请[参见此处](https://docs.falkordb.com/docker-examples/README.html)。 ## 将 FALKORDB 加载到 REDIS 中 FalkorDB 由 [Redis](https://redis.io) 托管,因此你首先需要将其作为模块加载到 Redis 服务器中。 💡 我们建议通过将以下内容添加到你的 redis.conf 文件中,让 Redis 在启动时加载 FalkorDB: ``` loadmodule /path/to/module/src/falkordb.so ``` 在上面的行中,将 `/path/to/module/src/falkordb.so` 替换为 FalkorDB 库的实际路径。 如果 Redis 作为服务运行,你必须确保 `redis` 用户(默认)拥有访问 `falkordb.so` 所需的文件/文件夹权限。 或者,你也可以使用以下命令行参数语法让 Redis 加载 FalkorDB: ``` ~/$ redis-server --loadmodule /path/to/module/src/falkordb.so ``` 最后,你还可以使用 [`MODULE LOAD`](http://redis.io/commands/module-load) 命令。但请注意,`MODULE LOAD` 是一个危险命令,由于安全考虑,它将来可能会被阻止/弃用。 成功加载 FalkorDB 后,你的 Redis 日志中应该会看到类似以下的行: ``` ... 30707:M 20 Jun 02:08:12.314 * Module 'graph' loaded from /src/falkordb.so ... ``` 如果服务器启动失败,输出类似: ``` # 模块 /usr/lib/redis/modules/falkordb.so 加载失败:libgomp.so.1:无法打开共享对象文件:没有那个文件或目录 # 无法从 /usr/lib/redis/modules/falkordb.so 加载模块:服务器正在中止 ``` 表示系统缺少运行时依赖项 OpenMP。这可以在 Ubuntu 上通过 `apt-get install libgomp1` 安装,在 RHEL/CentOS 上通过 `yum install libgomp` 安装,在 OSX 上通过 `brew install libomp` 安装。 ## 使用 FALKORDB 你可以从任何 Redis 客户端调用 FalkorDB 的命令。以下是几种方法: ### 使用 `redis-cli` ``` $ redis-cli 127.0.0.1:6379> GRAPH.QUERY social "CREATE (:person {name: 'roi', age: 33, gender: 'male', status: 'married'})" ``` ### 使用任何其他客户端 你可以利用客户端发送原始 Redis 命令的功能与 FalkorDB 交互。 #### 示例:使用 Python 客户端使用 FalkorDB 这段代码片段展示了如何使用 [falkordb-py](https://github.com/FalkorDB/falkordb-py) 从 Python 中使用 FalkorDB: ``` from falkordb import FalkorDB # 连接到 FalkorDB db = FalkorDB(host='localhost', port=6379) # 选择社交图谱 g = db.select_graph('social') reply = g.query("CREATE (:person {name:'roi', age:33, gender:'male', status:'married'})") ``` ## 客户端库 ### 官方客户端 | 项目 | 语言 | 许可证 | 作者 | 星标 | 包 | 备注 | | --------------------------------------------------------- | ---------- | ------- | ------------------------------------------- | ----------------------------------------------------------------- | ------- | ---------- | | [jfalkordb][jfalkordb-url] | Java | BSD | [FalkorDB][falkordb-url] | [![jfalkordb-stars]][jfalkordb-url] | [Maven][jfalkordb-package]|| | [falkordb-py][falkordb-py-url] | Python | MIT | [FalkorDB][falkordb-url] | [![falkordb-py-stars]][falkordb-py-url] | [pypi][falkordb-py-package]|| | [falkordb-ts][falkordb-ts-url] | Node.JS | MIT | [FalkorDB][falkordb-url] | [![falkordb-ts-stars]][falkordb-ts-url] | [npm][falkordb-ts-package]|| | [falkordb-rs][falkordb-rs-url] | Rust | MIT | [FalkorDB][falkordb-url] | [![falkordb-rs-stars]][falkordb-rs-url] | [Crate][falkordb-rs-package]|| | [falkordb-go][falkordb-go-url] | Go | BSD | [FalkorDB][falkordb-url] | [![falkordb-go-stars]][falkordb-go-url] | [GitHub][falkordb-go-url]|| | [NFalkorDB][nfalkordb-url] | C# | Apache-2.0 | [FalkorDB][falkordb-url] | [![nfalkordb-stars]][nfalkordb-url] | [nuget][nfalkordb-package] | | ### 附加客户端 | 项目 | 语言 | 许可证 | 作者 | 星标 | 包 | 备注 | | --------------------------------------------------------- | ---------- | ------- | ------------------------------------------- | ----------------------------------------------------------------- | ------- | ---------- | | [nredisstack][nredisstack-url] | .NET | MIT | [Redis][redis-url] | [![nredisstack-stars]][nredisstack-url] | [nuget][nredisstack-package]|| | [redisgraph-rb][redisgraph-rb-url] | Ruby | BSD | [Redis][redisgraph-rb-author] | [![redisgraph-rb-stars]][redisgraph-rb-url] | [GitHub][redisgraph-rb-url] || | [redgraph][redgraph-url] | Ruby | MIT | [pzac][redgraph-author] | [![redgraph-stars]][redgraph-url] | [GitHub][redgraph-url] || | [redisgraph-go][redisgraph-go-url] | Go | BSD | [Redis][redisgraph-go-author] | [![redisgraph-go-stars]][redisgraph-go-url] | [GitHub][redisgraph-go-url]|| | [rueidis][rueidis-url] | Go | Apache 2.0 | [Rueian][rueidis-author] | [![rueidis-stars]][rueidis-url] | [GitHub][rueidis-url] || | [ioredisgraph][ioredisgraph-url] | JavaScript | ISC | [Jonah][ioredisgraph-author] | [![ioredisgraph-stars]][ioredisgraph-url] | [GitHub][ioredisgraph-url] || | [@hydre/rgraph][rgraph-url] | JavaScript | MIT | [Sceat][rgraph-author] | [![rgraph-stars]][rgraph-url] | [GitHub][rgraph-url] || | [php-redis-graph][php-redis-graph-url] | PHP | MIT | [KJDev][php-redis-graph-author] | [![php-redis-graph-stars]][php-redis-graph-url] | [GitHub][php-redis-graph-url] || | [redisgraph_php][redisgraph_php-url] | PHP | MIT | [jpbourbon][redisgraph_php-author] | [![redisgraph_php-stars]][redisgraph_php-url] | [GitHub][redisgraph_php-url] || | [redisgraph-ex][redisgraph-ex-url] | Elixir | MIT | [crflynn][redisgraph-ex-author] | [![redisgraph-ex-stars]][redisgraph-ex-url] | [GitHub][redisgraph-ex-url] || | [redisgraph-rs][redisgraph-rs-url] | Rust | MIT | [malte-v][redisgraph-rs-author] | [![redisgraph-rs-stars]][redisgraph-rs-url] | [GitHub][redisgraph-rs-url] || | [redis_graph][redis_graph-url] | Rust | BSD | [tompro][redis_graph-author] | [![redis_graph-stars]][redis_graph-url] | [GitHub][redis_graph-url] || | [rustis][rustis-url] | Rust | MIT | [Dahomey Technologies][rustis-author] | [![rustis-stars]][rustis-url] | [Crate](https://crates.io/crates/rustis) | [文档](https://docs.rs/rustis/latest/rustis/commands/trait.GraphCommands.html) | | [NRedisGraph][NRedisGraph-url] | C# | BSD | [tombatron][NRedisGraph-author] | [![NRedisGraph-stars]][NRedisGraph-url] | [GitHub][NRedisGraph-url] || | [RedisGraph.jl][RedisGraph.jl-url] | Julia | MIT | [xyxel][RedisGraph.jl-author] | [![RedisGraph.jl-stars]][RedisGraph.jl-url] | [GitHub][RedisGraph.jl-url] || ## 许可证 根据服务器端公共许可证 v1 (SSPLv1) 授权。请参阅[许可证](LICENSE.txt)。
标签:GraphBLAS, GraphRAG, 人工智能, 代理记忆, 大型语言模型, 安全, 客户端加密, 搜索引擎查询, 欺诈检测, 生成式人工智能, 用户模式Hook绕过, 稀疏矩阵, 请求拦截, 超快, 超时处理, 逆向工具