Holographic Memory について
Holographic Memoryは、エージェントやアプリの開発者向けに、文書・ベクトル・事実をローカルに保存する組み込み型Rustエンジンです。ネットワーク通信なしで検索とメモリ操作を行え、言語バインディング、HTTPサーバー、MCPサーバーを備えています。
主な機能
- 01全文・ベクトル・ハイブリッド検索
- 02記憶・想起・忘却・説明のAPI
- 03有効期間と会話の出典を持つ事実
- 04オプションのAES-256-GCM暗号化
- 05複数言語バインディング対応のRustエンジン
活用シーン
- 01エージェントへの永続的なローカルメモリの追加
- 02オフラインアプリでの文書とベクトルの検索
- 03HTTPサービスでのベクトル保存と検索
- 04ベクトル記号メモリと事実クエリの研究
MCP 対応
hms-mcpサーバーはstdioまたはHTTP経由で、Model Context Protocolクライアントにローカルストアを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Holographic Memory
エージェントやアプリ向けのローカルメモリです。全文検索とベクトル検索、メモリ API、ベクトル記号型のファクトストアを、ネットワーク通信を行わない、組み込み可能な 1 つの Rust エンジンにまとめています。
ウェブサイト · ドキュメント · はじめに · 結果 · 「ホログラフィック」と呼ばれる理由 · 機能 · 制限事項 · 貢献
## 概要
Holographic Memory(略して HMS)は、テキスト、ベクトル、事実をマシン上のディレクトリに保存し、再び検索するための Rust ライブラリです。Node.js バインディング、C、WASM、UniFFI バインディング、Python クライアントを備えた HTTP サーバー、MCP サーバーが付属しています。機能を有効にして要求しない限り、サービスへの呼び出し、テレメトリー、モデルのダウンロードは発生しません。
| 機能 | 提供内容 |
|---|---|
| ドキュメント検索 | チャンク分割、ブロック化された転置リストを用いた語幹処理付き BM25、ブール検索とフレーズ検索、提供された埋め込みによるハイブリッド統合、メタデータフィルター、バイトオフセット |
| ベクトルインデックス | メモリマップされた頂点ファイルを備えたグラフインデックス、挿入と削除に対応する更新可能な差分、サンプルクエリで学習したオプションのクエリ対応ルーティング |
| メモリー API | 時間的な有効性と置き換えを扱う remember、recall、forget、explain。出典の来歴を保持する会話メモリー |
| ストレージ | アトミックな置き換えと削除、クラッシュセーフなジャーナルとチェックポイント、検証付き圧縮、ストアごとに 1 つの書き込み元 |
| セキュリティ | オプションの AES-256-GCM 保存時暗号化、署名付き監査ログ、COSE/SCITT 来歴 |
| ベクトル記号レイヤー | バインド、バンドル、並べ替えに対応するスパースなハイパーベクトル、マルチホップクエリに対応するトリプル、Hopfield クリーンアップ |
対象ユーザー
| 構築するもの | 提供内容 |
|---|---|
| メモリーが必要なエージェントまたはアシスタント | ストアから事実を削除する忘却機能を備えたメモリー API、エディターとエージェントホスト向けの MCP サーバー |
| ローカル優先またはオフラインアプリ | サーバープロセス不要で、オプションの暗号化に対応した、1 つのディレクトリ内の組み込み検索とストレージ |
| ベクトル検索またはテキスト検索が必要なサービス | テナントとスコープ付きキーに対応する HTTP 経由の hms-server、またはプロセス内でのライブラリ利用 |
| ベクトル記号メモリーの研究 | バインド/バンドル代数、意味記憶と容量の実験、およびその結果ファイル |
主な結果
各行から、その結果の元となったコミット済みファイルに移動できます。ここに示すのは単一マシンで、記載のプロトコルに基づく結果であり、ご自身のデータでのテストに代わるものではありません。
| 結果 | 条件 | ソースファイル |
|---|---|---|
| Bemula の忘却スコアは 0.322、公開済みの最高値は 0.310(LangMem) | 全分割:50 件の対話、135 件の忘却リクエスト。エージェントと判定役はいずれも、OpenRouter 経由で DeepSeek に固定した deepseek-v4-flash-0731、温度 0。判定役のスナップショットは、著者の実行メタデータから推定しています。text-embedding-3-small を使用した k=5 のハイブリッド検索。論文で公開された DeepSeek の結果と比較。同日にスイートのナイーブ RAG ベースラインを再実行した結果は 0.075。1 回の実行。 | bemula_v1.json |
| LongMemEval dev:100 問中 89.75 問正解(4 回の実行の平均、範囲は 87~93) | 公式の生成プロンプトと判定プロンプトを使用。リーダーと判定役には gpt-4o-2024-08-06、コンテキストには上位 10 件を使用。検索には、キャッシュ済みの Qwen3 スコアに基づく参照ターンランキングを使用しており、ネイティブな会話メモリ検索ではありません。k は dev で選定しており、ホールドアウト結果はありません。 | longmemeval_official_dev_summary.json |
| VIBE llama-128-ip:strict recall@100 は最大 0.99687、1,457 QPS | 公式テストクエリ、1 スレッド、クエリ対応グラフ(ef=512)。固定された RoarGraph の設定はいずれも 0.99 に達しませんでした。0.95 および 0.99 QPS では劣ります(下記参照)。 | query_aware_graph_v1/README.md |
| VIBE yi-128-ip:再現率 0.95 で 3,214 QPS、MLANN RF80 の 1,953 QPS に対して | 同じプロトコル。同所で測定した固定 RoarGraph および MLANN の設定のみと比較。再現率 0.99 には達しませんでした。 | query_aware_graph_v1/README.md |
| SIFT-1M:再現率@10 が 0.95 のとき 17,481 QPS、hnswlib は 7,630 QPS(2.29 倍、区間は 1.95~2.39) | Core Ultra 9 185H。1 つのクライアントスレッドからクエリを 1 件ずつ送信し、プロセスは特定のコアに固定せず、インデックスは 8 スレッドで構築。Rust API 経由で計測し、hnswlib は Python バインディング経由で計測。 | heavy-ann-sift-...-185h-22c-27g.json |
| SciFact:ハイブリッド nDCG@10 は 0.729。独自の BM25(0.688)および高密度検索(0.645)を上回る | 5,183 件の文書、300 件のクエリ。MiniLM の埋め込みはハーネスから提供。NFCorpus:0.355、比較対象は 0.323 および 0.317。 | public_scifact.json、public_nfcorpus.json |
劣っている点
| 結果 | 条件 | ソースファイル |
|---|---|---|
| ann-benchmarks、再現率 0.95:sift は 2,819 QPS、faiss-ivfpqfs は 3,788 QPS(0.74 倍);glove は 1,019 QPS、ScaNN は 1,535 QPS(0.66 倍) | 公式の ann-benchmarks ランナー。各実行は CPU 1 基に固定、AVX2 ホスト | ann_benchmarks_harness_wl02_v1.json |
| VIBE llama-128-ip の QPS:再現率 0.95 では RoarGraph より 24.6%低く、0.99 では MLANN RF80 より 54.8%低い | 1 スレッド、公式テストクエリ | query_aware_graph_v1/README.md |
| SIFT-1M の構築時間は hnswlib の 0.58 倍、稼働時 RSS は 0.46 倍 | 上記の QPS 行と同じ実行 | docs/benchmarks/GAPS.md |
| テキスト検索の取り込み時間、稼働時 RSS、コールドスタートは、ほとんどのコーパスで SQLite FTS5 および tantivy より劣る | BEIR およびメモリのコーパス、2 台のホスト | docs/benchmarks/GAPS.md |
| glove-100-angular のスパースベクトル経路:再現率@10 は 0.252、33.7 QPS。FAISS HNSW は 0.832、4,111 QPS | 1 スレッド、Apple M4。スパース経路は実験段階です。 | public_glove-100-angular.json |
手法、区間、すべての劣後結果については、docs/benchmarks および
ベンチマークページをご覧ください。
hms-bench table により benchmarks/results/competitive/ から生成。手法と注意事項については docs/benchmarks/COMPARISON.md を参照してください。W = HMS が優位(95%区間が同等を含まない)、T = 同等、L = 比較対象が優位。
| データセット | 指標 | HMS | 最良の他製品 | 優位性 | |
|---|---|---|---|---|---|
| sift-128-euclidean | recall@10 >= 0.95 での QPS(QPS) | 17,481 | hnswlib 7,630 | 2.29x | W |
| sift-128-euclidean | 0.95 での p99 レイテンシ(us) | 105 | hnswlib 220 | 2.10x | W |
| sift-128-euclidean | ビルド時間(s) | 312.60 | hnswlib 182.49 | 0.58x | L |
| sift-128-euclidean | RSS、サービング時(MiB) | 2,204 | hnswlib 1,019 | 0.46x | L |
| sift-128-euclidean | インデックスサイズ(MiB) | 446.3 | hnswlib 873.8 | 1.96x | - |
| beir:fiqa | nDCG@10 | 0.2654 | SQLite FTS5 0.2678 | 0.99x | T |
| beir:fiqa | QPS(シングルスレッド)(QPS) | 3,576 | tantivy 1,617 | 2.21x | W |
| beir:fiqa | p99 レイテンシ(us) | 501 | tantivy 1,269 | 2.53x | W |
| beir:fiqa | 取り込み/ビルド時間(s) | 2.16 | SQLite FTS5 1.18 | 0.55x | L |
| beir:fiqa | ピーク RSS、サービング時(MiB) | 2,480 | SQLite FTS5 2,480 | 1.00x | T |
| beir:fiqa | ディスク上のサイズ(MiB) | 20.6 | Apache Lucene 9.12.3 (JVM) 12.2 | 0.59x | L |
| memory | nDCG@10 | 0.4561 | Apache Lucene 9.12.3 (JVM) 0.4627 | 0.99x | T |
| memory | QPS(シングルスレッド)(QPS) | 2,225 | tantivy 2,399 | 0.93x | T |
| memory | p99 レイテンシ(us) | 786 | tantivy 733 | 0.93x | T |
| memory | 取り込み/ビルド時間(s) | 2.52 | SQLite FTS5 2.06 | 0.82x | L |
| memory | ピーク RSS、サービング時(MiB) | 66 | SQLite FTS5 26 | 0.39x | L |
| memory | ディスク上のサイズ(MiB) | 9.8 | Apache Lucene 9.12.3 (JVM) 10.3 | 1.05x | W |
| memory | nDCG@10 | 0.4561 | Apache Lucene 9.12.3 (JVM) 0.4627 | 0.99x | T |
| memory | QPS(シングルスレッド)(QPS) | 11,857 | tantivy 4,591 | 2.58x | W |
| memory | p99 レイテンシ(us) | 145 | tantivy 412 | 2.85x | W |
| memory | 取り込み/ビルド時間(s) | 1.21 | SQLite FTS5 0.88 | 0.73x | L |
| memory | ピーク RSS、サービング時(MiB) | 2,480 | SQLite FTS5 2,480 | 1.00x | T |
| memory | ディスク上のサイズ(MiB) | 9.8 | Apache Lucene 9.12.3 (JVM) 10.3 | 1.05x | W |
| beir:nfcorpus | nDCG@10 | 0.2916 | SQLite FTS5 0.2914 | 1.00x | T |
| beir:nfcorpus | QPS(シングルスレッド)(QPS) | 38,963 | tantivy 14,705 | 2.65x | W |
| beir:nfcorpus | p99 レイテンシ(us) | 57 | tantivy 150 | 2.62x | W |
| beir:nfcorpus | 取り込み/ビルド時間(s) | 0.23 | SQLite FTS5 0.14 | 0.59x | L |
| beir:nfcorpus | ピーク RSS、サービング時(MiB) | 748 | SQLite FTS5 748 | 1.00x | T |
| beir:nfcorpus | ディスク上のサイズ(MiB) | 2.1 | Apache Lucene 9.12.3 (JVM) 1.5 | 0.72x | L |
| beir:nfcorpus | nDCG@10 | 0.2916 | SQLite FTS5 0.2914 | 1.00x | T |
| beir:nfcorpus | QPS(シングルスレッド)(QPS) | 9,532 | tantivy 7,105 | 1.34x | T |
| beir:nfcorpus | p99 レイテンシ(us) | 298 | tantivy 300 | 1.01x | T |
| beir:nfcorpus | 取り込み/ビルド時間(s) | 0.59 | SQLite FTS5 0.29 | 0.48x | L |
| beir:nfcorpus | ピーク RSS、サービング時(MiB) | 57 | SQLite FTS5 30 | 0.53x | L |
| beir:nfcorpus | ディスク上のサイズ(MiB) | 2.1 | Apache Lucene 9.12.3 (JVM) 1.5 | 0.72x | L |
| beir:scifact | nDCG@10 | 0.7027 | Apache Lucene 9.12.3 (JVM) 0.7022 | 1.00x | T |
| beir:scifact | QPS(シングルスレッド)(QPS) | 17,782 | tantivy 6,450 | 2.76x | W |
| beir:scifact | p99 レイテンシ(us) | 95 | tantivy 292 | 3.09x | W |
| beir:scifact | 取り込み/ビルド時間(s) | 0.31 | SQLite FTS5 0.20 | 0.63x | L |
| beir:scifact | ピーク RSS、サービング時(MiB) | 196 | tantivy 174 | 0.89x | T |
| beir:scifact | ディスク上のサイズ(MiB) | 2.9 | Apache Lucene 9.12.3 (JVM) 2.0 | 0.68x | L |
| beir:scifact | nDCG@10 | 0.7027 | Apache Lucene 9.12.3 (JVM) 0.7022 | 1.00x | T |
| beir:scifact | QPS(シングルスレッド)(QPS) | 2,711 | tantivy 2,879 | 0.94x | L |
| beir:scifact | p99 レイテンシ(us) | 526 | tantivy 520 | 0.99x | T |
| beir:scifact | 取り込み/ビルド時間(s) | 1.42 | SQLite FTS5 0.43 | 0.30x | L |
| beir:scifact | ピーク RSS、サービング時(MiB) | 160 | SQLite FTS5 54 | 0.34x | L |
| beir:scifact | ディスク上のサイズ(MiB) | 2.9 | Apache Lucene 9.12.3 (JVM) 2.0 | 0.68x | L |
はじめに
一度クローンします:git clone https://github.com/writerslogic/holographic-memory && cd holographic-memory。
オフラインのエージェントメモリのデモを実行します:cargo run --release --example demo-offline-agent。
Rust
ご自身の Rust プロジェクトに、現在の Apache-2.0 ソースを追加します:
cargo add holographic-memory --git https://github.com/writerslogic/holographic-memory
公開済みのクレート 0.6.1 は、引き続き AGPL-3.0-or-later です。
use holographic_memory::{DocumentInput, HmsCore, SearchOptions};
let dir = tempfile::tempdir()?;
let hms = HmsCore::new(4096, Some(dir.path().display().to_string()), None)?;
hms.memorize_document(DocumentInput {
id: "backups".into(),
text: "Restore deleted documents from verified backups.".into(),
source_uri: Some("operations.md".into()),
version: Some("1".into()),
metadata: Some(serde_json::json!({ "project": "alpha" })),
chunk_words: None, overlap_words: None, store_text: None, embeddings: None, title_weight: None,
})?;
let hits = hms.search_documents("restore backups", &SearchOptions::default())?;
println!("{} {:?}", hits[0].document_id, hits[0].source_uri);
Node.js
Node.js バインディングをインストールします(パッケージがプラットフォームに対応するネイティブバイナリを選択します):
npm install holographic-memory
代わりにソースからネイティブモジュールをビルドするには(Rust が必要です):
npm ci --omit=optional && npm run build
const { HolographicMemorySystem } = require('holographic-memory')
const { DocumentMemory } = require('holographic-memory/semantic')
async function main() {
const dir = require('node:fs').mkdtempSync(require('node:path').join(require('node:os').tmpdir(), 'hms-readme-'))
const memory = new DocumentMemory(new HolographicMemorySystem(4096, dir))
await memory.memorize({
id: 'backups', text: 'Restore deleted documents from verified backups.',
sourceUri: 'operations.md', version: '1', metadata: { project: 'alpha' },
})
const [hit] = await memory.search('restore backups', { filter: { project: 'alpha' } })
console.log(hit.documentId, hit.sourceUri, hit.text)
await memory.flush()
}
main().catch(error => { console.error(error); process.exit(1) })
サーバーと Python
Python パッケージ holographic-memory-sdk は、提供したベクトルを保存する hms-server 用の HTTP クライアントです。(holographic-memory-py はネイティブなベクトル検索と位相ベクトルを提供しますが、ドキュメント検索には対応していません。)
cargo build --release --features server --bin hms-server
HMS_API_KEY=change-me target/release/hms-server --input-dim 384 &
uv pip install holographic-memory-sdk
from holographic_sdk import HolographicClient
client = HolographicClient(url="http://127.0.0.1:8080", api_key="change-me", tenant_id="demo")
client.add_documents([{"id": "a", "vector": [0.1] * 384, "text": "hello", "metadata": {}}])
print(client.query([0.1] * 384, top_k=1)["matches"][0]["id"])
エンドポイント、フラグ、テナント、制限については
サーバーのドキュメントを参照してください。おもちゃの埋め込みモデルを使った、実行可能な Python のクイックスタートは
examples/quickstart/pythonにあります。
MCP
hms-mcp は、stdio または HTTP 経由で、任意の Model Context Protocol クライアントにストアを提供します:
npx -y holographic-memory-mcp # stdio; downloads a verified binary on first run
npx -y holographic-memory-mcp --transport http # http://127.0.0.1:8765/mcp
MCP パッケージは、別個のランチャーです。ソースからサーバーをビルドするには:
cargo build --release --features mcp,security --bin hms-mcp # add local-models for semantic recall
./target/release/hms-mcp # stdio
./target/release/hms-mcp --transport http # http://127.0.0.1:8765/mcp
クライアントの設定、データディレクトリ、単一ライターのルールについては、MCP 統合を参照してください。
5 分でできるクイックスタート
では、Rust、Python、Node での取り込み、検索、SQLite FTS5 との比較、暗号化について説明しています。また、CI ではすべてのプルリクエストでそのコードを実行します。埋め込みもネットワークも使わずにエージェントメモリ全体を実行するには、cargo run --example demo-offline-agentを実行してください。
なぜ「ホログラフィック」と呼ばれるのですか?
ホログラムでは、プレートのどの断片にも、全体像をぼんやりと写したものが含まれています。半分に切っても、半分の画像ではなく、解像度が下がった全体像が得られます。ホログラフィック縮約表現とベクトル記号アーキテクチャ(VSA)は、メモリにこの性質をもたらします:
- バインドでは、2 つのベクトル(ここでは疎なビット集合の XOR)を結び付け、役割と値を対応させます:
capital ⊗ paris。 役割を使ってもう一度バインドすると、値のノイズを含むコピーを復元できます。 - バンドルでは、複数のバインド済みペアを固定サイズの 1 つのベクトルにまとめます。結果は各要素と類似したままなので、1 つのベクトルにレコード全体を格納でき、1 つのビットが特定の事実を保持することはありません。
- 共鳴による想起。 ノイズを含む手掛かりを与えると、保存されたパターンのうち最も近いものが選ばれます(類似性検索、Hopfield によるクリーンアップ)。ベクトルが損傷すると、いくつかの項目が削除されるのではなく、すべての項目が少しずつ劣化するため、ノイズが増えても想起は徐々に低下します。
数行のコードで動作を確認できます(100 個の項目を和集合バンドルにまとめ、段階的に損傷させます):
cargo run --release --manifest-path examples/quickstart/rust/Cargo.toml --bin holographic。
**ここで文字どおりホログラフィックなのは、**疎なハイパーベクトル型と、そのバインド、バンドル、置換の各操作です。また、関係型の「意味メモリ」(トリプルをバインド済みの複合表現として保存し、複数ホップクエリと Hopfield によるクリーンアップを行います)、和集合バンドルのメンバーシップテスト、共鳴ネットワークも該当します(いずれも experimental 機能の背後にあります)。
**従来型のエンジニアリングにあたるのは、**ドキュメント検索(ステミング済み BM25 と厳密なコサイン類似度の組み合わせで、ハイパーベクトルは読み取りません)、グラフおよび転置ファイルのベクトルインデックス、メモリ API、ジャーナル型ストレージ、サーバーです。これらについては、ホログラフィックな動作をうたっていません。テスト済みの数値を含む詳しい説明は、 概念を参照してください。
現在提供されている機能
| 機能 | 状態 | ドキュメントに記載された制限 |
|---|---|---|
| ハイブリッド文書検索(BM25 + 正確なコサイン類似度、フィルター、バイトオフセット) | 提供中 | 対象チャンクをすべて正確にスキャンします。容量を想定する前に、コーパスでベンチマークしてください(ガイド) |
ブール式の語彙検索(+required、-excluded、引用符で囲まれたフレーズ) | 提供中 | フラットなクエリのみ対応し、ネストには対応していません。空のクエリ、または除外語のみのクエリには一致しません(設計) |
| アトミックな置換/削除、クラッシュセーフなジャーナル、検証済みの圧縮、プロセスロック | 提供中 | ストアごとにライターは1つです。圧縮は安全な消去ではありません |
ベクトルインデックス(qgraph頂点グラフ、メモリーマップ方式) | 提供中 | SIFT-1Mでは、ビルド時間とサービス提供時のRSSがhnswlibを下回ります(不足点) |
| 更新可能なベクトルインデックス(挿入と削除用の永続的な差分) | 提供中 | ライターは1つです。形式についてはVECTOR-UPDATES.mdを参照してください |
| クエリ対応グラフルーティング(サンプルクエリで学習) | 提供中(オプトイン) | 代表的な学習用クエリが必要です。VIBE llamaとyiでテスト済みです(レポート) |
| メモリーAPI:記憶、想起、忘却、説明 | 提供中 | 忘却ではストアから事実を削除しますが、モデルが推論した内容までは対象にしません(ドキュメント) |
会話メモリー(conversation-memory) | 提供中 | 正確な情報源の来歴を保持した、上限付きコンテキストです。LongMemEvalでのネイティブ想起は、まだエンドツーエンドでベンチマークされていません |
| 意味メモリー:トリプル、マルチホップ、Hopfieldクリーンアップ | 提供中(ランタイムでオプトイン) | 合成データと2,120件の事実を含むセットでテスト済みです(research_bench_16384_256.json) |
ユニオンバンドルのメンバーシップ(experimental) | 研究段階 | D = 16,384では、N = 500に対して正のギャップがあります(誤検出率4%)。2,500までテスト済みです(benchmark_scaling_results.json) |
スパースベクトルインデックス(memorize_vector) | 実験的 | HNSWに及びません(結果) |
暗号化ストア(security) | 提供中 | AES-256-GCM、Argon2idに対応します。ログ、インデックスキャッシュ、テキストセグメントを対象とします。メタデータ、ファイル名、サイズは暗号化されません |
署名付き監査ログ、認証情報によるアクセス制御、COSE/SCITT/C2PA(provenance) | 提供中 | ホストによるDIDの認証が必要です。PoSME、RATS、did:webは未実装です |
オンデバイスモデル(local-models:Qwen3の埋め込み/再ランキング/LLM) | 提供中 | ローカルの重みのみを使用し、ダウンロードは一切行いません |
hms-server HTTP API、マルチテナント(server) | 提供中 | 単一ノードです。TLSとテナントごとにスコープを限定したキーに対応します(ガイド) |
MCP サーバー(mcp:hms-mcp、stdioおよびHTTP) | 提供中 | 暗号化にはsecurityが必要です。意味に基づく想起にはlocal-modelsが必要です |
| Node.jsバインディング | npmおよびソースから提供中 | インストール時にプラットフォームに応じたネイティブバイナリが選択されます |
| C、Go、.NET、Java、Kotlin、Swift、WebAssemblyバインディング | ソースを提供 | ローカルでのビルドが必要です。言語パッケージとネイティブバンドルは、まだ公開されていません(ランタイムガイド) |
| Python | クライアント + フェーズ基盤 | インプロセスの文書検索には対応していません |
クエリ秘匿検索(private-search) | 実験的 | 他者が保持するインデックスを検索するための機能です。スコアラーに対してクエリベクトルのみを隠します(補足) |
上記の機能のうち、文書検索とベクトルインデックスを除くすべては、デフォルトで無効になっているCargo featureまたはランタイムオプションで利用します。Cargo featuresに一覧があります。
アーキテクチャ
flowchart TB
subgraph bindings["Bindings and servers"]
rust["Rust crate"]
node["Node.js (napi)"]
ffi["C, WASM, UniFFI"]
python["Python: holographic-memory-sdk"]
server["hms-server (HTTP)"]
mcp["hms-mcp (stdio, HTTP)"]
end
subgraph engine["Engine API"]
core["HmsCore: documents, vectors, facts, mutation gate"]
prov["Security and provenance: signed audit log, COSE/SCITT"]
end
subgraph indexes["Indexes and memory"]
text["Text index: blocked postings, BM25, Boolean and phrase"]
vector["Vector index (qgraph): vertex file, updatable delta, query-aware projection"]
memory["Memory API: remember, recall, forget, conversation memory"]
vsa["Vector-symbolic layer: bind, bundle, Hopfield cleanup"]
end
subgraph storage["Storage"]
journal["Journal and checkpoints"]
segments["Append-only segments (CRC32, LZ4)"]
mapped["Memory-mapped files"]
crypto["AES-256-GCM encryption (optional)"]
end
python --> server
rust --> core
node --> core
ffi --> core
server --> core
mcp --> core
core --> text
core --> vector
core --> memory
core --> vsa
core --> prov
memory --> text
text --> journal
vector --> journal
memory --> journal
journal --> segments
segments --> mapped
segments --> crypto
モジュールマップ:docs/ARCHITECTURE.md。
制限事項
- 匿名ではありません。 ハイパーベクトルのスケッチと用語カウントは暗号化ではないため、ストアを持つ人なら誰でも候補テキストをエンコードして比較できます。
storeText: falseにしても用語カウント、ID、埋め込みは保持されるため、プライバシー保護にはなりません。 - ドキュメント検索は従来型です。 ハイパーベクトルは使用せず、ホログラフィックな部分は代数と意味記憶です。
- 1つのストアにつき書き込みプロセスは1つです。 2つ目の書き込みプロセスは、ロックエラーによりオープン時に失敗します。
- 容量の数値は保証ではなく目安であり、テスト済みの範囲についてのみ示しています(容量)。
- ベンチマーク結果は単一のマシンでのものです。 条件は各結果ファイルに記載されています。シングルコアの ann-benchmarks の実行結果と VIBE の高再現率の測定点は性能低下を示しています(不得意な点を参照)。
- マスキングは難読化です。 クライアント側のベクトルマスキングでは、すべてのペア間の類似度が保持されます。
- ストアはディレクトリであり、
HmsCore::new(.., None, ..)は現在のディレクトリを使用します。
詳細な声明はdocs/PRIVACY.mdをご覧ください。脆弱性はSECURITY.mdを通じて非公開で報告してください。
貢献
CONTRIBUTING.mdには、セットアップ、CIで実行されるチェック、DCOのサインオフ(git commit -s、CLAは不要)について記載されています。初めての方向けの課題またはディスカッションから始めてください。行動規範をご覧ください。ベンチマークを変更した場合は、変更箇所に該当する結果ファイルを再生成してください。READMEでは、記憶に頼った数値ではなくファイルを参照しています。
ライセンス
Apache-2.0。LICENSEをご覧ください。コピーレフト義務なしで、ネットワークサービスを含むオープンソースまたはプロプライエタリソフトウェアで使用、変更、組み込みができます。crate 0.6.1までのリリースは AGPL-3.0-or-later のもとで公開されており、引き続きその条件で利用できます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。