什么是 Dr Strange?
Dr Strange 是一个用 Rust 编写的 AI 原生嵌入式图数据库。这句话包含三项主张, 下文逐一说明:它存储的是图,它是嵌入式的,它是 AI 原生的。所谓 AI 原生,是指它从设计之初就面向 AI 工作负载,而非事后加装。
数据模型:以"平面"组织的属性图
Dr Strange 存储的是一张属性图(property graph):
- 节点(Node) 是实体,比如一个人、一篇文档、一件商品。每个节点都有一组
标签(label,即它的类型,如
Person、Doc),以及一段自由形式的 属性(property) 映射。 - 边(Edge) 是节点之间有向、带类型的关系,例如
(alice) -[:KNOWS]-> (bob)。 边同样可以携带属性。 - 属性 是带类型的值:字符串、数字、布尔、字节块、列表、嵌套映射,以及至关 重要的向量(vector,即嵌入)。向量是一等值类型,而非事后才补上的功能。
节点除了引擎内部的数字 id,还可以携带调用方提供的 外部键(external key): 一个稳定、对人友好、在所属平面内唯一的标识。
Dr Strange 按 平面(plane) 组织数据:平面是存在于同一个数据库文件中、彼此
独立的具名图命名空间。平面就像 schema 或 namespace,你可以为每个项目、每个租户
或每次实验各用一个平面。id 在整个数据库范围内全局唯一,但每一次查询都只在某一个
平面的上下文中执行,因此各平面之间保持干净的隔离。一个全新的数据库总是包含一个
startup 平面。
"AI 原生"的主张
多数为数据库添加 AI 能力的做法,是在传统引擎上附加一列向量,再外呼一个模型服务。 Dr Strange 反过来:AI 应用所需的能力,本身就是引擎的核心特性。
- 嵌入是一等公民。 向量和其它属性值一样用 HNSW 原生建立索引,相似度检索因此 既快,又运行在查询引擎内部,而不是外部服务里。
- 检索融合多路信号。 向量相似度、BM25 关键词相关性、图上邻近度会融合成一个 统一的排序结果,这正是 GraphRAG 的核心。
- 引擎与智能体对话。 用自然语言提问,拿回一个查询计划并执行它,就能得到一张 连通的子图;订阅一个平面,变更一提交就能实时收到;还能读取图在任意历史时刻的 样子。
一个具体例子:GraphRAG
假设你已经把一批文档导入为图:Doc 节点带有 embedding 属性,通过 CITES、
MENTIONS 边连到 Concept 节点。一次 GraphRAG 查找就是一条查询:
SEARCH (d:Doc) ON embedding NEAR "how does time-travel work" TOPK 5 RETURN d
它先把问题嵌入为向量,检索出最相似的五篇文档;由于结果本身就是图节点,遍历可以 直接从这里继续,进入它们提及的概念、找到引用它们的文档,组装出纯向量库单凭自身 无法企及的扎实上下文。
Dr Strange 的定位
- 像 SQLite 一样,它是嵌入式的:一个库加一个磁盘上的数据库,无需运行任何
服务。需要仪表盘、HTTP/WebSocket 接口和多客户端访问时,也可以额外启动一个服务
(
drsg serve)。 - 不同于传统图数据库(如 Neo4j),向量与混合检索内建于核心,整套接口也是 围绕智能体设计的:自然语言、变更流、时间旅行。
- 不同于纯向量数据库,它的存储单位是一张图,得到的是关系、遍历与图算法, 而不仅仅是最近邻。
对于围绕知识图谱、GraphRAG 流水线或智能体长期记忆构建的应用,Dr Strange 意在 作为容纳这一切的单一存储。
特性一览
| 能力 | 它带给你什么 |
|---|---|
| 平面(Planes) | 一个数据库中容纳多张相互独立的图 |
| 一等嵌入 | 向量属性,原生 HNSW 索引 |
| 混合检索 | 向量 + 关键词(BM25)+ 图邻近度的融合检索 |
| 查询语言 | 可序列化的逻辑计划,以及一套 openCypher 子集 |
| 图算法 | PageRank、连通分量、最短路径、Louvain |
| 自然语言查询 | 用自然语言提问 → 生成计划 → 执行 |
| 时间旅行 | 读取图在某个历史提交或时间戳时的样子 |
| 变更流 | 订阅一个平面,实时接收其变更 |
| 代码图化 | 沙箱化的 wasm 解析器插件将代码仓库转化为已解析的调用图(官方支持 8 种语言) |
| 提交同步监视 | serve watch 将每次提交折叠进平面 |
| 智能体工具 | context · search · describe · grep · trace · impact · fathom · snippet · history · recall · wire,每个问题一次往返 |
| 备份 / 恢复 | 一致、保 id 的整库快照 |
| 只读副本 | serve --follow 镜像一个正在运行的服务,用于跨集群扩展读取 |
| 访问方式 | Web 界面、六种语言 SDK、命令行,以及 MCP 服务 |
v1.0 意味着什么
v1.0 是一个完整的、嵌入式的、AI 原生的图数据库,具备上述全部能力:一个存储引擎 (一个手写的 LSM,另有一个遗留可选项),以及一套稳定的、SDK 由其生成的 JSON-RPC 线协议。接下来的各章将带你使用它的每一个部分。
v2.0 提供了什么
v2.0 把代码仓库自身的源码树也变成了一种图。沙箱化的 wasm 解析器插件把源文件解析
为一张已解析的调用图,包含符号、带调用位置的调用者,以及其它每一种结构性边,全程
无需模型参与,开箱即支持八种语言。serve watch 让生成的平面随代码仓库自身的提交
历史保持同步,每次提交落地就把这次的变更折叠进图中。十二个智能体动词——context、
search、describe、grep、trace、impact、fathom、snippet、history、
deployed、recall、wire——把这张图变成编码
智能体一次往返即可拿到的答案,每一个都会说明自己结果的边界:给出候选清单而不是
猜一个匹配,用 UnresolvedRef 台账条目代替一条悄悄出错的边。drsg init 把这
一切合并成一条命令,一次做完图化、监视,以及为当前使用的宿主工具写入 MCP 配置。
插件与编码智能体两章详细展开了这部分内容。