이 문서에서는 pgvector
확장 프로그램을 사용하여 PostgreSQL용 AlloyDB에서 벡터 유사성 검색을 실행하는 방법을 설명합니다. 벡터 유사성 검색(최단 이웃 검색이라고도 함)을 사용하면 데이터에서 특정 쿼리 벡터와 가장 유사한 데이터 포인트를 찾을 수 있습니다.
임베딩을 저장하고 색인을 생성한 후 AlloyDB 데이터베이스에 대해 의미상 유사한 벡터를 쿼리할 수 있습니다. pgvector
쿼리 기능을 사용하여 임베딩 벡터의 최근접 이웃을 찾습니다.
벡터 임베딩 저장 및 색인 생성에 관한 자세한 내용은 각각 벡터 임베딩 저장 및 색인 생성을 참고하세요.
벡터 입력으로 유사성 검색 실행
유사성 검색을 실행하려면 테이블, 임베딩 열, 거리 함수, 타겟 임베딩, 반환할 행 수를 지정합니다. embedding()
함수를 사용하여 텍스트를 벡터로 변환한 다음 pgvector
연산자를 사용하여 벡터를 저장된 임베딩과 비교할 수도 있습니다.
임베딩 벡터의 가장 가까운 의미론적 이웃을 찾으려면 다음 쿼리 예시를 실행하면 됩니다. 여기서 색인 생성 중에 사용한 것과 동일한 거리 함수를 설정합니다.
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN DISTANCE_FUNCTION_QUERY ['EMBEDDING']
LIMIT ROW_COUNT
다음을 바꿉니다.
TABLE
: 텍스트를 비교할 임베딩이 포함된 테이블입니다.EMBEDDING_COLUMN
: 저장된 임베딩이 포함된 열입니다.DISTANCE_FUNCTION_QUERY
: 이 쿼리와 함께 사용할 거리 함수입니다. 색인을 만들 때 사용된 거리 함수에 따라 다음 중 하나를 선택합니다.L2 거리:
<->
내적:
<#>
코사인 거리:
<=>
EMBEDDING
: 저장된 의미론적 이웃 중 가장 가까운 이웃을 찾으려는 임베딩 벡터입니다.ROW_COUNT
: 반환할 행의 개수입니다.가장 일치하는 값을 하나만 원하는 경우
1
을 지정합니다.
다른 쿼리 예시를 보려면 쿼리를 참고하세요.
텍스트 입력과 함께 pgvector
를 사용하여 유사성 검색 실행
embedding()
함수를 사용하여 텍스트를 벡터로 변환할 수도 있습니다. 기본 pgvector
PostgreSQL 확장 프로그램은 AlloyDB용으로 맞춤설정되며 vector
이라고 합니다. 벡터를 pgvector
최근접 이웃 연산자 중 하나(예: L2 거리의 경우 <->
)에 적용하여 의미상 가장 유사한 임베딩이 있는 데이터베이스 행을 찾습니다.
embedding()
에서 real
배열을 반환하므로 pgvector
연산자와 함께 이러한 값을 사용하려면 embedding()
호출을 vector
으로 명시적으로 변환해야 합니다.
CREATE EXTENSION IF NOT EXISTS google_ml_integration VERSION '1.2';
CREATE EXTENSION IF NOT EXISTS vector;
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN::vector
<-> embedding('MODEL_IDVERSION_TAG', 'TEXT')
LIMIT ROW_COUNT
다음을 바꿉니다.
MODEL_ID
: 쿼리할 모델의 ID입니다.Vertex AI Model Garden을 사용하는 경우
text-embedding-005
을 모델 ID로 지정합니다. AlloyDB에서 텍스트 임베딩에 사용할 수 있는 클라우드 기반 모델입니다. 자세한 내용은 텍스트 임베딩을 참고하세요.선택사항:
VERSION_TAG
: 쿼리할 모델의 버전 태그입니다. 태그 앞에@
를 추가합니다.Vertex AI에서
text-embedding-005
영어 모델 중 하나를 사용하는 경우 모델 버전에 나열된 버전 태그 중 하나(예:text-embedding-005
)를 지정합니다.항상 버전 태그를 지정하는 것이 좋습니다. 버전 태그를 지정하지 않으면 AlloyDB에서 최신 모델 버전을 사용하게 되어 예상치 못한 결과가 발생할 수 있습니다.
TEXT
: 벡터 임베딩으로 변환할 텍스트입니다.
다음 단계
- 벡터 검색 실행 튜토리얼
- 벡터 쿼리 성능 조정
- 벡터 색인 측정항목
- AlloyDB, pgvector, 모델 엔드포인트 관리를 사용하여 스마트 쇼핑 어시스턴트를 빌드하는 방법을 알아봅니다.