Cloud SQL 함수

이 페이지에서는 Cloud SQL 함수를 설명합니다.

벡터 변환 함수

다음 표에는 SELECT 문에 있는 벡터 정보를 조작하는 데 사용할 수 있는 함수가 나와 있습니다.

기능 설명
vector_to_string 입력: VECTOR

출력: STRING

인수를 사람이 읽을 수 있는 벡터 형식의 문자열로 변환합니다.

입력: VECTOR 유형의 인수 1개

출력: 문자열

구문:

vector_to_string(some_embedding)

string_to_vector 입력: STRING

출력: VECTOR

문자열을 사람이 읽을 수 있는 벡터 형식으로 변환합니다. 이렇게 하면 벡터에 나타내려는 값을 쓸 수 있습니다.

입력: 문자열

구문:

string_to_vector('some_embedding')

출력: 벡터 유형의 값 1개

검색 함수

이 섹션에서는 Cloud SQL 검색 함수를 설명합니다.

KNN 함수

다음 표에는 KNN 벡터 거리를 계산하는 데 사용할 수 있는 함수가 나와 있습니다.

기능 데이터 유형 설명
vector_distance 입력: VECTOR

출력: 실제

VECTOR 사이의 벡터 거리를 계산합니다. 두 VECTOR의 크기가 같아야 합니다.

입력: 필수사항입니다. 두 개의 벡터 값을 사용합니다. 선택사항인 세 번째 문자열 인수는 거리 측정값을 나타냅니다. 기본값은 `l2_squared_distance`입니다. 다른 옵션으로는 `cosine_distance` 및 `dot_product`가 있습니다.

출력: 두 벡터 간의 거리입니다.

예를 들면 다음과 같습니다.

SELECT vector_distance(string_to_vector('[1,-2,3]'), string_to_vector('[1,2,3]'), 'Distance_Measure=dot_product');

cosine_distance 입력: VECTOR

출력: 실제

두 벡터 사이의 각도 코사인을 계산하는 알고리즘입니다. 값이 작을수록 벡터 간의 유사성이 높습니다.

입력: 두 개의 벡터 값을 취합니다. 열 이름 또는 상수일 수 있습니다.

출력: 두 벡터 간의 코사인 거리입니다.

예를 들면 다음과 같습니다.

SELECT cosine_distance(string_to_vector('[1,2,3]'), string_to_vector('[1,1,1]'));

SELECT id FROM t1 ORDER BY cosine_distance(string_to_vector('[1,2,3]'), embedding_column_name) LIMIT 10;

dot_product 입력: VECTOR

출력: 실제

두 입력 벡터 간의 내적 연산을 실행하여 단일 스칼라 값을 계산하고 출력하는 알고리즘입니다.

입력: 두 개의 벡터 값을 취합니다. 열 이름 또는 상수일 수 있습니다.

출력: 두 벡터의 내적입니다.

예를 들면 다음과 같습니다.

SELECT dot_product(string_to_vector('[1,2,3]'), string_to_vector('[1,1,1]'));

SELECT id FROM t1 ORDER BY dot_product(string_to_vector('[1,2,3]'), embbeding_column_name) LIMIT 10;

l2_squared_distance 입력: VECTOR

출력: 실제

두 입력 벡터 간의 각 차원의 거리 제곱을 더하여 두 벡터 간의 유클리드 거리를 측정하는 알고리즘입니다.

입력: 두 개의 벡터 값을 취합니다. 열 이름 또는 상수일 수 있습니다.

출력: 두 벡터 간의 L2 제곱 거리입니다.

예를 들면 다음과 같습니다.

SELECT l2_squared_distance(string_to_vector('[1,2,3]'), string_to_vector('[1,1,1]'));

SELECT id FROM t1 ORDER BY l2_squared_distance(string_to_vector('[1,2,3]'), embbeding_column_name) LIMIT 10;

ANN 함수

다음 표에는 벡터 거리를 계산하는 데 사용할 수 있는 함수가 나와 있습니다.

함수 데이터 유형 설명
approx_distance 입력: VECTOR

출력: 실제

선택한 알고리즘을 사용하여 거리 측정을 충족하는 상위 K개의 가장 가까운 행을 찾습니다. 이 함수는 벡터 열에서 상수 값에 대한 근사 최근접 이웃을 쿼리합니다. 두 임베딩 열의 VECTOR 유형과 상수 VECTOR는 동일한 크기여야 합니다. 이 함수가 ANN 검색 대신 KNN(정확한 검색) 검색으로 대체되는 경우가 있습니다. 이 함수를 사용하는 쿼리에는 한도를 포함해야 합니다.

구문:

approx_distance(embedding_name,
query_vector,
'distance_measure=algorithm_name
[, num_leaves_to_search=value]'

입력:

  1. embedding_name: 기본 테이블의 벡터 임베딩 열 이름입니다.
  2. query_vector: string_to_vector의 출력일 수 있지만 반드시 그렇지는 않은 'VECTOR' 유형의 상수입니다.
  3. 쉼표로 구분된 검색 문자열 옵션에는 다음이 포함됩니다.
    • distance_measure: 필수입니다. 알고리즘을 사용하여 벡터 간의 거리를 측정합니다. 다음 문자열 리터럴을 사용합니다.
      • L2_SQUARED
      • COSINE
      • DOT_PRODUCT

      예: distance_measure=cosine

    • num_leaves_to_search: 선택사항입니다. ANN 벡터 유사성 검색을 프로빙할 리프 수를 지정합니다. 리프 수를 지정하지 않으면 MySQL용 CloudSQL에서 information_schema.innodb_vector_indexes에서 볼 수 있는 계산된 num_leaves_to_search 값을 선택합니다. 계산된 숫자는 일반적으로 검색 품질과 실적이 우수한 경우 좋은 출발점이 됩니다. 워크로드와 성능 또는 품질 절충점을 고려하여 num_leaves_to_search를 조정하는 것이 좋습니다.

    예를 들면 다음과 같습니다.

    'distance_measure=dot_product,
    num_leaves_to_search=100'

    필수 LIMIT 값: 지정된 한도는 반환할 이웃 숫자 (최대 K라고도 함)로 사용됩니다.

    출력: 기본 테이블에서 가장 가까운 상위 K개의 행의 대략적인 거리입니다.

    이 함수는 ORDER BY 또는 SELECT 목록에서만 사용할 수 있습니다.

    예를 들면 다음과 같습니다.

    SELECT id, approx_distance(embedding_column_name
    string_to_vector('[1,1,1]'),
    'distance_measure=cosine') dist from t1
    ORDER BY dist LIMIT 10;

    SELECT id
    FROM t1
    ORDER BY
    approx_distance(
    embedding_column_name
    string_to_vector('[1,1,1]'),
    'distance_measure=dot_product,num_leaves_to_search=100) LIMIT 4;

다음 단계