@Ryrenz: 太强了,把 AI 的整个记忆库压进一个文件里 GitHub 已经封神,16.2K stars 给 AI 做知识库,通常要起一套:向量数据库一个服务,全文检索一个服务,元数据再放个数据库。开发时跑 Docker Compose,部署时三个组…

X AI KOLs Timeline 工具

摘要

Memvid 是一个将 AI 记忆系统压缩进单个文件的工具,支持向量搜索和全文检索,以 Rust 编写,具有高性能和便携性。

太强了,把 AI 的整个记忆库压进一个文件里 GitHub 已经封神,16.2K stars 给 AI 做知识库,通常要起一套:向量数据库一个服务,全文检索一个服务,元数据再放个数据库。开发时跑 Docker Compose,部署时三个组件挨个配,想把知识库拷给同事,得导出三份东西。 Memvid 把这些收进单个 `.mv2` 文件:文件头、预写日志、数据段、全文索引、向量索引、时间索引全在里面,拷贝一份文件就等于搬走了整个记忆库。检索能力一样不少,全文用 Tantivy 加 BM25,向量走 HNSW,本地嵌入跑 ONNX 模型,支持 BGE、Nomic Embed Text 和 GTE 系列。 核心是 Rust 写的,另外给了命令行工具、Node.js SDK 和 Python SDK。PDF 文本提取、图像嵌入、音频转录、加密这些都是可选特性,示例里有 CLIP 图像检索和 Whisper 音频转录。 顺带一提,它 v1 那套把数据编码进二维码的方案已经弃用了,现在这版务实得多。 好的抽象不是加一层,是把三层合成一个文件。 GitHub:
查看原文
查看缓存全文

缓存时间: 2026/08/17 10:31

太强了,把 AI 的整个记忆库压进一个文件里

GitHub 已经封神,16.2K stars

给 AI 做知识库,通常要起一套:向量数据库一个服务,全文检索一个服务,元数据再放个数据库。开发时跑 Docker Compose,部署时三个组件挨个配,想把知识库拷给同事,得导出三份东西。

Memvid 把这些收进单个 .mv2 文件:文件头、预写日志、数据段、全文索引、向量索引、时间索引全在里面,拷贝一份文件就等于搬走了整个记忆库。检索能力一样不少,全文用 Tantivy 加 BM25,向量走 HNSW,本地嵌入跑 ONNX 模型,支持 BGE、Nomic Embed Text 和 GTE 系列。

核心是 Rust 写的,另外给了命令行工具、Node.js SDK 和 Python SDK。PDF 文本提取、图像嵌入、音频转录、加密这些都是可选特性,示例里有 CLIP 图像检索和 Whisper 音频转录。

顺带一提,它 v1 那套把数据编码进二维码的方案已经弃用了,现在这版务实得多。

好的抽象不是加一层,是把三层合成一个文件。

GitHub:


memvid/memvid

Source: https://github.com/memvid/memvid

Social Cover (9)

memvid%2Fmemvid | Trendshift

Memvid is a single-file memory layer for AI agents with instant retrieval and long-term memory.
Persistent, versioned, and portable memory, without databases.

Website · Try Sandbox · Docs · Discussions

Crates.io docs.rs License

Stars Forks Issues Discord

Benchmark Highlights

🚀 Higher accuracy than any other memory system : +35% SOTA on LoCoMo, best-in-class long-horizon conversational recall & reasoning

🧠 Superior multi-hop & temporal reasoning: +76% multi-hop, +56% temporal vs. the industry average

⚡ Ultra-low latency at scale 0.025ms P50 and 0.075ms P99, with 1,372× higher throughput than standard

🔬 Fully reproducible benchmarks: LoCoMo (10 × ~26K-token conversations), open-source eval, LLM-as-Judge

What is Memvid?

Memvid is a portable AI memory system that packages your data, embeddings, search structure, and metadata into a single file.

Instead of running complex RAG pipelines or server-based vector databases, Memvid enables fast retrieval directly from the file.

The result is a model-agnostic, infrastructure-free memory layer that gives AI agents persistent, long-term memory they can carry anywhere.

What are Smart Frames?

Memvid draws inspiration from video encoding, not to store video, but to organize AI memory as an append-only, ultra-efficient sequence of Smart Frames.

A Smart Frame is an immutable unit that stores content along with timestamps, checksums and basic metadata. Frames are grouped in a way that allows efficient compression, indexing, and parallel reads.

This frame-based design enables:

  • Append-only writes without modifying or corrupting existing data
  • Queries over past memory states
  • Timeline-style inspection of how knowledge evolves
  • Crash safety through committed, immutable frames
  • Efficient compression using techniques adapted from video encoding

The result is a single file that behaves like a rewindable memory timeline for AI systems.

Core Concepts

  • Living Memory Engine Continuously append, branch, and evolve memory across sessions.

  • Capsule Context (.mv2) Self-contained, shareable memory capsules with rules and expiry.

  • Time-Travel Debugging Rewind, replay, or branch any memory state.

  • Smart Recall Sub-5ms local memory access with predictive caching.

  • Codec Intelligence Auto-selects and upgrades compression over time.

