mcpField
Q
qdrant-edge

qdrant-edge

github.com/qdrantデータ・データベース265285 回インストール1 日前に更新
リポジトリ

qdrant-edge について

qdrant-edgeは、PythonまたはRustアプリケーションにQdrant Edgeを組み込む開発者向けのスキルガイドです。シャードの組み込み操作やスナップショット同期の方法に加え、単一ノード構成やクラウド同期機能がない点も説明します。

主な機能

  1. 01組み込みのBM25とスパースベクトル検索
  2. 02密ベクトルとスパースベクトルのハイブリッド検索
  3. 03スナップショットによるシャード更新
  4. 04手動での最適化とインデックス作成
  5. 05WALとバックアップ容量の見積もり

活用シーン

  1. 01サーバーのスナップショットからローカルシャードを作成
  2. 02デバイス上のシャードを段階的に更新
  3. 03キーワードとベクトルのハイブリッド検索
  4. 04一括書き込み後の圧縮とインデックス作成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/qdrant/skills --skill qdrant-edge

インストール後、Claude Code で/qdrant-edgeを入力して読み込まれたか確認します。

詳細

Qdrant Edge での構築

Edge はプロセス(Python または Rust)に組み込まれる Qdrant エンジンであり、ラップするための薄いローカルベクトルストアではありません。よくある失敗は、シャードにすでに備わっている機能、つまりキーワードスコアリング、スナップショットの適用、ファセット、カウントを作り直してしまうことです。実装を始める前に、シャード API を確認してください。Edge にない機能のひとつは、ワンコールでのクラウド同期です。組み込み機能を再実装したり、Edge にない機能を期待したりしないためにも、何が組み込まれているかを把握しておきましょう。Edge は単一ノードで、サーバーと同じデータ形式を共有します。

  • Edge はベータ版です。バージョンを固定してください。リリースごとに API が変わります Qdrant Edge。

シャードと Qdrant サーバーの同期

用途:サーバーからシャードにデータを投入する場合、シャードを最新の状態に保つ場合、バックアップする場合、または複数のデバイスのデータをひとつのコレクションに集約する場合に使用します。

組み込みの .sync() はありません。同期は、シャードのヘルパーと独自のトランスポートを組み合わせて構成するパターンです。したがって、ワンコールの同期機能を探す必要はありません。

  • ドキュメントに記載されているデュアルシャードパターンに従います。ローカル書き込み用の mutable シャードと、サーバーのスナップショットから復元した immutable シャードを使い、両方にクエリを実行して、スケジュールに従って更新します Edge synchronization guide。
  • スナップショットのダウンロード(シャードのスナップショットエンドポイントへの通常の HTTP リクエスト)は自分で実装し、unpack_snapshot と update_from_snapshot を使って適用します。手作業で tar を展開したり、セグメントをマージしたりしないでください Synchronization patterns。
  • 同期のたびにフルスナップショットを使うのではなく、snapshot_manifest から作成した部分スナップショットで増分更新します Synchronization patterns。
  • プッシュは独自の二重書き込みとして実装します。ローカルで upsert するたびにポイントをキューに追加し、バックグラウンドワーカーでサーバーにも upsert します。オフライン中はバッファリングします Synchronization patterns。

デバイス上でのキーワード検索とハイブリッド検索

用途:単独で、またはベクトルと併用して、完全一致する語句や BM25 によるマッチングが必要な場合に使用します。

  • BM25 は Edge に組み込まれています(Bm25、Bm25Config、embed_document、embed_query)。EdgeSparseVectorParams の IDF Modifier を使用し、サーバーのスパースベクトル BM25 モデルとワイヤー互換です(Edge の BM25 ドキュメントが対象としているのは、スパースベクトルのバリアントのみです)。サーバーのスナップショットから投入したシャードは、再インデックスしなくてもローカルで BM25 クエリに応答できます。別の BM25 ライブラリを組み込まないでください Edge BM25
  • Dense 埋め込みは Edge にありません。別パッケージの fastembed を使ってデバイス上で生成します FastEmbed embeddings
  • ハイブリッド検索では、密ベクトルとスパースベクトルの処理を prefetches として実行し、アプリケーションコードでランキングを結合するのではなく、ひとつの query 呼び出しで Fusion クエリを使って統合します Reading data

シャードの運用

次の場合に使用します:書き込みが蓄積している、挿入後に検索結果が古く見える、またはバックアップのサイズがデータより大きい場合。

  • Edge にはバックグラウンドオプティマイザーがありません。大量の書き込み後に optimize を呼び出してください。インデックス(スパースインデックスを含む)を作成し、削除済みのポイントを回収します。呼び出さない場合、そのデータはインデックスされないままです Edge quickstart
  • ファセット処理、カウント、列挙は組み込み機能(facet、count、scroll)です。アプリケーションコードで集計するのではなく、フィルターまたはファセット処理に使うフィールドに create_field_index でインデックスを作成してください Edge quickstart
  • 書き込み先行ログは 32 MB に事前割り当てされており、ディスク使用量やバックアップサイズが実際より大きく見えます。wal_options(Rust)でサイズを縮小し、ファイルの実サイズを実際の使用量とみなさないでください Edge quickstart

やってはいけないこと

  • 双方向の .sync() や組み込みのプッシュ経路を期待すること。Edge が提供するのはスナップショットの適用機能であり、転送と二重書き込みは自分で実装する必要があります
  • unpack_snapshot と update_from_snapshot を使わず、スナップショットのセグメントを手作業で展開したりマージしたりすること
  • Edge に組み込みの BM25 があるのに、独自またはサードパーティ製の BM25 を組み込むこと
  • クエリに embed_document を使ったり、ドキュメントに embed_query を使ったりすること。重み付けが異なるため、結果が不正になります
  • 密ベクトルとスパースベクトルのランキングをアプリケーションコードで統合すること。Edge の query は prefetches を受け付け、Fusion クエリで統合します
  • サーバーのようなバックグラウンドオプティマイザーがあると思い込むこと。optimize を呼び出すまでは、インデックス作成も圧縮も行われません
  • 分散検索やマルチノード検索が必要な場合に Edge を使うこと。単一ノード構成です Qdrant Edge
  • Edge のドキュメントに記載されていない言語、OS、アクセラレーターへの対応を主張すること

コメント