Agent-Retrieval-Vektorspeicher

Agent Retrieval (früher Vector Search 2.0) ist die verwaltete Vektordatenbank von Google auf der Gemini Enterprise Agent Platform und allgemein verfügbar unter vectorsearch.googleapis.com. Die Funktion agent-retrieval von adk-rag implementiert das Trait [VectorStore] dafür, sodass sie sich genau wie die Backends pgvector, Qdrant, LanceDB und SurrealDB in die bestehende RAG-Pipeline einfügt.

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

Schnellstart

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(())
}

Abbildung auf die Plattform

Operation des TraitsAufruf zum Abrufen des Agents
create_collectionPOST {parent}/collections (lang laufender Vorgang; ALREADY_EXISTS ist ein No-Op)
delete_collectionDELETE {collection} (lang laufender Vorgang; NOT_FOUND ist ein No-Op)
upsertdataObjects:batchCreate (≤1000, atomar), mit Fallback auf create-else-patch pro Objekt für Last-Write-Wins
deletedataObjects:batchDelete, mit Fallback auf Löschen pro Objekt, wenn IDs fehlen
searchdataObjects:search mit einer vectorSearch-Abfrage

Chunk-Text und Metadaten werden im Data Object zusammen mit dem Vektor gespeichert – ein zusätzlicher Speicher ist nicht erforderlich. Der Speicher läuft im BYOE-Modus (bring-your-own-embeddings): Die Embeddings stammen aus der Embedder-Pipeline von adk-rag, wodurch das Verhalten über verschiedene Backends hinweg identisch bleibt. Bei den Scores handelt es sich um DOT_PRODUCT-Distanzen, die bei normalisierten Embeddings der Kosinusähnlichkeit entsprechen (höher bedeutet relevanter).

Konfiguration

OptionWirkung
with_collection_prefix("rag-")Stellt jeder Sammlungs-ID ein Präfix voran und isoliert die Sammlungen dieses Stores
with_existing_collections_only(true)create_collection überprüft, ob die Sammlung vorhanden ist, anstatt sie zu erstellen – für Bereitstellungen, die sie vorab mit Plattform-Tools bereitstellen
with_endpoint(...)Benutzerdefinierter Ursprung von API (Loopback HTTP für Tests zulässig)

Sammlungsnamen werden in RFC-1035-Labels umgewandelt (in Kleinbuchstaben; ungültige Zeichen werden zu Bindestrichen), sodass my_docs zur Sammlungs-ID my-docs wird. Unterschiedliche Namen, die in identische Labels umgewandelt werden, kollidieren – wählen Sie Namen, die sich nicht nur durch Groß-/Kleinschreibung oder Interpunktion unterscheiden.

Über das Trait hinaus

Für Aufrufer, die das konkrete AgentRetrievalStore besitzen, führt hybrid_search eine semantische Abfrage und eine Schlüsselwortabfrage in einem einzigen dataObjects:batchSearch-Aufruf aus und gibt die nach Reciprocal-Rank-Fusion sortierte Liste zurück:

# 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(())
# }

Hinweise zur Plattform

  • Regionen: Agent Retrieval ist regional verfügbar; zu den unterstützten Regionen gehören us-central1, us-east4, us-west1, europe-north1, europe-west2, europe-west4, asia-east1, asia-northeast1 und asia-southeast1.
  • CMEK: Standalone Agent Retrieval unterstützt kundenseitig verwaltete Verschlüsselungsschlüssel über encryptionSpec der Sammlung (bei der Erstellung unveränderlich). Stellen Sie CMEK-Sammlungen vorab mit Platt­form-Tools bereit und verwenden Sie with_existing_collections_only(true).
  • Vector Search 1.0 ist absichtlich nicht implementiert. Das Infrastrukturmodell mit Index und Endpunkt passt schlecht zum Trait VectorStore, und Google positioniert Agent Retrieval als dessen Nachfolger.
  • Kontingente: Batch-Schreibvorgänge sind auf 1000 Objekte pro Anfrage begrenzt und atomar; der Store teilt größere Upserts automatisch auf.

Testen

Das Backend besteht den gemeinsamen VectorStore-Vertrag und die zugehörige Property-Suite, die von allen adk-rag-Backends ausgeführt wird, und ist daher verhaltensmäßig mit den anderen Stores austauschbar. Der Live-Test #[ignore] erstellt und löscht seine eigene Sammlung mit einem eindeutigen Namen (Data Plane, wie die pgvector- und Qdrant-Live-Tests):

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