벡터 어시스트 사용

벡터 어시스턴트를 사용하여 PostgreSQL용 AlloyDB 인스턴스에 벡터 워크로드를 배포하고 관리합니다.

벡터 지원의 정의와 작동 방식에 대한 자세한 내용은 벡터 지원 개요를 참고하세요.

시작하기 전에

  • 인스턴스에서 올바른 유지보수 버전을 사용하고 있는지 확인합니다. 벡터 어시스트를 사용하려면 최소 유지보수 버전 번호가 POSTGRES_17.20260128.03_06 이상이어야 합니다. 셀프 서비스 유지보수 실행에 관한 자세한 내용은 성능 셀프 서비스 유지보수를 참고하세요.
  • 사용하려는 데이터베이스에서 다음 명령어를 사용하여 벡터 지원 확장 프로그램을 사용 설정합니다.

    CREATE EXTENSION vector_assist CASCADE;
    

    이렇게 하면 벡터 지원에서 사용하는 vector_assist 스키마가 생성됩니다.

벡터 지원을 사용하여 벡터 워크로드 배포

벡터 지원을 사용하여 벡터 워크로드를 배포하고 관리하려면 다음을 수행해야 합니다.

벡터 사양 정의

벡터 사양 또는 벡터 사양을 정의하는 것은 벡터 지원을 사용하는 첫 번째 단계입니다. 벡터 워크로드의 유형에 따라 벡터 사양을 정의하는 데 사용하는 필드가 다를 수 있습니다.

예를 들어 테이블의 특정 열에서 시맨틱 검색을 사용 설정하려면 vector_assist.define_spec 함수를 실행하여 벡터 사양을 정의합니다.

SELECT
  recommendation_id,
  REGEXP_REPLACE(query, 'SET hnsw.ef_search TO \d+', 'SET hnsw.ef_search TO') AS query_1,
  recommendation,
  vector_spec_id,
  table_name,
  applied,
  modified
FROM vector_assist.define_spec(
  table_name => 'TABLE_NAME',
  vector_column_name => 'VECTOR_COLUMN_NAME',
  target_recall => TARGET_RECALL,
  tune_vector_index => TUNE_INDEX
);

다음 매개변수를 바꿉니다.

  • TABLE_NAME: 벡터 워크로드에서 사용할 테이블의 이름입니다.
  • (선택사항) VECTOR_COLUMN_NAME: 시맨틱 검색을 실행할 열입니다. 테이블에 벡터가 있는 열이 하나만 있는 경우 vector_assist에서 자동으로 설정할 수 있습니다. 벡터가 있는 테이블이 두 개 이상인 경우 사용할 열을 지정해야 합니다.
  • (선택사항) TARGET_RECALL: 벡터 어시스트가 충족해야 하는 타겟 재현율입니다. 지정된 경우 vector_assist는 다양한 ef_search 값으로 실험하여 정확한 최근접 이웃 검색의 재현율을 비교합니다. vector_assist는 가장 가까운 타겟 재현율을 제공하는 값으로 ef_search을 설정합니다. 기본값은 0.95입니다.
  • (선택사항) TUNE_INDEX: 워크로드에서 벡터 지원이 벡터 색인을 조정하는지 여부를 지정하는 불리언입니다. 기본값은 false입니다. 즉, 검색 관련 매개변수 (ef_search)만 조정되고 빌드 시간 매개변수(m, ef_construction)는 조정되지 않습니다.

벡터 사양에 사용할 수 있는 모든 파라미터의 전체 목록을 보려면 벡터 지원 함수 참조를 참고하세요.

벡터 사양을 만들기 위한 쿼리를 실행하면 벡터 어시스트가 벡터 워크로드를 배포하기 위해 실행해야 하는 단계(추천이라고 함)를 자동으로 생성합니다.

벡터 지원 추천 보기

벡터 사양을 사용하여 벡터 어시스턴트에서 생성된 추천을 보려면 vector_assist.get_recommendations 함수를 실행합니다.

SELECT vector_assist.get_recommendations(
  spec_id => 'SPEC_ID'
);

