NornicDB
融合图遍历、向量HNSW搜索与MVCC时序查询的统一AI知识数据库,Cypher为唯一查询语言
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
融合图遍历、向量HNSW搜索与MVCC时序查询的统一AI知识数据库,Cypher为唯一查询语言
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
「能不能让大模型同时记住关系的走向、语义相似度、还有昨天发生的事?」
这是 AI 应用开发者在构建知识密集型系统时反复面对的难题。通常的解法是维护多套数据库——Neo4j 管图关系、Qdrant 管向量搜索、PostgreSQL 管时序数据——然后在应用层手写同步逻辑。但 NornicDB 的作者 orneryd 不想这样,他的回答是:「三个问题,一个数据库解决。」
Neo4j 开创了原生图数据库的范式,但它诞生于 2010 年代初,那时候大模型和向量检索还没有出现。随着 RAG(检索增强生成)架构流行,开发者们意识到知识图谱 + 向量检索的组合能大幅提升 AI 的回答质量。LangChain、LlamaIndex 等框架纷纷引入图数据库层,但大多是「外挂」——图数据库存结构化知识,向量数据库存语义embeddings,两套系统之间缺乏有机整合。
NornicDB 诞生于 2025 年 12 月,作者 orneryd 的出发点很明确:在单一数据库引擎内原生融合图遍历(Graph Traversal)、向量搜索(Vector Search)和多版本并发控制(MVCC)。这不只是功能叠加,而是从查询执行层就统一调度三种检索路径,用 Cypher 查询同时读图、搜向量、查历史。
从 GitHub 数据来看,项目发展速度惊人:上线仅 7 个月(截至 2026 年 6 月),已积累 777 Stars,覆盖 19 个 topic,从 graph-rag 到 hnsw、mvcc、mcp-server 等,展现出完整的 AI 原生数据库图谱。仓库内还有一套完整的 AI Agent 工作流规范(.agents/ 目录),包含 8 个文档文件,指导 Claude 等 AI Agent 如何与 NornicDB 交互——这在开源数据库项目中非常罕见。
NornicDB 的核心设计哲学可以用一句话概括:用 Cypher 作为统一查询语言,在单一执行引擎内路由到图遍历、向量 HNSW 搜索或时序查询。
图1:Norns 是北欧命运女神(NornicDB 命名来源),对应数据库中管理时序事实的 Triptych Temporal Layer
从代码结构来看,项目采用 Go 语言编写(go.mod 要求 Go >= 1.26),分为以下核心包:
| 包名 | 职责 |
|---|---|
pkg/bolt | Neo4j Bolt 协议实现,兼容 neo4j-go-driver/v5 |
pkg/cypher | Cypher 查询解析与执行(基于 antlr4-go) |
pkg/search/hnsw | 向量相似度搜索(HNSW 算法实现) |
pkg/mvcc | 多版本并发控制,支持历史读取 |
pkg/graphrag | GraphRAG 支持层 |
pkg/apoc | 存储过程库(与 Neo4j APOC 兼容命名) |
pkg/auth | RBAC + OAuth 认证授权 |
pkg/storage | 底层存储引擎(基于 Badger v4 LSM 树) |
pkg/knowledgepolicy | 知识衰减策略(Policy-based Memory Decay) |
pkg/gpu | GPU 加速支持(CUDA / Metal / Vulkan) |
pkg/server | HTTP/REST + GraphQL 服务端 |
pkg/nornicgrpc | gRPC 接口(兼容 Qdrant 客户端) |
pkg/observability | OpenTelemetry + Prometheus 监控 |
pkg/pool | 连接池管理 |
项目还包含完整的 APOC(Awesome Procedures On Cypher)过程库,涵盖聚合、算法、原子操作、位运算、集合操作、社区检测等模块,接口风格与 Neo4j APOC 高度一致,降低已有 Neo4j 用户的迁移成本。
1. HNSW 向量搜索内嵌于图执行引擎
向量搜索不是独立模块,而是 Cypher 执行器的原生能力之一。查询可以同时包含 MATCH 子句(关系遍历)和 vector 搜索条件,由执行器内部做 RRF(Reciprocal Rank Fusion)混合排序返回结果。
2. MVCC + Temporal Facts(三时态事实)
项目实现了 Triptych Temporal Layer(Triple 时态层),支持 as-of、since、until 三种时态查询维度,结合 MVCC 快照隔离,可以查询任意历史时间点的数据状态。这对于 AI Agent 的记忆系统(记忆衰减 + 历史恢复)和合规审计场景意义重大。
3. Knowledge Decay / Memory Promotion
pkg/knowledgepolicy 实现了声明式衰减策略(Decay Profiles),系统可以根据访问频率、内容相关性等维度自动「遗忘」低价值信息,或将高频访问的知识「晋升」到更快访问路径。这是专门为 AI Agent 长期记忆场景设计的功能。
4. Multi-Architecture GPU 支持
支持 CUDA(NVIDIA)、Metal(Apple Silicon)和 Vulkan(跨平台)三种 GPU 加速路径。向量搜索和嵌入生成可以卸载到 GPU 加速,推理吞吐大幅提升。镜像标签包含 -amd64-cuda-bge(CUDA + BGE embeddings)、-arm64-metal-bge(Apple Silicon + Metal)等。
5. 多协议接口
图2:内置 Web UI(Mimir),兼容 Neo4j 端口 7474/7687
pkg/bolt 实现,端口 7687,兼容所有 Neo4j 官方驱动gqlgen 实现,提供 Schema-first GraphQL 接口从仓库结构来看,NornicDB 的工程化程度相当高:
_test.go 文件,auth 模块有 11 个测试文件(含并发测试 auth_cache_test.go)Makefile 自动化构建目标评分方面给予 87/100。扣分项:代码库非常新(2025年12月才创建),长期维护的稳定性有待时间验证;HNSW 等核心算法的实现完全依赖第三方库(vek),缺乏自研优化。
NornicDB 的部署门槛极低。Docker 用户只需一行命令:
# amd64 / CPU only
docker run -d --name nornicdb -p 7474:7474 -p 7687:7687 \
-v nornicdb-data:/data timothyswt/nornicdb-amd64-cpu-bge:latest
# NVIDIA CUDA
docker run -d --name nornicdb -p 7474:7474 -p 7687:7687 \
-v nornicdb-data:/data timothyswt/nornicdb-amd64-cuda-bge:latest
# Apple Silicon
docker run -d --name nornicdb -p 7474:7474 -p 7687:7687 \
-v nornicdb-data:/data timothyswt/nornicdb-arm64-metal-bge:latest
Docker Compose 文件覆盖了单节点、多架构等常见场景。Homebrew 用户可直接 brew install nornicdb。
由于完全复用 Neo4j 的端口(7474/7687),已有 Neo4j 客户端(neo4j-driver、neovis.js 等)无需修改即可连接 NornicDB,数据模型也高度兼容,迁移成本极低。
对于 AI 开发者而言,NornicDB 最有价值的地方在于它回答了一个具体的工程问题:当你的 AI Agent 需要同时维护对话上下文(短期记忆)、知识图谱(结构化长期记忆)和语义记忆(向量嵌入)时,NornicDB 把三者放在同一个存储引擎里,通过一条 Cypher 语句搞定。
这比串联多个数据库(Neo4j + Qdrant + PostgreSQL)要简洁得多。更重要的是,它内置了专门为 AI 记忆设计的衰减策略和历史回溯能力——这是通用图数据库不会内置的功能。
图3:NornicDB macOS 应用图标
需要正视的局限:
Graph-RAG 是当前 AI 工程最活跃的方向之一。从 Pinecone 的纯向量数据库,到 Neo4j 的图增强 RAG,再到 NornicDB 的融合路线,行业正在探索「图 + 向量」的最佳结合方式。NornicDB 的独特价值在于从 Cypher 执行引擎层面就支持向量操作,而不是在图数据库外面包一层向量代理——这种架构选择让混合查询(同时遍历关系又做语义搜索)的延迟更低、语义更准确。
从 GitHub 趋势看,项目已吸引了 graph-rag、local-llm、mcp-server、local-llm 等多个前沿领域的关注者,反映出 AI 应用开发者对统一知识存储方案的强烈需求。可以预期,这类融合型数据库将在未来 1-2 年内成为 AI 基础设施的重要组成部分。