이 페이지에서는 사용 가능한 모든 벡터 지원 기능과 필수 및 선택적 매개변수에 관한 자세한 정보를 제공합니다.
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 |
선택사항 | 벡터 색인의 유형입니다. 허용되는 값은 다음과 같습니다.
|
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 |
선택사항 | 벡터 색인의 유형입니다. 허용되는 값은 다음과 같습니다.
|
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 테이블 열 applied을 TRUE로 업데이트합니다.
벡터 지원이 추천을 적용할 수 없는 경우 실패 시 오류 메시지가 표시됩니다.
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 테이블 열 modified을 TRUE로 설정하는 불리언을 반환합니다.
벡터 지원이 추천을 업데이트할 수 없는 경우 실패 시 오류 메시지가 표시됩니다.
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_name은 text_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}'
);