Memvid 单文件智能体记忆

用可移植的单文件记忆层,为智能体提供持久存储、快速检索与历史回溯。

源仓库
memvid/memvid
Star 数
★ 17k
最近更新
3 个月前
License
Apache-2.0
主语言
Rust

30 秒速览

运行形态
代码库 / SDK命令行工具
可在哪里用
通用 · 跨平台OpenAI API
费用
软件免费,模型调用费用自付
上手难度
中 · 需要几步配置
开始前需要
Rust 1.85.0+用于本地文本嵌入的 ONNX 模型文件用于可选 api_embed 功能的 OPENAI_API_KEYShell / 命令行网络访问本地文件系统
典型场景
构建需要跨会话保留用户信息和历史上下文的长期运行智能体,并把记忆随应用一起迁移。
不适合
  • 需要开箱即用向量检索、不愿手动下载 ONNX 与分词器模型的团队
  • 无法使用 Rust 1.85.0 或更高版本工具链的团队

这个 Agent 能做什么,适合哪些场景?

Memvid 是一个以 Rust 核心库为基础的智能体记忆系统,将内容、嵌入、搜索结构和元数据封装在单个 .mv2 文件中。它采用只追加的 Smart Frames 保存不可变内容及时间戳、校验和与基础元数据,并通过内嵌 WAL 提供崩溃恢复。可选功能包括基于 Tantivy 的 BM25 全文检索、HNSW 向量检索、本地 ONNX 文本嵌入、CLIP 图像检索、Whisper 音频转写、PDF 提取、时间解析和加密胶囊。开发者可以通过 Rust crate、Node.js SDK、Python SDK或命令行工具接入;核心设计不绑定模型,且支持完全离线使用。它适合希望以本地文件替代服务端向量数据库和多组件 RAG 基础设施的团队,但启用不同检索与多模态能力需要选择相应 feature、模型文件及运行资源。

应用通过 Memvid::create 创建 .mv2 文件,再使用 put_bytes_with_options 写入内容以及标题、URI、标签等元数据,并调用 commit 提交。文件内部保存压缩帧、内嵌 WAL、目录表以及可选的词法、向量和时间索引;已有帧保持不可变,新记忆以追加方式写入。查询端向 mem.search 传入 SearchRequest,获得包含标题、文本和片段的命中结果。lex feature 使用 Tantivy 和 BM25,vec 使用 HNSW 以及本地 ONNX 文本嵌入,api_embed 可调用 OpenAI 嵌入 API;clip、whisper 和 pdf_extract 分别支持图像检索、音频转写和 PDF 文本提取。系统还支持查询过去的记忆状态,以及对记忆进行回放、分支和时间线式检查。

  1. 构建需要跨会话保留用户信息和历史上下文的长期运行智能体,并把记忆随应用一起迁移。
  2. 为不能依赖远程数据库的边缘设备或隔离环境建立可完全离线搜索的知识库。
  3. 让开发团队索引代码库和技术资料,通过全文或向量检索辅助代码理解。
  4. 为客服、销售或工作流自动化系统保存持续积累的会话与业务资料,并快速召回相关内容。
  5. 在需要审计的医疗、法律或金融工作流中,用不可变帧和历史状态回溯检查知识如何演变。
  6. 为包含 PDF、图片或音频的资料库启用提取、视觉搜索或转写,但需配置对应 feature 与模型。

如何安装或部署这个 Agent?

核心 Rust 库要求 Rust 1.85.0 或更高版本。可在现有项目的 Cargo.toml 中加入:

[dependencies]
memvid-core = "2.0"

按需启用全文检索、向量检索和时间解析:

[dependencies]
memvid-core = { version = "2.0", features = ["lex", "vec", "temporal_track"] }

也可以克隆并构建仓库:

git clone https://github.com/memvid/memvid.git
cd memvid
cargo build --release

其他已记录的分发方式包括:

