이 페이지에서는 AlloyDB AI 벡터 검색 전략을 설명하고 각 전략을 사용해야 하는 경우를 설명합니다. 기본적으로 AlloyDB는 k-최근접 이웃 검색 (KNN)을 사용하여 쿼리와 유사한 벡터를 찾습니다. 벡터 색인은 근사 최근접 이웃 (ANN)이라는 검색 전략을 구현합니다. 벡터 색인을 만들면 AlloyDB AI에서 KNN보다 성능이 더 우수한 ANN을 사용합니다. 벡터 색인을 선택할 때는 쿼리 지연 시간과 재현율의 균형을 맞춰야 합니다.
재현율은 검색이 지정된 쿼리에 대해 관련 항목을 모두 얼마나 효과적으로 검색하는지 측정합니다. 예를 들어 데이터베이스의 항목을 각각 나타내는 100개의 삽입이 있다고 가정해 보겠습니다. 타겟 벡터로 임베딩을 쿼리하고 결과를 10개로 제한합니다. KNN 벡터 검색은 무작위 대입 계산 방법을 사용하여 정확한 가장 가까운 벡터 10개를 찾으므로 재현율이 100% 입니다. 벡터 검색 색인이 생성되거나 선택되지 않은 경우 AlloyDB AI는 기본적으로 이 방법을 사용합니다. PostgreSQL용 AlloyDB에서 벡터 색인을 만들면 일반적으로 ANN이 사용되는데, ANN은 더 빠른 검색을 위해 유사성에 따라 벡터를 파티셔닝할 수 있습니다. 따라서 ANN을 사용하면 앞의 예에서 반환된 10개의 벡터가 거리가 가장 가까운 10개의 벡터가 아닐 수 있습니다. 검색된 10개의 벡터 중 8개만 공간에서 쿼리 벡터에 가장 가까운 경우 재현율은 80%입니다.
쿼리 지연 시간은 검색 결과가 생성되는 속도를 정의합니다. 예를 들어 지연 시간은 쿼리를 제출한 후 벡터를 반환하기 위해 검색에 소요된 시간을 기준으로 계산됩니다.
검색 전략 선택
AlloyDB에서 벡터 검색을 실행할 때는 다음 검색 전략 중 하나를 선택하세요.
검색 전략 | 설명 | 사용 사례 |
K-최근접 이웃 (KNN) |
주어진 쿼리 데이터 포인트에 대한 k-최근접 이웃 데이터 포인트를 찾는 알고리즘입니다. 색인을 만들지 않고 벡터 검색을 실행하면 기본적으로 KNN 검색이 실행됩니다. KNN 검색의 성능을 더욱 개선하려면 삽입 열과 쿼리와 관련된 다른 열을 열 형식 엔진의 열 저장소에 추가하세요. 열을 수동으로 추가하거나 자동 열 형식 지정을 사용하여 열을 추가할 수 있습니다. |
|
최근접 이웃 탐색 (ANN) | 가장 가까운 데이터 포인트를 대략적으로 찾는 알고리즘입니다. ANN은 유사성을 기반으로 기존 고객 데이터 포인트를 작은 그룹으로 나눕니다. |
|
벡터 검색 쿼리의 성능을 최적화하려면 벡터 색인을 만드는 것이 좋습니다. 유사성 검색에 ANN 색인이 사용되는 방식에 대한 자세한 내용은 ScaNN을 사용하여 색인 만들기를 참고하세요.
필터링된 KNN 검색을 가속화하려면 열 기반 엔진을 사용하세요.