Use Cases

Memvid is a portable, serverless memory layer that gives AI agents persistent memory and fast recall. Because it’s model-agnostic, multi-modal, and works fully offline, developers are using Memvid across a wide range of real-world applications.

  • Long-Running AI Agents
  • Enterprise Knowledge Bases
  • Offline-First AI Systems
  • Codebase Understanding
  • Customer Support Agents
  • Workflow Automation
  • Sales and Marketing Copilots
  • Personal Knowledge Assistants
  • Medical, Legal, and Financial Agents
  • Auditable and Debuggable AI Workflows
  • Custom Applications

SDKs & CLI

Use Memvid in your preferred language:

PackageInstallLinks
CLInpm install -g memvid-clinpm
Node.js SDKnpm install @memvid/sdknpm
Python SDKpip install memvid-sdkPyPI
Rustcargo add memvid-coreCrates.io

Installation (Rust)

Requirements

Add to Your Project

[dependencies]
memvid-core = "2.0"

Feature Flags

FeatureDescription
lexFull-text search with BM25 ranking (Tantivy)
pdf_extractPure Rust PDF text extraction
vecVector similarity search (HNSW + local text embeddings via ONNX)
clipCLIP visual embeddings for image search
whisperAudio transcription with Whisper
api_embedCloud API embeddings (OpenAI)
temporal_trackNatural language date parsing (“last Tuesday”)
parallel_segmentsMulti-threaded ingestion
encryptionPassword-based encryption capsules (.mv2e)
symspell_cleanupRobust PDF text repair (fixes “emp lo yee” -> “employee”)

Enable features as needed:

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

Quick Start

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

fn main() -> memvid_core::Result<()> {
    // Create a new memory file
    let mut mem = Memvid::create("knowledge.mv2")?;

    // Add documents with metadata
    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()?;

    // Search
    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(())
}

Build

Clone the repository:

git clone https://github.com/memvid/memvid.git
cd memvid

Build in debug mode:

cargo build

Build in release mode (optimized):

cargo build --release

Build with specific features:

cargo build --release --features "lex,vec,temporal_track"

Run Tests

Run all tests:

cargo test

Run tests with output:

cargo test -- --nocapture

Run a specific test:

cargo test test_name

Run integration tests only:

cargo test --test lifecycle
cargo test --test search
cargo test --test mutation

Examples

The examples/ directory contains working examples:

Basic Usage

Demonstrates create, put, search, and timeline operations:

cargo run --example basic_usage

PDF Ingestion

Ingest and search PDF documents (uses the “Attention Is All You Need” paper):

cargo run --example pdf_ingestion

CLIP Visual Search

Image search using CLIP embeddings (requires clip feature):

cargo run --example clip_visual_search --features clip

Whisper Transcription

Audio transcription (requires whisper feature):

cargo run --example test_whisper --features whisper -- /path/to/audio.mp3

Available Models:

ModelSizeSpeedUse Case
whisper-small-en244 MBSlowestBest accuracy (default)
whisper-tiny-en75 MBFastBalanced
whisper-tiny-en-q8k19 MBFastestQuick testing, resource-constrained

Model Selection:

# Default (FP32 small, highest accuracy)
cargo run --example test_whisper --features whisper -- audio.mp3

# Quantized tiny (75% smaller, faster)
MEMVID_WHISPER_MODEL=whisper-tiny-en-q8k cargo run --example test_whisper --features whisper -- audio.mp3

Programmatic Configuration:

use memvid_core::{WhisperConfig, WhisperTranscriber};

// Default FP32 small model
let config = WhisperConfig::default();

// Quantized tiny model (faster, smaller)
let config = WhisperConfig::with_quantization();

// Specific model
let config = WhisperConfig::with_model("whisper-tiny-en-q8k");

let transcriber = WhisperTranscriber::new(&config)?;
let result = transcriber.transcribe_file("audio.mp3")?;
println!("{}", result.text);

Text Embedding Models

The vec feature includes local text embedding support using ONNX models. Before using local text embeddings, you need to download the model files manually.

Quick Start: BGE-small (Recommended)

Download the default BGE-small model (384 dimensions, fast and efficient):

mkdir -p ~/.cache/memvid/text-models

# Download ONNX model
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

# Download tokenizer
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

Available Models

ModelDimensionsSizeBest For
bge-small-en-v1.5384~120MBDefault, fast
bge-base-en-v1.5768~420MBBetter quality
nomic-embed-text-v1.5768~530MBVersatile tasks
gte-large1024~1.3GBHighest quality

Other Models

BGE-base (768 dimensions):

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

Nomic (768 dimensions):

curl -L 'https://huggingface.co/nomic-ai/nomic-embed-text-v1.5/resolve/main/onnx/model.onnx' \
  -o ~/.cache/memvid/text-models/nomic-embed-text-v1.5.onnx
