Vertex AI RAG エンジン
管理された Vertex AI RAG Engine コーパスからグラウンディング済みのコンテキストを取得します。自己ホスト型のベクトルストア、埋め込みプロバイダー、取り込みパイプラインは必要ありません。
概要
Vertex AI RAG Engine は、Google Cloud のマネージド RAG バックエンドです。ドキュメントを RAG コーパス にインポートすると、プラットフォームがチャンク分割、埋め込み、ベクトル検索を処理します。adk-rag の vertex-rag 機能は、次を提供します。
VertexRagEngineClient— ADC で認証される読み取り専用のデータプレーン クライアント。コーパスの取得・一覧表示、インポート済みファイルの一覧表示、 コンテキストの取得を行いますVertexAiRagRetrievalTool—adk_core::Toolとしての検索。adk-python のVertexAiRagRetrievalに相当する Rust 実装です
対象範囲: 検索のみ。コーパスの作成とファイルのインポートはプロビジョニングに関する処理です。Vertex AI コンソール
または RagCorpora/RagFiles 管理 APIs を使用してください。
インストール
[dependencies]
adk-rag = { version = "2.1.0", features = ["vertex-rag"] }
認証には Application Default Credentials を使用します。
gcloud auth application-default login
クライアント
use adk_rag::vertex_rag::{RetrieveContextsRequest, VertexRagConfig, VertexRagEngineClient};
#[tokio::main]
async fn main() -> adk_core::Result<()> {
// Or VertexRagConfig::from_env() reading GOOGLE_CLOUD_PROJECT / GOOGLE_CLOUD_LOCATION
let config = VertexRagConfig::new("my-project", "us-central1");
let client = VertexRagEngineClient::new_with_adc(config)?;
// Verify the corpus exists and has imported files; fails with
// actionable guidance when it is missing, empty, or in ERROR state.
let corpus = client.ensure_corpus_ready("1234567890").await?;
println!("corpus: {:?} ({:?} files)", corpus.display_name, corpus.rag_files_count);
// Enumerate what's in the project and the corpus.
let corpora = client.list_corpora().await?;
let files = client.list_rag_files("1234567890").await?;
println!("{} corpora, {} files", corpora.len(), files.len());
// Retrieve the most relevant passages for a query.
let request = RetrieveContextsRequest::new("what is the refund policy?", ["1234567890"])
.similarity_top_k(5)
.vector_distance_threshold(0.7);
for context in client.retrieve_contexts(&request).await? {
println!(
"[{:.3}] {} — {}",
context.score.unwrap_or_default(),
context.source_display_name.as_deref().unwrap_or("<unknown>"),
context.text.as_deref().unwrap_or(""),
);
}
Ok(())
}
コーパスには、単純な ID(クライアントのプロジェクトとロケーションに基づいて解決されます)または完全な projects/*/locations/*/ragCorpora/* リソース名を渡せます。
注:
similarity_top_kとvector_distance_thresholdは adk-python の名前を維持していますが、現在の通信経路で送信されます —query.ragRetrievalConfig.topKおよびquery.ragRetrievalConfig.filter.vectorDistanceThreshold。非推奨の v1beta1 表記(query.similarityTopK、vertexRagStore.vectorDistanceThreshold)は v1 から削除されており、出力されることはありません。vector_similarity_thresholdは、フィルターにおけるもう一方の相互排他的な選択肢です。
検索ツール
VertexAiRagRetrievalTool は、必須の query 文字列を 1 つ受け取り、
JSON 個の {text, sourceUri, sourceDisplayName, score} オブジェクトの配列を返します。
このツールは読み取り専用かつ並行実行に安全であることを示すため、
ToolExecutionStrategy::Auto は他の読み取り処理と並列にディスパッチできます。
use std::sync::Arc;
use adk_agent::LlmAgentBuilder;
use adk_model::GeminiModel;
use adk_rag::vertex_rag::{VertexAiRagRetrievalTool, VertexRagConfig, VertexRagEngineClient};
fn main() -> anyhow::Result<()> {
let config = VertexRagConfig::new("my-project", "us-central1");
let client = Arc::new(VertexRagEngineClient::new_with_adc(config)?);
let retrieval = VertexAiRagRetrievalTool::new(client, vec!["1234567890".into()])
.similarity_top_k(5)
.vector_distance_threshold(0.7);
let api_key = std::env::var("GOOGLE_API_KEY")?;
let agent = LlmAgentBuilder::new("rag-assistant")
.description("Answers questions grounded in a Vertex AI RAG Engine corpus")
.model(Arc::new(GeminiModel::new(&api_key, "gemini-3.7-flash")?))
.tool(Arc::new(retrieval))
.instruction(
"Answer using the vertex_rag_retrieval tool. Retrieve first, then \
answer strictly from the retrieved passages, citing sourceDisplayName.",
)
.build()?;
let _ = agent;
Ok(())
}
完全に実行可能なエージェントについては、examples/vertex_rag
を参照してください。
cargo run --manifest-path examples/vertex_rag/Cargo.toml
API リファレンス
| 操作 | エンドポイント | 戻り値 |
|---|---|---|
get_corpus(corpus) | GET v1beta1/{corpus} | RagCorpus(404 の場合は対処可能な未検出エラーになる) |
ensure_corpus_ready(corpus) | GET v1beta1/{corpus} | RagCorpus;存在しない、空、または ERROR 状態の場合はエラー |
list_corpora() | GET v1beta1/{parent}/ragCorpora | Vec<RagCorpus>、ページネーションに従う |
list_rag_files(corpus) | GET v1beta1/{corpus}/ragFiles | Vec<RagFile>、ページネーションに従う |
retrieve_contexts(&request) | POST v1beta1/{parent}:retrieveContexts | Vec<RagContext> |
レスポンス型は柔軟にデシリアライズされます。すべてのフィールドはオプションであり、不明なフィールドは無視されるため、新しいサーバーフィールドによってパースが失敗することはありません。エラーにはコンポーネント Memory(retrieval はメモリドメインです。AdkError には専用の RAG コンポーネントがありません)、プロバイダー vertex_ai、および機械可読な rag.vertex.* コードが含まれます。
環境変数
| 変数 | 使用者 | 説明 |
|---|---|---|
GOOGLE_CLOUD_PROJECT | VertexRagConfig::from_env | コーパスを所有するプロジェクト |
GOOGLE_CLOUD_LOCATION | VertexRagConfig::from_env | リージョン(例: us-central1) |
VERTEX_RAG_CORPUS | 例 / ライブテスト | コーパス ID または完全なリソース名 |
代わりにセルフホスト型の RAG を利用しますか?
ご自身で実行するパイプライン(プラグ可能なチャンク分割器、埋め込みプロバイダー、 およびベクトルストア(Qdrant、LanceDB、pgvector、SurrealDB))については、 RAG を参照してください。