Agent Retrieval 벡터 스토어

Agent Retrieval(이전 명칭: Vector Search 2.0)은 Gemini Enterprise Agent Platform에서 제공하는 Google의 관리형 벡터 데이터베이스이며, 일반적으로 vectorsearch.googleapis.com에서 사용할 수 있습니다. adk-ragagent-retrieval 기능은 이를 대상으로 [VectorStore] trait를 구현하므로, pgvector, Qdrant, LanceDB 및 SurrealDB 백엔드와 마찬가지로 기존 RAG 파이프라인에 그대로 통합됩니다.

[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_collectionPOST {parent}/collections (장기 실행 작업; ALREADY_EXISTS은 no-op)
delete_collectionDELETE {collection} (장기 실행 작업; NOT_FOUND은 no-op)
upsertdataObjects:batchCreate (≤1000, 원자적), 마지막 쓰기가 승리하도록 객체별 create-else-patch로 폴백
deletedataObjects:batchDelete, ID가 없으면 객체별 delete로 폴백
searchvectorSearch 쿼리를 사용하는 dataObjects:search

청크 텍스트와 메타데이터는 벡터와 함께 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이 됩니다. 정제 결과가 동일한 서로 다른 이름은 충돌하므로 대소문자나 구두점 외에도 차이가 있는 이름을 선택하세요.

트레이트를 넘어서

구체적인 AgentRetrievalStore을 보유한 호출자의 경우, hybrid_search는 하나의 dataObjects:batchSearch 호출에서 시맨틱 쿼리와 키워드 쿼리를 실행하고 상호 순위 융합으로 순위가 매겨진 목록을 반환합니다.

# 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: 독립 실행형 Agent Retrieval은 컬렉션의 encryptionSpec을 통해 고객 관리 암호화 키를 지원합니다(생성 시 변경할 수 없음). 플랫폼 도구로 CMEK 컬렉션을 사전 프로비저닝하고 with_existing_collections_only(true)을 사용하세요.
  • Vector Search 1.0은 의도적으로 구현되지 않았습니다. 해당 제품의 인덱스/엔드포인트 인프라 모델은 VectorStore 트레이트에 적합하지 않으며, Google은 Agent Retrieval을 그 후속 제품으로 소개하고 있습니다.
  • 할당량: 일괄 쓰기는 요청당 객체 1000개로 제한되며 원자적으로 처리됩니다. 저장소는 더 큰 업서트를 자동으로 여러 청크로 나눕니다.

테스트

백엔드는 모든 adk-rag 백엔드가 실행하는 공유 VectorStore 계약 및 속성 테스트 모음을 통과하므로, 다른 저장소와 동작상 호환됩니다. #[ignore] 라이브 테스트는 고유한 이름의 컬렉션을 생성하고 삭제합니다(pgvector 및 Qdrant 라이브 테스트와 마찬가지로 데이터 플레인에서 수행).

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