벡터 지원 참조

이 페이지에서는 사용 가능한 모든 벡터 지원 기능과 필수 및 선택적 매개변수에 관한 자세한 정보를 제공합니다.

vector_assist.define_spec

새 벡터 사양 또는 벡터 사양을 정의하고 벡터 워크로드를 늘리는 데 필요한 추천을 반환합니다. 이 함수는 사용자 제공 사양을 적용하여 추천을 생성합니다.

함수

CREATE OR REPLACE FUNCTION vector_assist.define_spec(
    spec_id TEXT DEFAULT NULL,
    table_name TEXT,
    schema_name TEXT DEFAULT NULL,
    vector_column_name TEXT DEFAULT NULL,
    text_column_name TEXT DEFAULT NULL,
    vector_index_type TEXT DEFAULT NULL, -- Allowed: 'hnsw', 'ivfflat'
    embeddings_available BOOL DEFAULT NULL,
    embedding_model TEXT DEFAULT NULL,
    num_vectors INT DEFAULT NULL,
    dimensionality INT DEFAULT NULL,
    distance_func TEXT DEFAULT NULL, -- Allowed: 'cosine', 'ip', 'l2', 'l1'
    quantization TEXT DEFAULT NULL, -- Allowed: 'none', 'halfvec', 'bit'
    prefilter_column_names TEXT[] DEFAULT NULL,
    memory_budget_kb INT DEFAULT NULL, -- In KB
    target_recall FLOAT DEFAULT NULL,
    target_top_k INT DEFAULT NULL,
    tune_vector_index BOOL DEFAULT FALSE, -- Set to true if target_recall is set
)
RETURNS SETOF vector_assist.RECOMMENDATIONS;

매개변수

매개변수 필수 여부 설명
spec_id 필수 (자동 생성) 개발자가 정의한 벡터 사양의 고유 ID입니다.
table_name 필수 여부 벡터 워크로드 설정에 사용할 테이블 이름입니다.
schema_name 선택사항 벡터 워크로드에 사용할 테이블이 포함된 스키마입니다. 스키마는 스키마 검색 경로를 기반으로 자동으로 추론됩니다.
vector_column_name 선택사항 또는 필수사항 벡터 임베딩이 포함된 열의 열 이름입니다.

벡터 열을 두 개 이상 사용하고 text_column_name가 선언되지 않은 경우 이 열이 필요합니다. 벡터 열을 하나만 사용하는 경우 이 파라미터는 선택사항입니다.
text_column_name 선택사항 또는 필수사항 텍스트 열의 열 이름입니다. 벡터 워크로드에 텍스트 열에서 생성된 삽입이 필요한 경우 이 매개변수가 필요합니다.

이 열은 vector_column_name 매개변수가 NULL이고 다른 벡터 열이 없는 경우 필요합니다.

이 매개변수는 google_ml_integration 확장 프로그램을 사용하여 지정된 텍스트 열에서 임베딩을 생성합니다.
vector_index_type 선택사항 벡터 색인의 유형입니다. 허용되는 값은 다음과 같습니다.
  • HNSW
  • IVFFlat
  • SCANN
