Agent Retrieval ベクトルストア

Agent Retrieval(旧称 Vector Search 2.0)は、Gemini Enterprise Agent Platform 上で Google が提供するマネージドベクトルデータベースであり、vectorsearch.googleapis.com で一般提供されています。adk-ragagent-retrieval 機能は、これに対して [VectorStore] trait を実装しているため、既存の RAG パイプラインにおいて、pgvector、Qdrant、LanceDB、SurrealDB バックエンドとまったく同じように組み込めます。

[dependencies]
adk-rag = { version = "2.1.0", features = ["agent-retrieval"] }

クイックスタート

use adk_rag::VectorStore;
use adk_rag::agent_retrieval::{AgentRetrievalConfig, AgentRetrievalStore};

async fn run() -> adk_rag::Result<()> {
    // Application Default Credentials; project/location from the environment.
    let store = AgentRetrievalStore::new_with_adc(AgentRetrievalConfig::from_env()?)?;

    store.create_collection("docs", 768).await?;
    // upsert / search / delete exactly as with any other VectorStore backend
    Ok(())
}

プラットフォームへのマッピング

トレイト操作エージェント取得呼び出し
create_collectionPOST {parent}/collections(長時間実行操作;ALREADY_EXISTSは何もしない)
delete_collectionDELETE {collection}(長時間実行操作;NOT_FOUNDは何もしない)
upsertdataObjects:batchCreate(≤1000、アトミック)、最後の書き込みを優先するため、オブジェクト単位の作成、それ以外はパッチにフォールバック
deletedataObjects:batchDelete、ID がない場合はオブジェクト単位の削除にフォールバック
searchvectorSearch クエリを使用した dataObjects:search

チャンクテキストとメタデータはベクトルとともに Data Object 内に保存されるため、補助ストアは必要ありません。このストアは BYOE(bring-your-own-embeddings)モードで動作します。埋め込みは adk-rag の埋め込みパイプラインから取得されるため、バックエンド間で動作が同一に保たれます。スコアは DOT_PRODUCT 距離であり、正規化された埋め込みの場合はコサイン類似度と等しくなります(値が大きいほど関連性が高いことを示します)。

設定

オプション効果
with_collection_prefix("rag-")すべてのコレクション ID にプレフィックスを付け、このストアのコレクションを分離します
with_existing_collections_only(true)create_collection はコレクションを作成する代わりに存在を検証します — プラットフォームツールで事前にプロビジョニングするデプロイ用
with_endpoint(...)カスタムAPIのオリジン(テスト用にループバックHTTPを許可)

コレクション名は RFC 1035 ラベルにサニタイズされます(小文字化され、無効な文字はハイフンになります)。そのため、my_docs はコレクション ID my-docs になります。同じようにサニタイズされる異なる名前は衝突するため、大文字・小文字や句読点以外の部分が異なる名前を選択してください。

トレイトの先へ

具体的な AgentRetrievalStore を保持する呼び出し元の場合、hybrid_search は 1 回の dataObjects:batchSearch 呼び出しでセマンティッククエリとキーワードクエリを実行し、reciprocal-rank-fusion でランキングしたリストを返します。

# use adk_rag::agent_retrieval::{AgentRetrievalConfig, AgentRetrievalStore};
# async fn run(store: AgentRetrievalStore, embedding: Vec<f32>) -> adk_rag::Result<()> {
let results = store
    .hybrid_search("docs", &embedding, "quarterly revenue", 10, (0.6, 0.4))
    .await?;
# Ok(())
# }

プラットフォームに関する注意事項

  • リージョン: Agent Retrieval はリージョン単位で提供されます。サポートされるリージョンには、us-central1us-east4us-west1europe-north1europe-west2europe-west4asia-east1asia-northeast1asia-southeast1 が含まれます。
  • CMEK: スタンドアロンの Agent Retrieval は、コレクションの encryptionSpec を介して顧客管理の暗号鍵をサポートします(作成時に変更できません)。プラットフォームツールで CMEK コレクションを事前にプロビジョニングし、with_existing_collections_only(true) を使用してください。
  • Vector Search 1.0 は意図的に実装されていません。 そのインデックス/エンドポイントのインフラストラクチャモデルは VectorStore トレイトに適合しにくく、Google は Agent Retrieval をその後継として位置付けています。
  • クォータ: バッチ書き込みは 1 リクエストあたり 1000 オブジェクトに制限され、アトミックに実行されます。ストアはこれより大きなアップサートを自動的に分割します。

テスト

バックエンドは、すべての adk-rag バックエンドが実行する共有 VectorStore コントラクトおよびプロパティスイートに合格するため、他のストアと動作上互換性があります。#[ignore] ライブテストでは、pgvector および Qdrant のライブテストと同様に、独自の名前を付けたコレクションを作成して削除します(データプレーン)。

GOOGLE_CLOUD_PROJECT=my-project GOOGLE_CLOUD_LOCATION=us-central1 \
  cargo test -p adk-rag --features agent-retrieval -- --ignored