적용 대상: Databricks SQL
중요
이 기능은 공개 미리 보기 상태입니다.
이 vector_search()
함수를 사용하면 SQL을 사용하여 Mosaic AI 벡터 검색 인덱스를 쿼리할 수 있습니다.
요구 사항
- 이 함수는 클래식 SQL 웨어하우스에서 사용할 수 없습니다.
- 자세한 내용은 Databricks SQL 가격 책정 페이지를 참조하세요.
- 이 함수는 Mosaic AI Vector Search 지원되는
지역에서 사용할 수 있습니다.
구문
Databricks Runtime 15.3 이상에서는 query_text
또는 query_vector
사용하여 인덱스에서 검색할 항목을 지정할 수 있습니다.
SELECT * FROM vector_search(
index,
{ query_text | query_vector },
[ num_results ]
)
Databricks Runtime 15.2 이하에서는 query
사용하여 인덱스에서 검색할 항목을 지정할 수 있습니다.
SELECT * FROM vector_search(
index, query, num_results
)
논쟁
모든 인수는 이름(예: vector_search(index => indexName, query_text => queryText)
)으로 전달되어야 합니다.
-
index
:STRING
상수로, 호출을 위해 동일한 작업 영역에 있는 기존 벡터 검색 인덱스의 정규화된 이름입니다. 정의자는 인덱스 "선택" 권한이 있어야 합니다. - 다음 중 하나를 사용하여 인덱스에서 검색할 식을 지정합니다.
- Databricks Runtime 15.3 이상의 경우
query_text
를 사용하여 델타 동기화 인덱스의 임베딩 원본 열에서 특정 텍스트 문자열을 검색하십시오. 쿼리는 인덱스에서 검색할 문자열의STRING
식이어야 합니다. - Databricks Runtime 15.3 이상의 경우
query_vector
을 사용하여 델타 동기화 인덱스의 임베딩 벡터 열에서 특정 벡터를 검색합니다. 이 인수는 자체 관리형 벡터를 사용하여 델타 동기화 인덱스를 검색하는 데 필요합니다. 쿼리는 인덱스에서 검색할 포함 벡터의ARRAY<FLOAT>
또는ARRAY<DOUBLE>
또는ARRAY<DECIMAL(_, _)>
식이어야 합니다. - Databricks Runtime 15.2 이하의 경우
query
사용하여 인덱스에서 검색할 문자열을 지정합니다.
- Databricks Runtime 15.3 이상의 경우
-
num_results
(선택 사항): 정수 상수로, 반환할 레코드의 최대 수입니다. 기본값은 10입니다.
반품
인덱스에서 일치하는 상위 레코드의 테이블입니다. 인덱스의 모든 열이 포함됩니다.
예제
다음 섹션에서는 다양한 인덱스 검색에 대한 예제 SQL 쿼리를 보여 줍니다.
원본 열을 포함하는 인덱스에 대한 텍스트 쿼리
제품 SKU의 인덱스를 검색하여 이름을 기준으로 유사한 제품을 찾습니다. 다음 예제에서는 Databricks Runtime 15.3 이상에서만 지원되는 query_text
사용합니다. Databricks Runtime 15.2 이하의 경우 query
대신 query_text
사용합니다.
SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_text => "iphone", num_results => 2)
아이디 | 제품 이름 |
---|---|
10 | 아이폰 |
20 | iPhone SE |
다음 예제에서는 LATERAL 하위 쿼리를 사용하여 동시에 여러 용어를 검색합니다.
SELECT
query_txt,
query_id,
search.*
FROM
query_table,
LATERAL(
SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_text => query_txt, num_results => 2)
) as search
query_txt |
질의_아이디 | search.id | 검색.제품_이름 |
---|---|---|---|
아이폰 | 1 | 10 | iPhone 10 |
아이폰 | 1 | 20 | iPhone SE |
픽셀 8 | 2 | 30 | 픽셀 8 |
픽셀 8 | 2 | 40 | 픽셀 8a |
원본 열을 포함하는 인덱스에 대한 텍스트 쿼리
미리 계산된 임베딩을 사용하여 이미지 인덱스를 검색하고 임베딩으로 유사한 이미지를 찾습니다. 다음 예제에서는 Databricks Runtime 15.3 이상에서만 지원되는 query_vector
사용합니다. Databricks Runtime 15.2 이하의 경우 query
대신 query_vector
사용합니다.
SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_vector => ARRAY(0.45, -0.35, 0.78, 0.22), num_results => 3)
SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_vector => ARRAY(0.45F, -0.35F, 0.78F, 0.22F), num_results => 3)
SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_vector => ARRAY(0.45D, -0.35D, 0.78D, 0.22D), num_results => 3)
아이디 | 이미지_이름 | 이미지 임베딩 |
---|---|---|
28 | horse.jpg | [0.46, -0.34, 0.77, 0.21] |
27 | donkey.jpg | [0.44, -0.36, 0.79, 0.23] |
5 | elk.jpg | [0.23, -0.44, 0.77, 0.80] |
다음 예제에서는 LATERAL 하위 쿼리를 사용하여 동시에 여러 용어를 검색합니다.
SELECT
query_embedding,
search.*
FROM
query_table,
LATERAL(
SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_vector => image_embedding, num_results => 1)
) as search
쿼리 임베딩 | search.id | 검색.이미지_이름 | 이미지 임베딩 검색 |
---|---|---|---|
[0.45, -0.35, 0.78, 0.22] | 27 | donkey.jpg | [0.46, -0.34, 0.77, 0.21] |
[0.14, 0.29, 0.30, -0.90] | 3 | landscape.jpg | [0.15, 0.30, 0.31, -0.91] |
[0.23, -0.44, 0.77, 0.80] | 10 | golden_gate_bridge.jpg | [0.28, -0.40, 0.23, 0.81] |
[0.88, 0.88, 0.88, 0.88] | 44 | blank.jpg | [0.88, 0.88, 0.88, 0.88] |
제한 사항
공개 미리 보기에서는 다음 제한 사항이 적용됩니다.
-
DIRECT_ACCESS
인덱스 유형 쿼리는 지원되지 않습니다. -
filters_json
또는columns
입력 매개 변수는 지원되지 않습니다. -
num_results
가 100보다 큰 벡터 검색은 지원되지 않습니다. -
vector_search
는 기본 모델 API 프로비전된 처리량을 사용하여 엔드포인트를 제공하는 모델과 함께 사용할 수 없습니다.