embeddings_available 선택사항 선택한 테이블에 벡터 임베딩이 있는지 확인하는 불리언입니다. 벡터 열이 감지되지 않고 text_column_name 매개변수가 설정된 경우 이 필드는 FALSE로 설정됩니다.
embedding_model 선택사항 또는 필수사항 google_ml.models에서 임베딩을 생성하는 데 사용할 모델 ID입니다. embeddings_available 매개변수가 FALSE 또는 NULL인 경우를 제외하고 이 필드는 선택사항입니다.
num_vectors 선택사항 표의 벡터 수입니다.
dismensionality 선택사항 주어진 벡터의 차원입니다.
distance_func 선택사항 벡터를 비교하는 데 사용할 거리 함수입니다. 허용되는 값은 cosine, ip, l2, l1입니다.
quantization 선택사항 벡터 색인의 양자화입니다. 허용되는 값은 none, halfvec, bit입니다.
prefilter_column_names 선택사항 사전 필터링을 위해 지정된 열의 색인을 만듭니다. 이렇게 하면 열에 선택도가 높은 필터가 있는 쿼리의 성능을 개선할 수 있습니다.
memory_budget_kb 선택사항 색인 빌드의 최대 메모리 (KB)입니다.
target_recall 선택사항 표준 벡터 쿼리의 타겟 재현율입니다.
target_top_k 선택사항 재현율 계산을 위해 가져올 상위 K개의 일치 값입니다. 이 값은 target_recall 매개변수가 지정된 경우에 사용됩니다.
tune_vector_index 선택사항 워크로드의 벡터 색인을 조정합니다. 사용 설정된 경우 벡터 어시스트는 벡터 사양을 사용하여 벡터 색인 또는 검색어를 자동 조정하고 최적의 데이터베이스 및 색인 매개변수를 계산합니다. 허용되는 값은 TRUE 또는 FALSE입니다.

반환 값

요청된 벡터 워크로드를 설정하기 위해 적용해야 하는 추천 테이블을 반환합니다. 각 행은 실행 가능한 SQL 쿼리와 권장사항을 적용해야 하는 이유에 관한 자세한 설명을 포함하는 단일 권장사항입니다. apply_recommendation() 함수를 사용하여 권장사항을 적용할 수 있습니다.

추천 표에는 다음 열이 포함됩니다.

열 이름 유형 설명
recommendation_id 텍스트 추천의 ID입니다. 추천은 이 ID를 사용하여 적용됩니다.
vector_spec_id 텍스트 추천과 연결된 벡터 사양의 ID입니다.
table_name 텍스트 추천과 연결된 테이블 이름입니다.
schema_name 텍스트 지정된 테이블이 포함된 스키마 이름입니다.
query 텍스트 추천의 결과를 달성하기 위해 실행할 수 있는 SQL 쿼리입니다.
recommendation 텍스트 추천이 적용된 후 예상되는 결과를 포함한 추천에 대한 설명입니다. 이 열에는 추천의 이유와 근거도 포함됩니다. 이 컨텍스트를 사용하여 필요에 따라 쿼리를 조정하고 추천을 재생성할 수 있습니다.
applied 불리언 추천이 적용되었는지 여부를 표시합니다.
modified 불리언 사용자가 추천을 수정했는지 여부를 표시합니다.
created_at 시간대가 포함된 타임스탬프 추천이 생성된 시간입니다(timestamp with time zone 형식). 예를 들면 2024-07-18 09:00:00-08입니다.

vector_assist.list_specs

지정된 테이블과 열의 현재 벡터 사양을 반환합니다.

함수

CREATE OR REPLACE FUNCTION vector_assist.list_specs(
  table_name      TEXT,
  column_name     TEXT DEFAULT NULL
)
RETURNS SETOF vector_assist.VECTOR_SPECS

매개변수

매개변수 필수 여부 설명
table_name 필수 여부 벡터 사양을 가져올 테이블의 이름입니다.
column_name 선택사항 사양을 반환하기 전에 테이블을 필터링할 열 이름입니다. 열 이름을 지정하면 이 열 이름과 일치하는 텍스트 또는 벡터 열 이름이 포함된 사양이 반환됩니다.

반환 값

지정된 테이블과 선택적으로 열 이름의 사양 테이블을 반환합니다.

vector_assist.modify_spec

기존 벡터 사양을 수정합니다. 벡터 사양이 수정되면 연결된 추천이 새 사양을 기반으로 재생성됩니다.

함수

