PSA 또는 PSC 색인 쿼리로 최근접 이웃 가져오기

PSA 또는 PSC 색인을 만든 후 쿼리를 실행하여 최근접 이웃을 가져올 수 있습니다.

PSC 색인 쿼리 정보

PSC 색인에서 생성된 컴퓨팅 주소를 사용하여 쿼리를 전송할 수 있습니다. 다음 예시에서 TARGET_IP를 생성된 컴퓨팅 주소로 바꿉니다.

PSA 색인 쿼리 정보

DeployedIndex에는 TARGET_IP가 있으며, 이는 IndexEndpoints를 나열하여 검색할 수 있습니다.

색인 쿼리

DeployedIndex를 쿼리하려면 포트 10000에서 TARGET_IP에 연결하고 Match 또는 BatchMatch 메서드를 호출합니다. 또한 DOC_ID를 사용하여 쿼리할 수 있습니다.

다음 예시에서는 오픈소스 도구인 grpc_cli를 사용하여 배포된 색인 서버로 grpc 요청을 보냅니다.

gRPC

첫 번째 예시에서는 Match 메서드를 사용하여 단일 쿼리를 보냅니다.

./grpc_cli call ${TARGET_IP}:10000 google.cloud.aiplatform.container.v1.MatchService.Match '{deployed_index_id: "${DEPLOYED_INDEX_ID}", float_val: [-0.1,..]}'

두 번째 예시에서는 두 개의 개별 쿼리를 동일한 BatchMatch 요청으로 결합합니다.

./grpc_cli call ${TARGET_IP}:10000 google.cloud.aiplatform.container.v1.MatchService.BatchMatch 'requests: [{deployed_index_id: "${DEPLOYED_INDEX_ID}", requests: [{deployed_index_id: "${DEPLOYED_INDEX_ID}", float_val: [-0.1,..]}, {deployed_index_id: "${DEPLOYED_INDEX_ID}", float_val: [-0.2,..]}]}]'

[서비스가 피어링된 동일한 VPC](#vpc-network-peering-setup)에서 실행 중인 클라이언트에서 이러한 API를 호출해야 합니다.

DOC_ID를 사용하여 쿼리를 실행하려면 다음 예시를 사용합니다.

./grpc_cli call ${TARGET_IP}:10000  google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"test_index1"',embedding_id: '"606431"'"

자세한 내용은 클라이언트 라이브러리 설명을 참조하세요.

Console

다음 안내에 따라 콘솔에서 VPC 색인을 쿼리합니다.

  1. Google Cloud 콘솔의 Vertex AI 섹션에서 배포 및 사용 섹션으로 이동합니다. 벡터 검색을 선택합니다.

    벡터 검색으로 이동

  2. 쿼리할 VPC 색인을 선택합니다. 색인 정보 페이지가 열립니다.
  3. 배포된 색인 섹션까지 아래로 스크롤하여 쿼리하려는 배포된 색인을 선택합니다. 배포된 색인 정보 페이지가 열립니다.
  4. 쿼리 색인 섹션에서 쿼리 매개변수를 선택합니다. 벡터 또는 특정 데이터 포인트로 쿼리하도록 선택할 수 있습니다.
  5. 오픈소스 도구인 grpc_cli를 사용하거나 Vertex AI SDK for Python을 사용하여 쿼리를 실행합니다.

성능에 영향을 주는 쿼리 시간 설정

다음 쿼리 시간 매개변수는 벡터 검색을 사용할 때 지연 시간, 가용성, 비용에 영향을 줄 수 있습니다. 이 가이드는 대부분의 케이스에 적용됩니다. 하지만 특정 사용 사례에 적합한지 확인하기 위해 항상 사용자 구성으로 실험해야 합니다.

매개변수 정의는 색인 구성 매개변수를 참조하세요.

매개변수 정보 성능 영향
approximateNeighborsCount

각 샤드에서 검색할 적합한 결과 수를 알고리즘에 알려줍니다.

approximateNeighborsCount 값은 항상 setNeighborsCount 값보다 커야 합니다. setNeighborsCount 값이 작으면 이 값의 10배가 approximateNeighborsCount에 권장됩니다. setNeighborsCount 값이 클수록 더 작은 배수를 사용할 수 있습니다.

approximateNeighborsCount 값을 늘리면 다음과 같이 성능에 영향을 줄 수 있습니다.

  • 재현율: 증가
  • 지연 시간: 잠재적으로 증가
  • 가용성: 영향 없음
  • 비용: 검색 중 더 많은 데이터가 처리되므로 증가 가능

approximateNeighborsCount 값을 줄이면 다음과 같이 성능에 영향을 줄 수 있습니다.

  • 재현율: 감소
  • 지연 시간: 잠재적으로 감소
  • 가용성: 영향 없음
  • 비용: 검색 중 더 적은 데이터가 처리되므로 비용 감소 가능
setNeighborCount 쿼리로 반환할 결과 수를 지정합니다.

값이 300이하면 대부분의 사용 사례에서 성능이 유지됩니다. 값이 더 크면 특정 사용 사례에 맞게 테스트합니다.

fractionLeafNodesToSearch 최근접 이웃을 검색할 때 방문할 리프 노드 비율을 제어합니다. 이는 리프 노드당 임베딩이 많을수록 리프당 더 많은 데이터가 검사된다는 점에서 leafNodeEmbeddingCount와 관련이 있습니다.

fractionLeafNodesToSearch 값을 늘리면 다음과 같이 성능에 영향을 줄 수 있습니다.

  • 재현율: 증가
  • 지연 시간: 증가
  • 가용성: 영향 없음
  • 비용: 지연 시간이 높을수록 머신 리소스를 더 많이 점유하므로 증가 가능

fractionLeafNodesToSearch 값을 줄이면 다음과 같이 성능에 영향을 줄 수 있습니다.

  • 재현율: 감소
  • 지연 시간: 감소
  • 가용성: 영향 없음
  • 비용: 지연 시간이 낮을수록 머신 리소스를 더 적게 점유하므로 감소 가능

다음 단계