Engrava:面向 AI 智能体的本地图记忆数据库
开源项目 Engrava 发布,基于 SQLite 的嵌入式智能体记忆库,支持图记忆、混合检索与可校验日志,无需服务端即…
在 AI 智能体(Agent)开发中,「记忆」一直是绕不开的基础设施难题:如何让智能体持久化存储历史思考、按语义检索相关信息,并在多次会话间维护结构化知识图谱?近日在 Hacker News 上亮相的开源项目 Engrava 给出了一个轻量化的答案——一个完全运行在本地的图记忆数据库,单条 pip install 即可完成部署,不依赖任何外部服务,也不在记忆层调用任何大模型。
项目定位与核心思路
Engrava 基于 SQLite 构建,把智能体的「记忆」抽象为两类基本对象:
- Thought(思考):存储文本内容、嵌入向量、元数据与生命周期状态。
- Edge(边):连接不同 Thought 的类型化、有权重的关联关系,包括
ASSOCIATED(关联)、DEPENDS_ON(依赖)、DERIVED_FROM(派生)、CONSOLIDATED_FROM(由梦整理合并生成)以及CONTESTED_BY(互相矛盾)。
通过这两类对象的组合,Engrava 在传统关系型数据库之上提供了一套轻量的知识图谱能力,非常适合需要长期记忆的智能体或个人知识库场景。
检索能力:混合搜索与可插拔嵌入
Engrava 内置了混合检索(hybrid search)机制,将以下信号按权重融合:
- 向量相似度(默认 NumPy 余弦,可选 sqlite-vec 后端加速)
- SQLite FTS5 的 BM25 全文排序
- 时效性(recency)
- 优先级(priority)
- 图连通性(graph connectivity)
如果某次查询缺少某个信号(例如不提供 embedding),系统会自动跳过并重新分配其余权重,避免检索结果出现偏差。嵌入来源也是完全可插拔的,官方支持以下后端:
sentence-transformers本地模型(engrava[embeddings-local])- OpenAI 兼容 API(
engrava[embeddings-openai]) - Ollama 本地服务(
engrava[embeddings-ollama]) - Hugging Face Inference API(
engrava[embeddings-hf]) - 自定义回调函数
值得注意的是,作者明确表示记忆层中「不包含任何大模型调用」,并以架构方式保证这一点:所有发布的 benchmark 都在 memory_pipeline_llms: [] 的 Group A 配置下完成,记忆管道本身与具体 LLM 解耦。
查询语言与扩展机制
Engrava 提供了名为 MindQL 的声明式查询语言,用于在 Thought 图上做条件查询:
FIND thoughts WHERE thought_type = 'OBSERVATION' AND priority = 'P1' LIMIT 10COUNT thoughts WHERE lifecycle_status = 'ACTIVE'SELECT thought_id, essence FROM thought WHERE thought_type = 'BELIEF'
开发者还可以通过 ExtensionManifest 注册自定义命令,或继承 EngravaHooksProtocol 在 on_store、on_retrieve、decay_function 等生命周期钩子中插入业务逻辑(例如记忆衰减函数、写入后处理等)。数据模型使用冻结的 Pydantic 对象,所有变更需通过 evolve() 方法显式生成新实例。
可校验日志与基准可复现
除了存储与检索,项目还内置了一个「防篡改的思考/边日志」(tamper-evident journal),用于记录记忆层中的写入与关系变更。配套的 engrava-benchmark 仓库以 MIT 协议开源,开发者可以克隆后直接对 PyPI 上的 Engrava 包复现所有公布的基准数据,从而验证其声称的性能指标。
上手与部署
Engrava 对运行环境几乎零要求,标准的两步即可启动:
- 安装:
pip install engrava,按需追加可选扩展(如向量后端、嵌入提供方)。 - 使用:
SqliteEngravaCore包装一个aiosqlite连接,调用ensure_schema()后即可调用remember()和recall()完成「写入—检索」的最小闭环。
首次连接时会自动运行 schema 迁移,官方升级指南中给出了兼容性与备份建议。对于想快速体验的开发者,项目还提供了 from_config() 入口,可通过 YAML 文件声明式初始化整个记忆库。
适用场景
根据官方文档,Engrava 主要面向以下几类应用:
- AI 智能体的持久化记忆
- 个人知识库
- 带语义检索的对话存档
- 研究笔记之间的关联链接
- 任何需要「带嵌入的 Thought 图」的应用
作为一款 MIT 协议、本地优先、零外部依赖的轻量工具,Engrava 为不想为智能体记忆维护独立向量库或图数据库的开发者提供了一个值得尝试的替代选项。
