Magasin vectoriel Agent Retrieval
Agent Retrieval (anciennement Vector Search 2.0) est la base de donnĂ©es vectorielle gĂ©rĂ©e de Google sur la plateforme Gemini Enterprise Agent, gĂ©nĂ©ralement disponible Ă vectorsearch.googleapis.com. La fonctionnalitĂ© agent-retrieval de adk-rag implĂ©mente le trait [VectorStore] pour cette base, et sâintĂšgre donc au pipeline RAG existant exactement comme les backends pgvector, Qdrant, LanceDB et SurrealDB.
[dependencies]
adk-rag = { version = "2.1.0", features = ["agent-retrieval"] }
Démarrage rapide
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(())
}
Correspondance avec la plateforme
| OpĂ©ration du trait | Appel de rĂ©cupĂ©ration de lâagent |
|---|---|
create_collection | POST {parent}/collections (opération de longue durée ; ALREADY_EXISTS est sans effet) |
delete_collection | DELETE {collection} (opération de longue durée ; NOT_FOUND est sans effet) |
upsert | dataObjects:batchCreate (â€1000, atomique), avec repli sur une crĂ©ation par objet suivie dâun correctif pour appliquer la rĂšgle de la derniĂšre Ă©criture gagnante |
delete | dataObjects:batchDelete, avec repli sur une suppression par objet lorsque les identifiants sont manquants |
search | dataObjects:search avec une requĂȘte vectorSearch |
Les fragments de texte et les mĂ©tadonnĂ©es sont stockĂ©s dans lâobjet de donnĂ©es avec le vecteur â aucun magasin compagnon nâest nĂ©cessaire. Le magasin fonctionne en mode BYOE (apportez vos propres embeddings) : les embeddings proviennent du pipeline dâembedding de adk-rag, ce qui garantit un comportement identique entre les diffĂ©rents backends. Les scores sont des distances DOT_PRODUCT, qui correspondent Ă la similaritĂ© cosinus pour les embeddings normalisĂ©s (plus le score est Ă©levĂ©, plus le rĂ©sultat est pertinent).
Configuration
| Option | Effet |
|---|---|
with_collection_prefix("rag-") | Préfixe chaque identifiant de collection, isolant les collections de ce magasin |
with_existing_collections_only(true) | create_collection vĂ©rifie que la collection existe au lieu de la crĂ©er â pour les dĂ©ploiements qui la prĂ©crĂ©ent avec des outils de plateforme |
with_endpoint(...) | Origine API personnalisée (HTTP loopback autorisé pour les tests) |
Les noms de collections sont nettoyĂ©s pour devenir des libellĂ©s RFC 1035 (convertis en minuscules ; les caractĂšres non valides deviennent des traits dâunion), de sorte que my_docs devient lâID de collection my-docs. Les noms distincts qui, aprĂšs nettoyage, sont identiques entrent en collision â choisissez des noms qui diffĂšrent autrement que par la casse ou la ponctuation.
Au-delĂ du trait
Pour les appelants qui dĂ©tiennent le AgentRetrievalStore concret, hybrid_search exĂ©cute une requĂȘte sĂ©mantique et une requĂȘte par mots-clĂ©s en un seul appel dataObjects:batchSearch, puis renvoie la liste classĂ©e par fusion des rangs rĂ©ciproques :
# 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(())
# }
Remarques concernant la plateforme
- Régions : Agent Retrieval est régional ; les régions prises en charge incluent
us-central1,us-east4,us-west1,europe-north1,europe-west2,europe-west4,asia-east1,asia-northeast1etasia-southeast1. - CMEK : Agent Retrieval autonome prend en charge les clés de chiffrement gérées par le client via le
encryptionSpecde la collection (immuable lors de la crĂ©ation). PrĂ©provisionnez les collections CMEK avec les outils de la plateforme et utilisezwith_existing_collections_only(true). - Vector Search 1.0 nâest dĂ©libĂ©rĂ©ment pas implĂ©mentĂ©. Son modĂšle dâinfrastructure dâindex et de point de terminaison sâadapte mal au trait
VectorStore, et Google prĂ©sente Agent Retrieval comme son successeur. - Quotas : les Ă©critures par lots sont limitĂ©es Ă 1000 objets par requĂȘte et sont atomiques ; le magasin segmente automatiquement les opĂ©rations dâinsertion ou de mise Ă jour plus volumineuses.
Tests
Le back-end réussit le contrat et la suite de tests de propriétés partagés VectorStore, exécutés par tous les back-ends adk-rag ; son comportement est donc interchangeable avec celui des autres magasins. Le test en conditions réelles #[ignore] crée et supprime sa propre collection dont le nom est unique (plan de données, comme les tests en conditions réelles de pgvector et de Qdrant) :
GOOGLE_CLOUD_PROJECT=my-project GOOGLE_CLOUD_LOCATION=us-central1 \
cargo test -p adk-rag --features agent-retrieval -- --ignored