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 Traits | Aufruf zum Abrufen des Agents |
|---|---|
create_collection | POST {parent}/collections (lang laufender Vorgang; ALREADY_EXISTS ist ein No-Op) |
delete_collection | DELETE {collection} (lang laufender Vorgang; NOT_FOUND ist ein No-Op) |
upsert | dataObjects:batchCreate (≤1000, atomar), mit Fallback auf create-else-patch pro Objekt für Last-Write-Wins |
delete | dataObjects:batchDelete, mit Fallback auf Löschen pro Objekt, wenn IDs fehlen |
search | dataObjects: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
| Option | Wirkung |
|---|---|
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-northeast1undasia-southeast1. - CMEK: Standalone Agent Retrieval unterstützt kundenseitig verwaltete Verschlüsselungsschlüssel über
encryptionSpecder Sammlung (bei der Erstellung unveränderlich). Stellen Sie CMEK-Sammlungen vorab mit Plattform-Tools bereit und verwenden Siewith_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