npm install -g memvid-cli
npm install @memvid/sdk
pip install memvid-sdk
cargo add memvid-core

使用 vec 的本地默认 BGE-small 模型前,需要下载 ONNX 模型和 tokenizer:

mkdir -p ~/.cache/memvid/text-models
curl -L 'https://huggingface.co/BAAI/bge-small-en-v1.5/resolve/main/onnx/model.onnx' \
  -o ~/.cache/memvid/text-models/bge-small-en-v1.5.onnx
curl -L 'https://huggingface.co/BAAI/bge-small-en-v1.5/resolve/main/tokenizer.json' \
  -o ~/.cache/memvid/text-models/bge-small-en-v1.5_tokenizer.json

只有使用可选的 OpenAI 云端嵌入时才需要凭据:

export OPENAI_API_KEY="sk-..."

如何使用这个 Agent?

下面的 Rust 示例创建记忆文件、写入一条带元数据的内容、提交并搜索:

use memvid_core::{Memvid, PutOptions, SearchRequest};

fn main() -> memvid_core::Result<()> {
    let mut mem = Memvid::create("knowledge.mv2")?;

    let opts = PutOptions::builder()
        .title("Meeting Notes")
        .uri("mv2://meetings/2024-01-15")
        .tag("project", "alpha")
        .build();
    mem.put_bytes_with_options(b"Q4 planning discussion...", opts)?;
    mem.commit()?;

    let response = mem.search(SearchRequest {
        query: "planning".into(),
        top_k: 10,
        snippet_chars: 200,
        ..Default::default()
    })?;

    for hit in response.hits {
        println!("{}: {}", hit.title.unwrap_or_default(), hit.text);
    }

    Ok(())
}

使用本地嵌入时,可将索引绑定到模型,避免查询和建库误用不同模型:

mem.set_vec_model("bge-small-en-v1.5")?;

仓库示例可直接运行:

cargo run --example basic_usage
cargo run --example pdf_ingestion
cargo run --example clip_visual_search --features clip
cargo run --example test_whisper --features whisper -- /path/to/audio.mp3

可通过以下命令验证构建:

cargo test

这个 Agent 有哪些优点和局限?

优点
  • 内容、元数据、WAL 与多种索引都封装在一个 .mv2 文件中,不产生 .wal、.lock、.shm 等旁车文件,便于复制和部署。
  • 核心设计不绑定模型,并同时提供 Rust、Node.js、Python 和 CLI 接入方式;本地 ONNX 嵌入允许离线运行。
  • 只追加的不可变 Smart Frames 支持崩溃安全、历史状态查询以及记忆回放和分支。
  • 检索能力可组合:Tantivy/BM25 全文搜索、HNSW 向量搜索、时间索引,以及可选的 PDF、图像和音频处理。
  • 可以持久绑定向量模型名称,并在模型不匹配时以 ModelMismatch 快速失败。
局限
  • Rust 核心要求 Rust 1.85.0 以上;团队还需根据语言选择并维护相应 SDK 或 CLI 集成。
  • 本地向量检索不会自动提供模型文件,开发者必须手动下载 ONNX 模型和 tokenizer;列出的模型约为 120 MB 到 1.3 GB。
  • 高级能力依赖 feature 配置和额外资源,例如 CLIP、Whisper、Tantivy、HNSW 或 OpenAI API,部署组合会更复杂。
  • OpenAI 云端嵌入需要网络和 OPENAI_API_KEY,会失去完全离线运行的优势。
  • README 给出了性能与 LoCoMo 准确率结果,但没有提供与具体业务数据、硬件和负载相匹配的容量规划结论。

这个 Agent 与同类方案有什么区别?

