v2.117.0 · 能提问的实时视图

把 AI 记忆和知识图谱,装进一个SQLite 文件。

CortexDB 是一个开源的 Go 库,给 Agent 做记忆。一个文件里装着向量、全文检索、RAG 文档、分作用域的记忆,以及带 SPARQL、推理和校验的 RDF 知识图谱。它就运行在你的程序里,不需要 embedding 模型也能用,MIT 协议。

$ go get github.com/liliang-cn/cortexdb/v2
CortexDB 实时视图(深色主题):CortexDB 自身源码的代码图谱,包、文件和类型按节点类型着色,包名直接标在场景里
serve_graph_3d 打开 CortexDB 自己的代码图谱:3835 个符号里画出 600 个,其余的一次搜索或展开就能到。

一览

是什么
嵌入式 AI 记忆 + 知识图谱
语言
Go,无 CGO · Rust、Python、Node 客户端
存储
一个 SQLite 文件,或 PostgreSQL + pgvector
模型
可选 — 词法模式无需 API key
图谱
RDF 1.2、SPARQL、OWL 2 RL、SHACL、Cypher
Agent
80+ MCP 工具 · Claude Code 与 Codex 插件
协议
MIT
最新版本
v2.117.0 ·

功能

Agent 需要记住的一切,都在代码旁边那个文件里。

不用部署服务,也不用同步第二个数据库:默认 SQLite,一个文件装不下时换 PostgreSQL + pgvector。

Agent 记忆

在用户、会话、全局三种作用域上 Remember、Recall、Reflect、Consolidate。Recall 返回可直接放进提示词、带出处的上下文包;关系类问题以图边事实作答,比如 Alice —uses→ Apollo。

沿着图走的检索

向量、词法、混合、图四条通道按排名融合,再加上个性化 PageRank(HippoRAG 2),专门对付答案隔了两跳的问题。auto 只在问题点名了具体实体时才走图。

真正的知识图谱

RDF 1.2 三元组项、SPARQL 1.1 与 1.2、只读 Cypher、RDFS 与 OWL 2 RL 子集、SHACL 校验和 SHACL-AF 规则。每条推理出的三元组都能解释来源;矛盾会被报告,绝不靠猜来消解。

变更事件流

每一次已提交的写入,都在同一个事务里写进 change_log:按提交顺序、恰好一次、回滚的写入不留痕。推理结果靠它自动保持最新,同步和触发器也建在它上面。

为 Agent 而生

80 多个工具,进程内和 MCP 上名字一样。插件让 Claude Code 和 Codex 共用一个大脑,带 /remember、/recall 和自动召回钩子;gRPC 服务让多台机器共享它。

不依赖模型

CortexDB 不引入任何大模型 SDK。没有 embedder 时走词法检索——整句的中文提问也能召回——并照样建立实体图。接上任意 OpenAI 兼容的 embeddings 端点就有向量检索。

本体与受控动作

带主键和基数的对象、链接、接口类型,对象集代数,留审计记录的动作类型,以及能发现破坏性变更的 schema diff——Palantir 式本体,同在一个文件里。

紧凑的向量

HNSW、IVF、Flat 索引,标量和乘积量化,以及先用 1 比特编码筛选、再精确重排的二值量化:在真实的 768 维 embedding 上 recall@10 为 0.979–0.996,内存只要 1/32。

答案说得出自己从哪来

每条记录都可以带上来源、分块、生产者和可信等级——已核实、仅断言、已拒绝。Authorize 回调把关每一个检索候选,权限控制落在检索层。

快速开始

三种用法。

嵌进 Go 程序,给编码 Agent 加上记忆,或者跑一个服务让多个客户端共享。

01在 Go 程序里

打开文件,记住,召回。不需要 embedder。

main.go
db, _ := cortexdb.Open(cortexdb.DefaultConfig("brain.db"))
defer db.Close()
brain := db.KnowledgeMemory()

brain.Remember(ctx, cortexdb.KnowledgeMemoryRememberRequest{
    Content: "Alice 喜欢用 tab 缩进。", Scope: "user",
})
rec, _ := brain.Recall(ctx, cortexdb.KnowledgeMemoryRecallRequest{
    Query: "Alice 喜欢什么缩进?",
})
fmt.Println(rec.ContextPack.Text) // 带出处

02在 Claude Code 或 Codex 里

一个全局大脑、斜杠命令和自动召回,无需 API key。

plugin
# Claude Code
/plugin marketplace add liliang-cn/cortexdb
/plugin install cortexdb@cortexdb

# Codex
codex plugin marketplace add liliang-cn/cortexdb
codex plugin add cortexdb@cortexdb

# 之后在任何会话里
/remember 预发数据库在 45432 端口
/recall 预发数据库

03任何语言

跑一次 gRPC 服务,客户端和 Agent 都连它。

shell
go install github.com/liliang-cn/cortexdb/v2/cmd/cortexdb-grpc@latest

# 类型化客户端
cargo add cortexdb-client
pip install cortexdb-client
npm install cortexdb-client

# 多台机器共享一个大脑
export CORTEXDB_REMOTE=host:port

评测

不用 embedding 模型,多跳召回提升 15 个点。

标准检索评测走的是应用实际调用的同一套公开 API——先 SaveKnowledge,再 SearchKnowledge——用 cortexdb-bench 跑。不接 embedder;auto 是默认模式。

完整问题集上的 recall@5(LongMemEval 为固定种子抽取的 100 题)。CortexDB v2.115.0,SQLite,Apple M2 Pro。
评测集类型词法AutoAuto 对比词法p95
2WikiMultiHopQA多跳0.6570.80721 ms
MuSiQue多跳0.4570.54228 ms
LoCoMo对话0.4930.4958 ms
LongMemEval对话0.8610.86215 ms

