एजेंट रिट्रीवल वेक्टर स्टोर
Agent Retrieval (जिसे पहले Vector Search 2.0 कहा जाता था) Gemini Enterprise Agent Platform पर Google का प्रबंधित वेक्टर डेटाबेस है, जो सामान्य रूप से vectorsearch.googleapis.com पर उपलब्ध है। adk-rag की agent-retrieval सुविधा इसके विरुद्ध [VectorStore] trait को लागू करती है, इसलिए यह मौजूदा RAG पाइपलाइन में pgvector, Qdrant, LanceDB और SurrealDB बैकएंड की तरह ही सहजता से सम्मिलित हो जाता है।
[dependencies]
adk-rag = { version = "2.1.0", features = ["agent-retrieval"] }
त्वरित शुरुआत
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(())
}
प्लेटफ़ॉर्म पर मैपिंग
| ट्रेट ऑपरेशन | एजेंट रिट्रीवल कॉल |
|---|---|
create_collection | POST {parent}/collections (दीर्घकालिक ऑपरेशन; ALREADY_EXISTS कोई ऑपरेशन नहीं है) |
delete_collection | DELETE {collection} (दीर्घकालिक ऑपरेशन; NOT_FOUND कोई ऑपरेशन नहीं है) |
upsert | dataObjects:batchCreate (≤1000, atomic), अंतिम-लेखन-विजय के लिए प्रति-ऑब्जेक्ट create-else-patch पर वापस आते हुए |
delete | dataObjects:batchDelete, ID अनुपलब्ध होने पर प्रति-ऑब्जेक्ट delete पर वापस आते हुए |
search | dataObjects:search एक vectorSearch क्वेरी के साथ |
चंक टेक्स्ट और मेटाडेटा वेक्टर के साथ Data Object में संग्रहीत होते हैं — किसी सहायक स्टोर की आवश्यकता नहीं होती। स्टोर BYOE (अपने एम्बेडिंग्स लाएँ) मोड में चलता है: एम्बेडिंग्स adk-rag की एम्बेडर पाइपलाइन से आती हैं, जिससे सभी बैकएंड में व्यवहार एकसमान रहता है। स्कोर DOT_PRODUCT दूरियाँ होते हैं, जो सामान्यीकृत एम्बेडिंग्स के लिए कोसाइन समानता के बराबर होती हैं (अधिक स्कोर अधिक प्रासंगिकता दर्शाता है)।
कॉन्फ़िगरेशन
| विकल्प | प्रभाव |
|---|---|
with_collection_prefix("rag-") | प्रत्येक संग्रह ID के आगे उपसर्ग जोड़ता है, जिससे इस स्टोर के संग्रह अलग रहते हैं |
with_existing_collections_only(true) | create_collection संग्रह के मौजूद होने की पुष्टि करता है, उसे बनाने के बजाय — उन परिनियोजनों के लिए जो प्लेटफ़ॉर्म टूलिंग से पहले से प्रावधानित किए गए हों |
with_endpoint(...) | कस्टम API मूल (परीक्षणों के लिए लूपबैक HTTP की अनुमति) |
संग्रह के नामों को RFC 1035 लेबल में सैनिटाइज़ किया जाता है (लोअरकेस में बदलकर; अमान्य वर्ण हाइफ़न बन जाते हैं), इसलिए my_docs संग्रह ID my-docs बन जाता है। ऐसे अलग-अलग नाम जो सैनिटाइज़ होने पर एक जैसे हो जाते हैं, टकराव उत्पन्न करते हैं — ऐसे नाम चुनें जो केवल केस या विराम-चिह्नों से अलग न हों।
trait से आगे
ठोस AgentRetrievalStore रखने वाले callers के लिए, hybrid_search एक ही dataObjects:batchSearch call में semantic query और keyword query चलाता है और reciprocal-rank-fusion द्वारा rank की गई सूची लौटाता है:
# 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(())
# }
प्लेटफ़ॉर्म संबंधी टिप्पणियाँ
- क्षेत्र: Agent Retrieval क्षेत्रीय है; समर्थित क्षेत्रों में
us-central1,us-east4,us-west1,europe-north1,europe-west2,europe-west4,asia-east1,asia-northeast1औरasia-southeast1शामिल हैं। - CMEK: standalone Agent Retrieval, संग्रह के
encryptionSpecके माध्यम से customer-managed encryption keys का समर्थन करता है (निर्माण के समय अपरिवर्तनीय)। CMEK संग्रहों को platform tooling से पहले से provision करें औरwith_existing_collections_only(true)का उपयोग करें। - Vector Search 1.0 को जानबूझकर लागू नहीं किया गया है। इसका index/endpoint infrastructure model
VectorStoretrait के लिए उपयुक्त नहीं है, और Google Agent Retrieval को इसका उत्तराधिकारी मानता है। - कोटा: batch writes प्रति request अधिकतम 1000 objects तक सीमित हैं और atomic होती हैं; store बड़े upserts को स्वचालित रूप से छोटे भागों में बाँटता है।
परीक्षण
Backend साझा VectorStore contract और property suite को पास करता है, जिसे सभी adk-rag backends चलाते हैं, इसलिए व्यवहार की दृष्टि से यह अन्य stores के साथ interchangeable है। #[ignore] live test अपना विशिष्ट नाम वाला collection बनाता और हटाता है (pgvector और Qdrant live tests की तरह data-plane):
GOOGLE_CLOUD_PROJECT=my-project GOOGLE_CLOUD_LOCATION=us-central1 \
cargo test -p adk-rag --features agent-retrieval -- --ignored