与由服务端向量数据库及多个 RAG 组件组成的方案相比,Memvid 把数据、嵌入、索引和元数据放进一个本地 .mv2 文件,减少常驻服务和旁车文件。它更适合重视可移植性、离线运行和历史回溯的应用;若团队需要集中式多用户数据库运维、独立扩缩容或现成的托管服务能力,则仍需自行评估并补充相应架构。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
Memvid 单文件智能体记忆 当前 46 · 缺口较多 代码库 / SDK免费 + 模型费 ★ 17k 3 个月前 Rust OpenAI API
MetaClaw 50 · 缺口较多 命令行工具免费 + 模型费 ★ 3.5k 4 个月前 Python Codex · Claude Code · OpenAI API · Claude API
Chroma - 面向AI的开源数据基础设施 45 · 缺口较多 代码库 / SDK免费版 + 付费版 ★ 30k 1 天前 Rust —
SimpleMem:LLM 智能体的高效终身记忆系统 43 · 缺口较多 代码库 / SDK免费 + 模型费 ★ 3.8k 2 个月前 Python ChatGPT · Claude Code

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
缺口较多
46/ 100 五分制 2.3 / 5
信任安全 8/29
可靠稳定 6/14
适用触发 10/18
规范维护 10/18
有效结果 9/13
证据核验 3/8
查看各维度的扣分理由
信任安全8 / 29 · 1.4/5

证据显示:README 和 SECURITY.md 描述了安全特性(Blake3 校验、Ed25519 签名、AES-256-GCM 加密、WAL 崩溃恢复),但未提供权限模型或最小权限原则的说明。未发现用户确认机制。数据流透明度有限,仅提及单文件存储和索引结构,未详细说明数据如何被处理或传输。敏感数据处理方面,加密功能是可选特性,但未说明默认行为或密钥管理。依赖安全方面,Cargo.toml 列出了依赖,但未提供漏洞扫描或审计证据。外部影响方面,存在网络功能(api_embed、whisper 下载模型),但未说明数据外发或用户同意。回滚方面,提到时间旅行调试和追加写入,但未明确回滚机制。来源归属方面,未提供贡献者或维护者信息。扣分原因:缺乏权限模型、用户确认、详细数据流、密钥管理、依赖审计、外部影响说明和明确的回滚机制。

可靠稳定6 / 14 · 2.1/5

证据显示:README 和 Cargo.toml 描述了一致的架构(单文件、追加写入、崩溃安全),但未提供错误处理或失败消息的示例。依赖可用性方面,列出了多个可选依赖,但未说明所有依赖的可用性或版本兼容性。失败消息方面,未提供错误类型或用户可见的错误信息。扣分原因:缺乏错误处理文档和失败消息示例。

适用触发10 / 18 · 2.8/5

证据显示:README 列出了多种使用场景(长运行代理、企业知识库、离线系统等),并提供了多种 SDK(Rust、Node、Python、CLI)。能力边界方面,通过 feature flags 明确了可选功能(如 lex、vec、whisper 等),但未说明每个功能的限制。触发精度方面,未提供触发条件或精确的 API 行为。环境适配方面,支持多平台(CI 矩阵包括 Ubuntu、macOS、Windows),但未说明特定环境要求。扣分原因:缺乏触发精度和功能限制的详细说明。

规范维护10 / 18 · 2.8/5

证据显示:README 提供了清晰的信息架构(标题、徽章、导航、章节),安装说明详细(Rust 版本、依赖、feature flags)。命名稳定性方面,版本号明确(2.0.140),但未提供命名约定。示例和 FAQ 方面,提供了多个示例,但未提供 FAQ。已知限制方面,仅提到 v1 弃用,未列出其他限制。许可证方面,Apache-2.0 明确。版本变更日志方面,未提供 CHANGELOG。维护责任方面,未提供维护者或贡献指南。扣分原因:缺乏 FAQ、已知限制、变更日志和维护责任说明。

有效结果9 / 13 · 3.5/5

证据显示:README 提供了使用示例和 API 文档,输出可用性较好。边际价值方面,声称比 RAG 更高效,但未提供对比数据。成本效益方面,声称低延迟和高吞吐,但未提供基准测试细节。扣分原因:缺乏基准测试数据和成本分析。