SPEC_ID를 추천을 보려는 벡터 사양의 사양 ID로 바꿉니다. 사용 가능한 벡터 사양 목록을 확인하려면 벡터 사양 나열을 참고하세요.

vector_assist.get_recommendations는 모든 추천이 포함된 vector_assist.RECOMMENDATIONS이라는 테이블을 반환합니다. 각 추천은 연결된 spec_id와 함께 테이블에 저장됩니다. 각 추천에는 일반적으로 다음 정보가 포함됩니다.

  • 실행해야 하는 SQL 쿼리
  • 추천에 대한 자세한 설명
  • 추천을 설명하는 기타 관련 정보

벡터 지원 권장사항 적용

생성된 추천을 개별적으로 또는 전체적으로 적용할 수 있습니다.

특정 추천을 적용하려면 vector_assist.apply_recommendation 함수를 실행하세요.

SELECT vector_assist.apply_recommendation(
  recommendation_id => 'RECOMMENDATION_ID'
);

RECOMMENDATION_IDvector_assist.RECOMMENDATIONS 테이블에서 적용하려는 벡터 지원 추천의 ID로 바꿉니다.

모든 권장사항을 함께 적용하려면 spec_id 또는 table_name 매개변수와 함께 vector_assist.apply_spec 함수를 실행하세요.

SELECT vector_assist.apply_spec(
  spec_id => 'SPEC_ID'
);

SPEC_ID를 사용할 벡터 사양의 ID로 바꿉니다.

원하는 경우 schema_name 또는 column_name 매개변수를 입력할 수도 있습니다. 사용 가능한 모든 쿼리 매개변수에 대한 자세한 내용은 벡터 어시스트 함수 참조를 참고하세요.

벡터 어시스턴트에서 생성된 추천을 적용하면 벡터 색인을 사용할 수 있습니다.

검색어 생성

벡터 어시스트를 사용하면 워크로드의 벡터 사양과 생성된 벡터 색인을 사용하여 배포된 벡터 워크로드에 최적화된 검색어를 빌드할 수 있습니다. 최적화된 검색어를 생성하려면 vector_assist.generate_query 함수를 실행하세요.

SELECT vector_assist.generate_query(
  spec_id => 'SPEC_ID',
  search_vector => 'SEARCH_VECTOR',
  top_k => 'TOP_K',
  target_recall => TARGET_RECALL,
  filter_expression => 'FILTER_EXPRESSION'
);

다음 매개변수를 바꿉니다.

  • SPEC_ID: 사용할 사양의 ID입니다.
  • SEARCH_VECTOR: 검색어의 벡터입니다. 예를 들면 [1, 2, 3]입니다.
  • (선택사항) TOP_K: 반환할 가장 가까운 이웃 수입니다. 지정되지 않은 경우 기본값은 10입니다.
  • (선택사항) TARGET_RECALL: 벡터 어시스트가 충족해야 하는 타겟 재현율입니다. 지정된 경우 vector_assist는 다양한 ef_search 값으로 실험하여 정확한 최근접 이웃 검색의 재현율을 비교합니다. vector_assist는 가장 가까운 타겟 재현율을 제공하는 값으로 ef_search을 설정합니다.
  • (선택사항) FILTER_EXPRESSION: 검색어의 필터입니다. 예를 들어 다른 열을 기준으로 필터링합니다.

검색 쿼리를 생성하는 데 사용할 수 있는 모든 파라미터의 전체 목록을 보려면 벡터 어시스트 함수 참조를 참고하세요.

이 함수의 출력은 SQL 쿼리가 포함된 텍스트를 반환합니다. 필요에 따라 이 SQL 쿼리를 실행하거나 저장할 수 있습니다.

벡터 사양 나열

개별 벡터 사양 또는 기존 벡터 사양을 모두 나열해야 하는 경우 vector_assist.list_specs 함수를 실행합니다.

SELECT vector_assist.list_specs(
  spec_id => 'SPEC_ID',
  table_name => 'TABLE_NAME'
);

다음 매개변수를 바꿉니다.

  • (선택사항) SPEC_ID: 사용할 벡터 사양의 ID입니다.
  • TABLE_NAME: 벡터 사양을 정의하는 데 사용한 테이블의 이름입니다.

다음 단계