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 traitAppel de rĂ©cupĂ©ration de l’agent
create_collectionPOST {parent}/collections (opération de longue durée ; ALREADY_EXISTS est sans effet)
delete_collectionDELETE {collection} (opération de longue durée ; NOT_FOUND est sans effet)
upsertdataObjects: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
deletedataObjects:batchDelete, avec repli sur une suppression par objet lorsque les identifiants sont manquants
searchdataObjects: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

OptionEffet
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-northeast1 et asia-southeast1.
  • CMEK : Agent Retrieval autonome prend en charge les clĂ©s de chiffrement gĂ©rĂ©es par le client via le encryptionSpec de la collection (immuable lors de la crĂ©ation). PrĂ©provisionnez les collections CMEK avec les outils de la plateforme et utilisez with_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
Magasin vectoriel Agent Retrieval - Documentation ADK-Rust | ADK-Rust