색인을 만들고 배포한 후에는 쿼리를 실행하여 최근접 이웃을 가져올 수 있습니다.
다음은 k최근접 이웃 알고리즘(k-NN)을 사용하여 최근접 이웃을 찾는 일치 쿼리 예시입니다.
공개 엔드포인트의 쿼리 예시
Python
Python
Curl
아래에 나열된 publicEndpointDomainName
은 배포에서 찾을 수 있으며 형식은 <number>.<region>-<number>.vdb.vertexai.goog
입니다.
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://1957880287.us-central1-181224308459.vdb.vertexai.goog/v1/projects/181224308459/locations/us-central1/indexEndpoints/3370566089086861312:findNeighbors -d '{deployed_index_id: "test_index_public1", queries: [{datapoint: {datapoint_id: "0", feature_vector: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}, neighbor_count: 5}]}'
이 curl 예시는 공개 엔드포인트가 restful 및 grpc_cli
에 대한 이중 프로토콜을 지원하더라도 http(s)
클라이언트에서 호출을 수행하는 방법을 보여줍니다.
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://1957880287.us-central1-181224308459.vdb.vertexai.goog/v1/projects/${PROJECT_ID}/locations/us-central1/indexEndpoints/${INDEX_ENDPOINT_ID}:readIndexDatapoints -d '{deployed_index_id:"test_index_public1", ids: ["606431", "896688"]}'
이 curl 예시에서는 토큰 및 숫자 제한을 사용하여 쿼리하는 방법을 보여줍니다.
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${PUBLIC_ENDPOINT_DOMAIN}/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexEndpoints/${INDEX_ENDPOINT_ID}:findNeighbors -d '{deployed_index_id:"${DEPLOYED_INDEX_ID}", queries: [{datapoint: {datapoint_id:"x", feature_vector: [1, 1], "sparse_embedding": {"values": [111.0,111.1,111.2], "dimensions": [10,20,30]}, numeric_restricts: [{namespace: "int-ns", value_int: -2, op: "GREATER"}, {namespace: "int-ns", value_int: 4, op: "LESS_EQUAL"}, {namespace: "int-ns", value_int: 0, op: "NOT_EQUAL"}], restricts: [{namespace: "color", allow_list: ["red"]}]}}]}'
Console
다음 안내에 따라 콘솔에서 공개 엔드포인트에 배포된 색인을 쿼리합니다.
- Google Cloud 콘솔의 Vertex AI 섹션에서 배포 및 사용 섹션으로 이동합니다. 벡터 검색을 선택합니다.
- 쿼리할 색인을 선택합니다. 색인 정보 페이지가 열립니다.
- 배포된 색인 섹션까지 아래로 스크롤하여 쿼리할 배포된 색인을 선택합니다. 배포된 색인 정보 페이지가 열립니다.
- 쿼리 색인 섹션에서 쿼리 방법을 밀집 임베딩 값, 희소 임베딩 값, 하이브리드 임베딩 값(밀집 및 희소 임베딩) 또는 특정 데이터 포인트 중에서 선택합니다.
- 선택한 쿼리 유형에 대한 쿼리 매개변수를 입력합니다. 예를 들어 밀집 임베딩으로 쿼리하는 경우 쿼리할 임베딩 벡터를 입력합니다.
- 제공된 curl 명령어를 사용하거나 Cloud Shell로 실행하여 쿼리를 실행합니다.
- Cloud Shell을 사용하는 경우 Cloud Shell에서 실행을 선택합니다.
- Cloud Shell에서 실행
- 결과로 최근접 이웃이 반환됩니다.
색인을 만드는 방법, 공개 엔드포인트에 배포하는 방법, 쿼리 방법에 대한 엔드 투 엔드 예시를 보려면 공식 노트북의 StackOverflow 질문에 벡터 검색 및 텍스트용 Vertex AI 임베딩 사용을 참조하세요.
성능에 영향을 미치는 쿼리 시간 설정
다음 쿼리 시간 매개변수는 벡터 검색을 사용할 때 지연 시간, 가용성, 비용에 영향을 미칠 수 있습니다. 이 가이드는 대부분의 케이스에 적용됩니다. 하지만 항상 구성으로 실험하여 사용 사례에 적합한지 확인해야 합니다.
매개변수 정의는 색인 구성 매개변수를 참조하세요.
매개변수 | 정보 | 성능 영향 |
---|---|---|
approximateNeighborsCount |
각 샤드에서 검색할 적합한 결과 수를 알고리즘에 알려줍니다.
|
|
setNeighborCount |
쿼리에서 반환할 결과 수를 지정합니다. |
값이 300이하면 대부분의 사용 사례에서 성능이 유지됩니다. 값이 더 크면 특정 사용 사례에 맞게 테스트합니다. |
fractionLeafNodesToSearch |
최근접 이웃을 검색할 때 방문할 리프 노드 비율을 제어합니다. 이는 리프 노드당 임베딩이 많을수록 리프당 더 많은 데이터가 검사된다는 점에서 leafNodeEmbeddingCount 와 관련이 있습니다.
|
|
다음 단계
- 색인 업데이트 및 다시 빌드 방법 알아보기
- 벡터 일치 필터링 방법 알아보기
- 색인 모니터링 방법 알아보기