CREATE OR REPLACE FUNCTION vector_assist.modify_spec(
  spec_id                TEXT,
  table_name             TEXT DEFAULT NULL,
  schema_name            TEXT DEFAULT NULL,
  vector_column_name     TEXT DEFAULT NULL,
  text_column_name       TEXT DEFAULT NULL,
  vector_index_type      TEXT DEFAULT NULL,
  embeddings_available   BOOL DEFAULT NULL,
  num_vectors            INT DEFAULT NULL,
  dimensionality         INT DEFAULT NULL,
  embedding_model        TEXT DEFAULT NULL,
  prefilter_column_names TEXT[] DEFAULT NULL,
  distance_func          TEXT DEFAULT NULL,
  quantization           TEXT DEFAULT NULL,
  memory_budget_kb       INT DEFAULT NULL,
  target_recall          FLOAT DEFAULT NULL,
  target_top_k           INT DEFAULT NULL,
  tune_vector_index      BOOL DEFAULT NULL
)
RETURNS SETOF vector_assist.RECOMMENDATIONS

매개변수

매개변수 필수 여부 설명
spec_id 필수 (자동 생성) 개발자가 정의한 벡터 사양의 고유 ID입니다.
table_name 필수 여부 벡터 워크로드 설정에 사용할 테이블 이름입니다.
schema_name 선택사항 벡터 워크로드에 사용할 테이블이 포함된 스키마입니다. 스키마는 스키마 검색 경로를 기반으로 자동으로 추론됩니다.
vector_column_name 선택사항 또는 필수사항 벡터 임베딩이 포함된 열의 열 이름입니다.

벡터 열을 두 개 이상 사용하고 text_column_name가 선언되지 않은 경우 이 열이 필요합니다. 벡터 열을 하나만 사용하는 경우 이 파라미터는 선택사항입니다.
text_column_name 선택사항 또는 필수사항 텍스트 열의 열 이름입니다. 벡터 워크로드에 텍스트 열에서 생성된 삽입이 필요한 경우 이 매개변수가 필요합니다.

이 열은 vector_column_name 매개변수가 NULL이고 다른 벡터 열이 없는 경우 필요합니다.

이 매개변수는 google_ml_integration 확장 프로그램을 사용하여 지정된 텍스트 열에서 임베딩을 생성합니다.
vector_index_type 선택사항 벡터 색인의 유형입니다. 허용되는 값은 다음과 같습니다.
  • HNSW
  • IVFFlat
  • SCANN
embeddings_available 선택사항 선택한 테이블에 벡터 임베딩이 있는지 확인하는 불리언입니다. 벡터 열이 감지되지 않고 text_column_name 매개변수가 설정된 경우 이 필드는 FALSE로 설정됩니다.
embedding_model 선택사항 또는 필수사항 google_ml.models에서 임베딩을 생성하는 데 사용할 모델 ID입니다. embeddings_available 매개변수가 FALSE 또는 NULL인 경우를 제외하고 이 필드는 선택사항입니다.
num_vectors 선택사항 표의 벡터 수입니다.
dismensionality 선택사항 주어진 벡터의 차원입니다.
distance_func 선택사항 벡터를 비교하는 데 사용할 거리 함수입니다. 허용되는 값은 cosine, ip, l2, l1입니다.
quantization 선택사항 벡터 색인의 양자화입니다. 허용되는 값은 none, halfvec, bit입니다.
prefilter_column_names 선택사항 벡터 검색 쿼리에서 사전 필터링에 사용할 수 있는 열을 식별합니다.
memory_budget_kb 선택사항 색인 빌드의 최대 메모리 (KB)입니다.
target_recall 선택사항 표준 벡터 쿼리의 타겟 재현율입니다.
target_top_k 선택사항 재현율 계산을 위해 가져올 상위 K개의 일치 값입니다. 이 값은 target_recall 매개변수가 지정된 경우에 사용됩니다.
tune_vector_index 선택사항 워크로드의 벡터 색인을 조정합니다. 사용 설정된 경우 벡터 어시스트는 벡터 사양을 사용하여 벡터 색인 또는 검색어를 자동 조정하고 최적의 데이터베이스 및 색인 매개변수를 계산합니다. 허용되는 값은 TRUE 또는 FALSE입니다.

