Memvidは、AIエージェントのための即時検索と長期記憶を備えた単一ファイル型メモリレイヤーです。
データベースを必要とせず、永続化、バージョン管理、ポータブル性を備えたメモリを実現します。
ウェブサイト · サンドボックスを試す · ドキュメント · ディスカッション
Memvidは、データ、埋め込み、検索構造、メタデータを1つのファイルにパッケージ化するポータブルAIメモリシステムです。
複雑なRAGパイプラインやサーバーベースのベクトルデータベースを運用する代わりに、Memvidを使用することで直接ファイルから高速な検索が可能になります。
その結果、モデルに依存せずインフラ不要のメモリレイヤーが実現し、AIエージェントはどこでも使える永続的な長期記憶を持つことができます。
Memvidは、(ビデオを保存するためではなく)追記に特化した効率的なスマートフレームのシーケンスとしてAIメモリを整理するために、ビデオエンコーディング技術から着想を得ています。
スマートフレームは、コンテンツをタイムスタンプ、チェックサム、基本メタデータとともに保存する不変(イミュータブル)な単位です。フレームは効率的な圧縮、インデックス作成、並列読み取りができるようグループ化されています。
このフレームベースの設計により、以下が可能になります。
- 既存のデータを変更したり破損したりすることなくデータを追加
- 過去のメモリ状態に対するクエリ
- 知識がどのように進化するかをタイムライン形式で検査
- コミットされた不変フレームによるクラッシュ耐性
- ビデオエンコーディング技術を応用した効率的な圧縮
その結果、AIシステムの「巻き戻し可能なメモリタイムライン」のように機能する単一のファイルが生成されます。
-
成長するメモリエンジン (Living Memory Engine) セッションをまたいでメモリを継続的に追加、分岐、進化させます。
-
カプセル・コンテキスト (
.mv2) ルールや有効期限を設定できる、自己完結型で共有可能なメモリカプセル。 -
タイムトラベル・デバッグ 任意のメモリ状態を巻き戻し、再現、または分岐させることができます。
-
スマート・リコール 予測キャッシングによる5ミリ秒未満のローカルメモリーアクセス。
-
コーデック・インテリジェンス 圧縮方式を自動選択し、時間の経過とともにアップグレードします。
Memvidは、AIエージェントに永続的な記憶と高速な呼び出し機能を提供するポータブルでサーバーレスなメモリレイヤーです。モデルに依存せず、マルチモーダルに対応し、完全にオフラインで動作するため、実用的なアプリケーションで幅広く利用されています。
- 長期稼働AIエージェント
- エンタープライズ向けナレッジベース
- オフラインファーストAIシステム
- コードベースの理解
- カスタマーサポートエージェント
- ワークフロー自動化
- セールス・マーケティング支援
- パーソナル・ナレッジ・アシスタント
- 医療・法律・金融特化型エージェント
- 監査・デバッグ可能なAIワークフロー
- カスタムアプリケーション
お好みの言語でMemvidを利用できます。
| パッケージ | インストール | リンク |
|---|---|---|
| CLI | npm install -g memvid-cli |
|
| Node.js SDK | npm install @memvid/sdk |
|
| Python SDK | pip install memvid-sdk |
|
| Rust | cargo add memvid-core |
- Rust 1.85.0+ - rustup.rs からインストールしてください。
[dependencies]
memvid-core = "2.0"
| 機能 | 説明 |
|---|---|
lex |
BM25ランキングによる全文検索 (Tantivy) |
pdf_extract |
Pure RustによるPDFテキスト抽出 |
vec |
ベクトル類似性検索 (HNSW + ONNXによるローカルテキスト埋め込み) |
clip |
画像検索用のCLIPビジュアル埋め込み |
whisper |
Whisperによる音声文字起こし |
temporal_track |
自然言語による日付解析 (例: "last Tuesday") |
parallel_segments |
マルチスレッドによるデータ取り込み |
encryption |
パスワードベースの暗号化カプセル (.mv2e) |
以下のように、必要に応じて有効化してください。
[dependencies]
memvid-core = { version = "2.0", features = ["lex", "vec", "temporal_track"] }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(())
}リポジトリをクローン:
git clone https://github.com/memvid/memvid.git
cd memvidデバッグモードでビルド:
cargo buildリリースモードでビルド(最適化):
cargo build --release特定の機能フラグ付きでビルド:
cargo build --release --features "lex,vec,temporal_track"すべてのテストを実行:
cargo test標準出力でテストを実行:
cargo test -- --nocapture特定のテストを実行:
cargo test test_name統合テストのみを実行:
cargo test --test lifecycle
cargo test --test search
cargo test --test mutationexamples/ ディレクトリには、実際に動作するサンプルコードが用意されています。
作成 (create)、追加 (put)、検索 (search)、およびタイムライン操作のデモです。
cargo run --example basic_usagePDFドキュメントの取り込みと検索のサンプルです。(論文「Attention Is All You Need」を使用)
cargo run --example pdf_ingestionCLIP埋め込みを使用した画像検索のサンプルです。
cargo run --example clip_visual_search --features clip音声文字起こしのサンプルです。
cargo run --example test_whisper --features whispervec 機能は、ONNXモデルを使用したローカルでのテキスト埋め込みをサポートしています。利用前にモデルファイルを手動でダウンロードする必要があります。
高速で効率的なBGE-smallモデル(384次元)をダウンロードします。
mkdir -p ~/.cache/memvid/text-models
# ONNXモデルのダウンロード
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| モデル | 次元数 | サイズ | 最適な用途 |
|---|---|---|---|
bge-small-en-v1.5 |
384 | ~120MB | デフォルト(高速・軽量) |
bge-base-en-v1.5 |
768 | ~420MB | より高い精度が必要な場合 |
nomic-embed-text-v1.5 |
768 | ~530MB | 多目的なタスク |
gte-large |
1024 | ~1.3GB | 最高精度 |
BGE-base (768次元):
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.jsonNomic (768次元):
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.jsonGTE-large (1024次元):
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.jsonuse memvid_core::text_embed::{LocalTextEmbedder, TextEmbedConfig};
use memvid_core::types::embedding::EmbeddingProvider;
// デフォルトモデルを使用する場合 (BGE-small)
let config = TextEmbedConfig::default();
let embedder = LocalTextEmbedder::new(config)?;
let embedding = embedder.embed_text("hello world")?;
assert_eq!(embedding.len(), 384);
// モデルを変更する場合
let config = TextEmbedConfig::bge_base();
let embedder = LocalTextEmbedder::new(config)?;類似性の計算と検索ランキングを含む完全な例については、examples/text_embedding.rs を参照してください。
すべてが単一の .mv2 ファイルに収められます。
┌────────────────────────────┐
│ ヘッダー (4KB) │ マジックナンバー、バージョン、容量
├────────────────────────────┤
│ 組み込みWAL (1-64MB) │ クラッシュリカバリ用
├────────────────────────────┤
│ データセグメント │ 圧縮されたフレーム
├────────────────────────────┤
│ 全文検索インデックス (Lex) │ Tantivy全文検索
├────────────────────────────┤
│ ベクトルインデックス (Vec) │ HNSWベクトル
├────────────────────────────┤
│ タイムインデックス │ 時系列順序
├────────────────────────────┤
│ TOC (フッター) │ セグメントオフセット
└────────────────────────────┘
.wal、.lock、.shm などのサイドカーファイルは一切生成されません。
フォーマット仕様の詳細は MV2_SPEC.md を参照してください。
ご質問やフィードバックはこちらまでご連絡ください。 メール: contact@memvid.com
⭐でプロジェクトをサポートしてください。
Apache License 2.0 - 詳細は LICENSE ファイルをご覧ください。