curl -L 'https://huggingface.co/nomic-ai/nomic-embed-text-v1.5/resolve/main/tokenizer.json' \
  -o ~/.cache/memvid/text-models/nomic-embed-text-v1.5_tokenizer.json

GTE-large (1024 dimensions):

curl -L 'https://huggingface.co/thenlper/gte-large/resolve/main/onnx/model.onnx' \
  -o ~/.cache/memvid/text-models/gte-large.onnx
curl -L 'https://huggingface.co/thenlper/gte-large/resolve/main/tokenizer.json' \
  -o ~/.cache/memvid/text-models/gte-large_tokenizer.json

Usage in Code

use memvid_core::text_embed::{LocalTextEmbedder, TextEmbedConfig};
use memvid_core::types::embedding::EmbeddingProvider;

// Use default model (BGE-small)
let config = TextEmbedConfig::default();
let embedder = LocalTextEmbedder::new(config)?;

let embedding = embedder.embed_text("hello world")?;
assert_eq!(embedding.len(), 384);

// Use different model
let config = TextEmbedConfig::bge_base();
let embedder = LocalTextEmbedder::new(config)?;

See examples/text_embedding.rs for a complete example with similarity computation and search ranking.

Model Consistency

To prevent accidental model mixing (e.g., querying a BGE-small index with OpenAI embeddings), you can explicitly bind your Memvid instance to a specific model name:

// Bind the index to a specific model.
// If the index was previously created with a different model, this will return an error.
mem.set_vec_model("bge-small-en-v1.5")?;

This binding is persistent. Once set, future attempts to use a different model name will fail fast with a ModelMismatch error.

API Embeddings (OpenAI)

The api_embed feature enables cloud-based embedding generation using OpenAI’s API.

Setup

Set your OpenAI API key:

export OPENAI_API_KEY="sk-..."

Usage

use memvid_core::api_embed::{OpenAIConfig, OpenAIEmbedder};
use memvid_core::types::embedding::EmbeddingProvider;

// Use default model (text-embedding-3-small)
let config = OpenAIConfig::default();
let embedder = OpenAIEmbedder::new(config)?;

let embedding = embedder.embed_text("hello world")?;
assert_eq!(embedding.len(), 1536);

// Use higher quality model
let config = OpenAIConfig::large();  // text-embedding-3-large (3072 dims)
let embedder = OpenAIEmbedder::new(config)?;

Available Models

ModelDimensionsBest For
text-embedding-3-small1536Default, fastest, cheapest
text-embedding-3-large3072Highest quality
text-embedding-ada-0021536Legacy model

See examples/openai_embedding.rs for a complete example.

File Format

Everything lives in a single .mv2 file:

┌────────────────────────────┐
│ Header (4KB)               │  Magic, version, capacity
├────────────────────────────┤
│ Embedded WAL (1-64MB)      │  Crash recovery
├────────────────────────────┤
│ Data Segments              │  Compressed frames
├────────────────────────────┤
│ Lex Index                  │  Tantivy full-text
├────────────────────────────┤
│ Vec Index                  │  HNSW vectors
├────────────────────────────┤
│ Time Index                 │  Chronological ordering
├────────────────────────────┤
│ TOC (Footer)               │  Segment offsets
└────────────────────────────┘

No .wal, .lock, .shm, or sidecar files. Ever.

See MV2_SPEC.md for the complete file format specification.

Support

Have questions or feedback? Email: [email protected]

Drop a ⭐ to show support


Memvid v1 (QR-based memory) is deprecated

If you are referencing QR codes, you are using outdated information.

See: https://docs.memvid.com/memvid-v1-deprecation


License

Apache License 2.0 — see the LICENSE file for details.

相似文章

@XAMTO_AI: AI 开发中最消磨精力的,莫过于这种被迫的“上下文重置”——只要切换环境,之前做过什么、卡在哪个环节、当时的思考逻辑是什么,全得重新交代清楚。 针对这个痛点,有人推出了 Memanto,一个专为 AI 打造的工作记忆库,目前已支持 Cla…

X AI KOLs Timeline

Memanto是一个专为AI开发环境打造的主动式工作记忆库,能在无API密钥和向量数据库的情况下,实现零延迟索引和高性能检索,支持Claude Code、Cursor等16+开发环境,在LongMemEval基准测试中达到89.8%的分数。

@WY_mask: 给各类 AI 编程助手打造持久化记忆引擎 http://github.com/rohitg00/agentmemory… 在后台静默记录代码修改和上下文 自动提取并压缩成结构化记忆 节省长上下文带来的 Token 消耗 关联过去的信息,随…

X AI KOLs Timeline

agentmemory 是一个为 AI 编程助手提供持久化记忆的开源工具,能静默记录代码修改和上下文,自动提取并压缩成结构化记忆,降低 Token 消耗,并支持 Claude Code、Codex 等多种主流平台。

akitaonrails/ai-memory

GitHub Trending (daily)

ai-memory 是一个基于 Rust 的工具,为 AI 编码代理提供长期记忆功能,使得在如 Claude Code 和 Codex 等不同代理之间能够无缝延续任务,无需重新解释上下文。