반환 값

요청된 벡터 워크로드를 설정하는 데 적용해야 하는 업데이트된 추천 테이블을 반환합니다. 각 행은 실행 가능한 SQL 쿼리와 권장사항을 적용해야 하는 이유에 관한 자세한 설명을 포함하는 단일 권장사항입니다. 권장사항은 apply_recommendation() 함수를 사용하여 적용할 수 있습니다.

추천 표에는 다음 열이 포함됩니다.

열 이름 유형 설명
recommendation_id 텍스트 추천의 ID입니다. 추천은 이 ID를 사용하여 적용됩니다.
vector_spec_id 텍스트 추천과 연결된 벡터 사양의 ID입니다.
table_name 텍스트 추천과 연결된 테이블 이름입니다.
schema_name 텍스트 지정된 테이블이 포함된 스키마 이름입니다.
query 텍스트 추천의 결과를 달성하기 위해 실행할 수 있는 SQL 쿼리입니다.
recommendation 텍스트 추천이 적용된 후 예상되는 결과를 포함한 추천에 대한 설명입니다. 이 열에는 추천의 이유와 근거도 포함됩니다. 이 컨텍스트를 사용하여 필요에 따라 쿼리를 조정하고 추천을 재생성할 수 있습니다.
applied 불리언 추천이 적용되었는지 여부를 표시합니다.
modified 불리언 사용자가 추천을 수정했는지 여부를 표시합니다.
created_at 시간대가 포함된 타임스탬프 추천이 생성된 시간입니다.

vector_assist.get_recommendations

특정 벡터 spec_id와 연결된 추천을 반환합니다.

함수

CREATE OR REPLACE FUNCTION vector_assist.get_recommendations (
    spec_id TEXT
)
RETURNS SETOF vector_assist.RECOMMENDATIONS;

매개변수

매개변수 필수 여부 설명
spec_id 필수 여부 지정된 벡터 spec_id에 대한 추천을 가져옵니다.

반환 값

요청된 추천 표를 반환합니다.

추천 표에는 다음 열이 포함됩니다.

열 이름 유형 설명
recommendation_id 텍스트 추천의 ID입니다. 추천은 이 ID를 사용하여 적용됩니다.
vector_spec_id 텍스트 추천과 연결된 벡터 사양의 ID입니다.
table_name 텍스트 추천과 연결된 테이블 이름입니다.
schema_name 텍스트 지정된 테이블이 포함된 스키마 이름입니다.
query 텍스트 추천의 결과를 달성하기 위해 실행할 수 있는 SQL 쿼리입니다.
recommendation 텍스트 추천이 적용된 후 예상되는 결과를 포함한 추천에 대한 설명입니다. 이 열에는 추천의 이유와 근거도 포함됩니다. 이 컨텍스트를 사용하여 필요에 따라 쿼리를 조정하고 추천을 재생성할 수 있습니다.
applied 불리언 추천이 적용되었는지 여부를 표시합니다.
modified 불리언 사용자가 추천을 수정했는지 여부를 표시합니다.
created_at 시간대가 포함된 타임스탬프 추천이 생성된 시간입니다.

vector_assist.apply_recommendation

recommendation_id를 사용하여 단일 추천을 적용합니다.

함수

CREATE OR REPLACE FUNCTION vector_assist.get_recommendations (
    spec_id TEXT
)
RETURNS SETOF vector_assist.RECOMMENDATIONS;

매개변수

매개변수 필수 여부 설명
recommenation_id 필수 여부 적용할 벡터 추천의 ID입니다.

반환 값

추천이 성공적으로 적용되었는지 확인하는 불리언을 반환하고 vector_assist.RECOMMENDATIONS 테이블 열 appliedTRUE로 업데이트합니다.

벡터 지원이 추천을 적용할 수 없는 경우 실패 시 오류 메시지가 표시됩니다.

