検索、埋め込み、検索拡張生成
Memories は、アクセスが許可された通常のメモリーとナレッジカードに対するキーワード検索と意味検索に対応しています。文書の取り込みは UTF-8 テキストと Markdown を受け付け、通常の暗号化されたナレッジカードを作成します。PDF/DOCX/バイナリーファイルの抽出は自動ではありません。明示的に取り込む前にテキストに変換してください。非公開コンテンツ、認証情報、ファイルアセットは検索対象から除外されます。
クイックスタート
CLI と実行中のデーモンには同じホーム・設定を使用します。アップグレードやモデル設定の変更後はデーモンを再起動します。通常どおり初期化してロックを解除し、次を実行します。
memories rag ingest VAULT_ID notes.md --title "Research notes"
memories memory search VAULT_ID "Chinese English keywords"
memories rag search VAULT_ID "keywords" --mode bm25 --match-mode all
memories rag model-install
memories rag index VAULT_ID
memories rag search VAULT_ID "Find similar meaning" --mode vector
memories rag search VAULT_ID "Find evidence" --mode hybrid --limit 8
memories rag status VAULT_ID
memories rag ask VAULT_ID "What does the evidence say?"
rag ask にはデーモン設定の生成 URL が必要です。埋め込みモデルなしで語彙ベースの RAG を使うには --mode bm25 を追加しますが、生成 URL は引き続き必要です。memory_search は引き続き語彙検索です。高度な検索は、アセット・リビジョン ID、安定したチャンクハッシュ、元の UTF-8 バイトオフセット、スコア、引用ラベルを含む文書チャンクを返します。[S1] は 1 つの結果内の出典を識別します。通常の memory read ではチャンクハッシュではなく、その id と revision フィールドを使用してください。
中国語 BM25 とチャンク
中国語と複数言語が混在したテキストは Jieba でトークン化します。タイトル、本文、安全なメタデータは重み 5/1/2 で FTS5 BM25 ランキングに参加します。any(既定)はキーワードを組み合わせ、all はすべての検索語を要求し、phrase は元のフレーズを要求します。厳密な all/phrase 制約はベクトル・ハイブリッド候補にも適用されます。クエリーはエスケープされ、任意の FTS 演算子として解釈されません。
テキストは文や段落の境界付近で最大 768 Unicode 文字のチャンクに分割し、通常は 128 文字を重複させます。返されるオフセットは元の UTF-8 本文を指します。検索は要求結果数 100、語彙検索語 64、クエリー 1,024 バイトに制限されます。基本の memory search は文書単位でチャンクをまとめ、高度な RAG 検索は個別のチャンクを返します。--cards-only は検索対象を絞り込みます。
インデックスはクエリー間で再利用されます。保管庫の変更、同期、ポリシー変更はキャッシュされたインデックスを無効化し、ロック・再起動はすべてのインデックスとベクトルを消去します。これらを平文で永続化したり、暗号化された同期ペイロードに追加したりしません。キャッシュされた保管庫ごとの制限は 10,000 チャンク、ソーステキスト・メタデータ 16 MiB、ベクトル 32 MiB で、最大 2 つの保管庫をキャッシュします。大規模ライブラリーは、パフォーマンスで説明する基盤の状態全体の永続化の制限にも引き続き直面します。
プロセス内の EmbeddingGemma
既定の埋め込みバックエンドは、ネイティブ ONNX 推論による Google の EmbeddingGemma 300M Q4 です。Memories デーモン内で動作し、Ollama、Python、別の推論サービスは不要です。アプリケーションは推論エンジンを含み、セッション作成前に ONNX のテレメトリーを明示的に無効化します。モデル・トークナイザーファイル(約 209 MiB)はアプリが一度インストールします。
memories rag model-install
インストーラーは固定された onnx-community/embeddinggemma-300m-ONNX のリビジョンをダウンロードし、SHA-256 を検証し、範囲指定ダウンロードと再試行に対応します。既存の不一致ファイルを置き換えることはありません。検証済みの既存ファイルは再利用します。既定のディレクトリーは選択した Memories ホーム内の models/embeddinggemma です。rag.local_model_dir で既存ディレクトリーを指定できますが、Q4 ONNX グラフ、その外部データ、トークナイザー・設定ファイルを含む必要があります。モデルファイルの変更後はデーモンを再起動してください。重みには別途 Gemma の利用規約と禁止使用ポリシーが適用され、インストーラーは通知と上流のモデルカードを書き込みます。
[rag]
local_model_dir = "./models/embeddinggemma"
local_threads = 4
max_tokens = 2048
# Optional mirror of the exact pinned files:
# model_download_base_url = "https://your-mirror.example/embeddinggemma"
相対モデルパスは設定ファイルの隣を基準に解決します。local_threads を小さくすると CPU 使用量を制限できます。max_tokens はトークナイザー入力を制限し、チャンクのトークン数より小さく設定すると長い入力を切り詰めることがあります。埋め込みは正規化された 768 次元ベクトルです。モデルはクエリー・文書ごとに異なるタスク接頭辞を使います。rag index はインデックスを事前に準備し、ベクトル・ハイブリッド検索も不足する埋め込みを必要時に計算します。処理ステップの間で 5 分間の操作予算を確認し、保管庫・モデルが変更されずロック解除状態である間は、再試行時に完了済みバッチを再利用できます。
利用者が指定するモデル URL
Gemini Embedding はオンライン API であり、オフラインの EmbeddingGemma モデルではありません。 リモートプロバイダーを選ぶには rag.embedding を追加し、埋め込みをローカルに保つには省略します。完全な操作 URL を使用し、サービスが想定するモデルを設定してください。
[rag.embedding]
protocol = "gemini"
url = "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:embedContent"
model = "gemini-embedding-001"
dimensions = 768
api_key_env = "GEMINI_API_KEY"
[rag.generation]
protocol = "gemini"
url = "https://generativelanguage.googleapis.com/v1beta/models/YOUR_MODEL:generateContent"
model = "YOUR_MODEL"
api_key_env = "GEMINI_API_KEY"
指定された API キー環境変数をデーモンの環境に設定します。キーの値を TOML、URL、コマンド引数に入れないでください。Gemini は x-goog-api-key を使用します。protocol = "compatible" は Bearer 認証と一般的な {model,input} 埋め込み・チャット補完 JSON 形式を使用します。互換の埋め込みレスポンスには、embedding 配列を持つインデックス付き data 項目が必要です。生成は choices[0].message.content を返します。ローカルサービスのキーは任意です。リモート URL は HTTPS が必須で、HTTP はループバックのみ許可されます。任意の埋め込み dimensions は Gemini の outputDimensionality または互換形式の dimensions として送信され、受信時に確認され、ベクトル空間キーに組み込まれます。操作 URL に認証情報、クエリー文字列、フラグメントは使用できません。
暗黙の公開モデルエンドポイントはありません。リモート埋め込み URL を設定すると、対象となる文書チャンクの送信が許可されます。生成は選択されたチャンクと質問だけを送り、保存された認証情報・非公開コンテンツ・ファイル内容はこのパイプラインに入りません。これらの設定は個別の MCP 呼び出しではなくデーモンに属します。セキュリティを参照してください。
ハイブリッド検索と再ランキング
ベクトルモードはコサイン類似度を使用します。ハイブリッドモードは逆順位融合(k=60)で BM25 とベクトルの順位を統合します。既定の軽量な再ランキングは、検索語の網羅率とフレーズ一致を高く評価します。学習済みのクロスエンコーダーとは主張しません。必要に応じて学習済みの再ランキングサービスを設定してください。
[rag.rerank]
protocol = "compatible"
url = "https://your-reranker.example/rerank"
model = "YOUR_RERANKER"
api_key_env = "RERANK_API_KEY"
リクエストは {model, query, documents, top_n} です。レスポンスは、すべての候補について一意の有効な index と有限の relevance_score を持つ results を含む必要があります。不明・重複項目は、誤った文書を黙って並べ替えるのではなく失敗になります。--no-rerank は 2 つの任意の再ランキング段階を両方スキップします。
プロキシ、タイムアウト、再試行
[rag.http]
use_env_proxy = true
proxy_url = "http://127.0.0.1:7890"
retries = 2
backoff_ms = 500
connect_timeout_seconds = 10
timeout_seconds = 60
download_timeout_seconds = 900
明示的なプロキシは環境からのプロキシ検出を上書きします。HTTP、HTTPS、SOCKS5、SOCKS5h の URL に対応します。認証付きプロキシの値はプロキシ環境を通じて指定できますが、TOML のプロキシ URL に認証情報を含めることはできません。ループバックのモデル・ミラーエンドポイントには常に直接接続します。TLS 検証は有効のままです。
retries は追加試行回数(0-5)です。モデル API の接続・読み取り失敗、429 と 500/502/503/504 は指数バックオフで再試行でき、Retry-After の秒数は最大 30 秒まで尊重します。認証・検証エラー、安全でないリダイレクト、不正なモデル出力は再試行しません。モデル API のリダイレクトは無効です。ダウンロードのリダイレクトには HTTPS が必要で、最終的なファイルはすべてハッシュを確認します。ダウンロードタイムアウトはファイル単位の予算です。生成の再試行にはプロバイダーの追加料金が発生することがあります。試行の間に認可とキャンセルを再確認します。
回答、引用、MCP
memory_retrieve はスコープ付き検索を MCP クライアントに公開し、memory_ask は設定済みの生成サービスを呼び出します。どちらも権限付与の保管庫および通常データの制限を維持します。任意のエンドポイントを選択したり、認証情報にアクセスしたりできません。端末専用の保管庫は、ループバック以外のモデルエンドポイントへデータを送る操作を拒否します。ローカル推論と明示的に設定したループバックサービスは動作します。従来の memory_search と memory_read ツールは引き続き使用できます。同梱の Memories スキルは AI クライアント向けに memory_retrieve と memory_ask を説明しています。アップグレード後、memories inject all --force で古いインストール済みスキルを置き換えてください。
生成は出典テキストを信頼できないデータとして受け取り、アプリケーションツールは持ちません。モデルは、結果内に実在する [S1] などの引用を含む構造化された回答・引用 JSON を返す必要があります。無効または捏造された ID は拒否されます。証拠がない場合は生成を呼び出さず、結果に insufficient_evidence を設定します。引用検証が確認するのは参照であり、すべての主張が事実に裏付けられているかではありません。重要な回答は出典と照合してください。
ロック、権限付与の期限切れ・取り消し、出典状態の変更は進行中の処理を無効化し、遅れて到着する結果を抑制します。開始済みのリモートリクエストは取り消して回収できません。このリリースでは、モデルを使用する RAG インターフェースをモバイル FFI に追加しません。モバイルの通常検索は中国語・BM25 の改善を受け、BM25 検索を利用できます。