证据核验3 / 8 · 1.9/5

证据显示:README 声称基准测试可复现,但未提供具体数据或方法。跨来源验证方面,未提供外部验证。事实与推断分离方面,未明确区分事实和推断。扣分原因:缺乏可验证的基准数据和外部验证。

风险与缓解建议
  • 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
  • 未提供权限模型或最小权限原则,可能过度授权。
  • 加密功能是可选特性,默认不启用,敏感数据可能未加密存储。
  • 存在网络功能(如 OpenAI API、模型下载),但未说明数据外发或用户同意机制。
  • 未提供依赖漏洞扫描或审计证据,依赖安全未知。
  • 未提供明确的回滚机制,尽管声称有时间旅行调试。
证据充分度:低 评估于 2026年8月9日 审查版本 e6bd9f7b9c38
查看完整评分方法 →

最近版本

来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。

  1. v2.0.140
    发布说明摘录
    Bug fixes #230 — WAL checksum mismatch after region growth Sustained put + commit workloads that grew the embedded WAL could corrupt it, surfacing as Embedded WAL is corrupted at offset N: wal record checksum mismatch (and, in some reports, runaway sparse-file growth past EOF). grow_wal_region / ensure_wal_capacity shifted the data region right by delta and updated data_end/footer_offset, but left cached_payload_end stale. rebuild_indexes then seeked to that pre-growth offset — now inside the grown WAL region — and overwrote live WAL record payloads. `cached_payloa …
    在 GitHub 查看 ↗
  2. v2.0.139
    发布说明摘录
    v2.0.139 Release Date: March 13, 2026 Overview This release completes the fix for MV005 (Time index track is invalid: frame id out of range) by extending graceful stale frame_id handling to all search paths — find(), ask(), Tantivy, lex fallback, vec search, and temporal metadata lookups. --- 🐛 Bug Fixes MV005 crash in find() and ask() search paths — Issue #196 (continued) - v2.0.138 fixed the timeline.rs path only; stale frame_ids in Tantivy evaluation, snippet assembly, lex fallback, and temporal metadata lookups still caused hard crashes …
    在 GitHub 查看 ↗
  3. v2.0.138
    发布说明摘录
    v2.0.138 Release Date: March 3, 2026 Overview This release fixes two SDK issues: lex_enabled/vec_enabled state not persisting after re-opening .mv2 files, and ask() crashing with "frame id out of range" on files with inconsistent time indexes. --- 🐛 Bug Fixes lex_enabled/vec_enabled reset to None on re-open — Issue #194 - Added lex_enabled and vec_enabled fields to the core Stats struct so SDKs can read runtime search engine state …
    在 GitHub 查看 ↗

常见问题

运行 Memvid 必须连接互联网或使用 OpenAI 吗?
不必须。系统支持本地 ONNX 文本嵌入和完全离线运行;只有下载依赖或模型、使用 api_embed 的 OpenAI 云端嵌入等操作需要网络。
它会生成哪些持久化文件?
数据、压缩帧、内嵌 WAL、索引和目录表都位于单个 .mv2 文件中;文档明确说明不会创建 .wal、.lock、.shm 或其他旁车文件。
怎样防止索引和查询使用不同的嵌入模型?
调用 mem.set_vec_model("bge-small-en-v1.5") 可持久绑定模型名;之后使用不同模型会返回 ModelMismatch 错误。
单文件损坏或写入中断时有什么保护?
格式包含用于崩溃恢复的内嵌 WAL,并采用已提交的不可变帧和只追加写入,避免修改既有帧。源材料没有给出备份、复制或灾难恢复流程,因此生产环境仍需自行制定文件备份策略。
可以处理哪些非纯文本资料?
启用对应 feature 后,可用 pdf_extract 提取 PDF 文本、用 clip 生成图像搜索嵌入,并用 whisper 转写音频。
在 GitHub 查看 ↗ 安装 ↓

相关 Agents