vector_assist.apply_spec

특정 벡터 spec_id 또는 테이블 이름과 연결된 모든 추천을 적용합니다. 이 함수는 모든 추천을 살펴보고 각 추천에서 vector_assist.apply_recommendation 함수를 실행합니다.

함수를 실행하려면 spec_id 또는 table_name를 지정해야 합니다.

함수

CREATE OR REPLACE FUNCTION vector_assist.apply_spec(
    spec_id TEXT DEFAULT NULL,
    table_name TEXT DEFAULT NULL,
    schema_name TEXT DEFAULT NULL,
    column_name TEXT DEFAULT NULL -- text_column_name or vector_column_name
)
RETURNS BOOLEAN;

매개변수

매개변수 필수 여부 설명
spec_id 선택사항 지정된 벡터 spec_id에 대한 모든 추천을 적용합니다.
table_name 선택사항 지정된 테이블에 대한 모든 추천을 적용합니다.
schema_name 선택사항 지정된 테이블이 포함된 스키마입니다.
column_name 선택사항 테이블에 벡터 사양이 여러 개 포함된 경우 사용할 text_column_name 또는 vector_column_name를 식별합니다.

반환 값

모든 추천이 성공적으로 적용되었는지 확인하는 불리언을 반환하고 모든 추천에 대해 vector_assist.RECOMMENDATIONS 테이블 열 applied의 값을 TRUE로 설정합니다.

벡터 지원이 추천을 적용할 수 없는 경우 실패 시 오류 메시지가 표시됩니다.

vector_assist.modify_recommendation

특정 추천의 쿼리를 수정하고 연결된 추천의 vector_assist.RECOMMENDATIONS 표에서 modified 필드를 TRUE로 설정합니다.

함수

CREATE OR REPLACE FUNCTION vector_assist.modify_recommendation(
    recommendation_id TEXT,
    modified_query TEXT
)
RETURNS BOOLEAN;

매개변수

매개변수 필수 여부 설명
recommendation_id 필수 여부 수정할 추천의 ID입니다.
modified_query 필수 여부 추천에 대해 사용자가 수정한 SQL 쿼리입니다.

반환 값

추천이 성공적으로 업데이트되었는지 확인하고 vector_assist.RECOMMENDATIONS 테이블 열 modifiedTRUE로 설정하는 불리언을 반환합니다.

벡터 지원이 추천을 업데이트할 수 없는 경우 실패 시 오류 메시지가 표시됩니다.

vector_assist.generate_query

정의된 벡터 사양 및 검색 매개변수를 기반으로 최적화된 벡터 검색 쿼리를 생성합니다. 이 함수는 설정된 target_recall을 충족하도록 ef_search 값을 조정할 수 있습니다(해당하는 경우).

함수

CREATE OR REPLACE FUNCTION vector_assist.generate_query(
    spec_id TEXT DEFAULT NULL,
    table_name TEXT DEFAULT NULL,
    schema_name TEXT DEFAULT NULL,
    column_name TEXT DEFAULT NULL, -- text_column_name or vector_column_name of the spec
    search_text TEXT DEFAULT NULL,
    search_vector VECTOR DEFAULT NULL, -- e.g. '[1.0,2.0,3.0]'::vector
   output_column_names TEXT[] DEFAULT NULL, -- Columns to retrieve, NULL for SELECT *
    top_k INT DEFAULT NULL,
    filter_expressions TEXT[] DEFAULT NULL,
    target_recall FLOAT DEFAULT NULL, -- Inherited from spec, can be overridden
    iterative_index_search BOOL DEFAULT NULL
)
RETURNS TEXT; -- Returns the text representing the search query

매개변수

