Agent Retrieval ベクトルストア
Agent Retrieval(旧称 Vector Search 2.0)は、Gemini Enterprise Agent Platform 上で Google が提供するマネージドベクトルデータベースであり、vectorsearch.googleapis.com で一般提供されています。adk-rag の agent-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_collection | POST {parent}/collections(長時間実行操作;ALREADY_EXISTSは何もしない) |
delete_collection | DELETE {collection}(長時間実行操作;NOT_FOUNDは何もしない) |
upsert | dataObjects:batchCreate(≤1000、アトミック)、最後の書き込みを優先するため、オブジェクト単位の作成、それ以外はパッチにフォールバック |
delete | dataObjects:batchDelete、ID がない場合はオブジェクト単位の削除にフォールバック |
search | vectorSearch クエリを使用した 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-central1、us-east4、us-west1、europe-north1、europe-west2、europe-west4、asia-east1、asia-northeast1、asia-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