多跳提升来自在 SaveKnowledge 建立的实体图上做个性化 PageRank 游走;在单跳的对话记忆上,auto 保持词法的召回,因为大多数段落都提到的实体(比如对话里的说话人)不会被用作游走起点。数据集用 sha256 固定;用 go run ./cmd/cortexdb-bench 复现。

0.979–0.9961 比特二值编码加精确重排的 recall@10,内存只要 1/32
0 错误3897 个 openCypher TCK 场景零错误答案——做不到的,直接拒绝
W3C 测试集范围内的 RDF 1.2 与 SPARQL 1.2 测试在 SQLite 和 PostgreSQL 上通过
恰好一次每次已提交写入都按提交顺序进入变更事件流;回滚不留痕

看得见

一个能看进去的大脑。

CortexDB 生来可检查。serve_graph_3d 直接从处理调用的 MCP 服务里提供实时视图,Agent 碰到哪里,图就在哪里亮起来。可以在整个库里查找任意节点、直接提问、跑只读 Cypher,再一个节点一个节点地展开。graph_schema 报告数据实际呈现的 schema,每条推理出的事实都能追溯到它所依据的事实。

  • 三套主题,各有浅色和深色,默认跟随系统
  • 手机上也好用:详情面板变成底部抽屉
  • 每个视图都是一个链接:?focus=、?ask=、?cypher=、?theme=
  • 一个文件:备份、拷贝、比对,或直接用 sqlite3 打开
  • 每条推理都有解释,每个矛盾都有报告
Ember 浅色主题下的实时视图:聚焦一个包,文件名标在场景里,右侧是详情面板
手机上的实时视图:上方是聚焦的包,详情面板是底部抽屉
桌面上是 Ember 浅色,手机上是 Space 深色。

适用场景

嵌入式、可检查、本地优先。

适合

  • Agent 需要记忆和知识图谱,又不想多运维一个服务
  • 检索要能离线工作、不需要 API key
  • 答案必须说清出处和可信程度
  • 多个 Agent 或多台机器要共享一个大脑

不适合

  • 需要跨集群分片的分布式向量数据库
  • 需要完整 SPARQL 1.1 和 OWL DL 推理的企业级 RDF 三元组库
  • 要给大量租户低延迟地服务数十亿向量

常见问题

直接回答。

CortexDB 是什么?

CortexDB 是一个开源 Go 库,把 AI Agent 的记忆和知识存进一个 SQLite 文件:向量、全文检索、RAG 文档、分作用域的记忆,以及可以用 SPARQL 或只读 Cypher 查询的 RDF 知识图谱。它运行在你的程序里,不需要单独部署服务,采用 MIT 协议。

CortexDB 需要 embedding 模型或大模型吗?

不需要。CortexDB 不引入任何大模型 SDK。没有 embedder 时使用词法检索(FTS5,中文、日文整句提问都能召回),并照样建立实体图供图游走检索使用。接入任意 OpenAI 兼容的 embeddings 端点(例如 Ollama)即可启用向量和混合检索。

CortexDB 和向量数据库有什么区别?

向量数据库存 embedding、回答最近邻查询。CortexDB 是嵌入式库,除了向量,还管理分作用域的 Agent 记忆、RAG 文档,以及带推理和校验的知识图谱,全部在代码旁边的一个文件里。它不是分布式向量数据库,也不是企业级 RDF 服务器。

Go 以外的语言能用 CortexDB 吗?

可以。cortexdb-grpc 服务端通过 gRPC 提供同一个大脑,并有 Rust(cargo add cortexdb-client)、Python(pip install cortexdb-client)和 Node.js(npm install cortexdb-client)的类型化客户端。Agent 也可以通过它的 MCP 服务端使用。

CortexDB 能接入 Claude Code 和 Codex 吗?

能。它为两者都提供插件。在 Claude Code 中运行 /plugin marketplace add liliang-cn/cortexdb,再运行 /plugin install cortexdb@cortexdb。插件默认词法模式,无需 API key,在 ~/.cortexdb/cortexdb.db 保存一个全局大脑;多台机器指向同一个 cortexdb-grpc 服务即可共享。

CortexDB 支持哪些数据库?

默认 SQLite,使用纯 Go 的 modernc.org/sqlite 驱动,因此没有 CGO。用 postgres:// 连接串即可把同一个大脑搬到 PostgreSQL + pgvector;向量、混合检索、记忆和 RDF 图在两者上行为一致。

CortexDB 支持哪些图查询?

SPARQL 1.1(有文档说明的实用子集)及 SPARQL 1.2 三元组项,属性图上的只读 Cypher,随事实变化自动保持最新的 RDFS 与 OWL 2 RL 子集推理,SHACL 校验和 SHACL-AF 三元组规则。范围内的 W3C RDF 1.2 与 SPARQL 1.2 测试集在 SQLite 和 PostgreSQL 上均通过。

不用 embedder 时,CortexDB 的检索效果如何?

用 cortexdb-bench 经公开 API 实测,不接 embedder,默认 auto 模式与纯词法检索的 recall@5 对比:2WikiMultiHopQA 0.807 对 0.657,MuSiQue 0.542 对 0.457,LoCoMo 0.495 对 0.493,LongMemEval 0.862 对 0.861,p95 延迟低于 30 毫秒。多跳问题的提升来自在实体图上做的个性化 PageRank 游走。

今天就给你的 Agent 装上记忆。

MIT 协议开源。一条命令加进 Go 模块。