매개변수 필수 여부 설명
spec_id 선택사항 쿼리를 생성할 spec_id를 지정합니다.
table_name 선택사항 spec_id이 제공되지 않은 경우 검색어를 생성할 테이블 이름을 지정합니다. 테이블에 사양이 여러 개 포함되어 있으면 매개변수가 오류를 반환합니다.
column_name 선택사항 spec_id이 제공되지 않은 경우 검색어를 생성할 열 이름을 지정합니다. 열에 사양이 여러 개 포함되어 있으면 매개변수가 오류를 반환합니다. column_nametext_column_name 또는 vector_column_name일 수 있습니다.
output_column_name 선택사항 출력 쿼리에서 가져올 열 이름입니다. 모든 열을 가져오려면 이 매개변수를 NULL로 설정합니다.
search_text 선택사항 임베딩을 생성할 검색 텍스트입니다. 벡터 사양에 embedding_model이 필요합니다. 임베딩은 사양의 모델을 사용하여 생성됩니다. search_text 또는 search_vector 매개변수 중 하나만 설정할 수 있습니다.
search_vector 선택사항 검색어의 벡터입니다. search_text 또는 search_vector 매개변수 중 하나만 설정할 수 있습니다.
top_k 선택사항 반환할 최근접 이웃 수입니다.
filter_expressions 선택사항 검색어에 적용할 필터 표현식입니다. 필터는 가격 < 100과 같은 표의 필드에 적용할 수 있습니다.
iterative_index_search 선택사항 필터링된 쿼리에 대해 반복 색인 검색을 실행할지 여부를 설정합니다.이 매개변수는 벡터 사양의 설정을 재정의합니다.
target_recall 선택사항 검색어의 타겟 리콜입니다. 이 매개변수는 벡터 사양의 설정을 재정의하고 ef_search를 조정합니다.

반환 값

지정된 매개변수의 벡터 검색 쿼리를 포함하는 텍스트를 반환합니다. 이 쿼리는 실행하거나 나중에 실행하도록 저장할 수 있습니다.

vector_assist.evaluate_query_recall

지정된 쿼리에 대한 벡터 색인의 재현율을 평가합니다. 이 함수는 JSON 문자열의 데이터베이스 및 색인 구성을 입력으로 사용합니다.

함수

CREATE OR REPLACE FUNCTION vector_assist.evaluate_query_recall(
  IN ann_query text,
  IN vector_search_configurations json DEFAULT NULL,
  OUT recall float,
  OUT ann_execution_time float,
  OUT ground_truth_execution_time float,
  OUT index_type text)
RETURNS RECORD

매개변수

매개변수 필수 여부 설명
ann_query 필수 여부 리콜을 평가해야 하는 SQL 쿼리입니다. 이 쿼리는 pgvector ANN 쿼리여야 합니다.
vector_search_configurations 선택사항 ANN 쿼리에 설정할 수 있는 구성입니다. 이 매개변수는 JSON 형식이어야 합니다.

반환 값

지정된 쿼리에 대한 벡터 색인의 재현율을 평가하는 표를 반환합니다.

표에는 다음 열이 포함되어 있습니다.

열 이름 유형 설명
recall 부동 소수점 수 색인이 반환하는 벡터 중 실제 최근접 이웃인 벡터의 비율입니다. 이 측정항목은 검색 품질을 정량화하는 데 사용됩니다. 이 함수를 사용하면 예상되는 벡터 쿼리 리콜 결과를 반환하도록 파라미터를 조정할 수 있습니다.
ann_execution_time 부동 소수점 수 색인 스캔을 사용하여 벡터 쿼리를 실행하는 데 걸리는 시간입니다.
ground_truth_execution_time 부동 소수점 수 순차 스캔을 사용하여 쿼리를 실행하는 데 걸리는 시간입니다.

다음 예에서는 HNSW 색인의 재현율을 평가하고 HNSW.ef_search 구성 매개변수를 재정의합니다.

SELECT * FROM vector_assist.evaluate_query_recall(
  ann_query => 'SELECT id FROM items ORDER BY embedding <=> ''[1,2,3]'' LIMIT 10',
  vector_search_configurations => '{"hnsw.ef_search": 30}'
);