vector_search
함수
적용 대상: Databricks SQL
Important
이 기능은 공개 미리 보기 상태입니다.
이 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
상수로, 호출을 위해 동일한 작업 영역에 있는 기존 벡터 검색 인덱스의 정규화된 이름입니다. 정의자는 인덱스에 대한 "Select" 권한을 가지고 있어야 합니다. - 다음 중 하나를 사용하여 인덱스에서 검색할 식을 지정합니다.
- Databricks Runtime 15.3 이상에서는
query_text
를 사용하여 귀하의 Delta Sync 인덱스에서 임베딩 원본 column의 특정 텍스트 문자열을 검색합니다. 쿼리는 인덱스에서 검색할 문자열의STRING
식이어야 합니다. - Databricks Runtime 15.3 이상의 경우
query_vector
를 사용하여 Delta Sync Index의 임베딩 벡터 column에서 특정 벡터를 검색합니다. 이 인수는 자체 관리형 벡터를 사용하여 Delta Sync Index를 검색하는 데 필요합니다. 쿼리는 인덱스에서 검색할 포함 벡터의ARRAY<FLOAT>
또는ARRAY<DOUBLE>
또는ARRAY<DECIMAL(_, _)>
식이어야 합니다. - Databricks Runtime 15.2 이하의 경우
query
사용하여 인덱스에서 검색할 문자열을 지정합니다.
- Databricks Runtime 15.3 이상에서는
-
num_results
(선택 사항): 정수 상수로, 반환할 레코드의 최대 수입니다. 기본값은 10입니다.
반품
인덱스에서 일치하는 상위 레코드의 table. 인덱스의 모든 columns 포함됩니다.
예제
다음 섹션에서는 다양한 인덱스 검색에 대한 예제 SQL 쿼리를 보여 줍니다.
원본 columns 포함하는 인덱스에 대한 텍스트 쿼리
제품 SKU의 인덱스를 검색하여 이름을 기준으로 유사한 제품을 찾습니다. 다음 예제에서는 Databricks Runtime 15.3 이상에서만 지원되는 query_text
사용합니다. Databricks Runtime 15.2 이하의 경우 query_text
대신 query
사용합니다.
SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_text => "iphone", num_results => 2)
ID | 제품 이름 |
---|---|
10 | iPhone |
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 |
query_id | search.id | search.product_name |
---|---|---|---|
iphone | 1 | 10 | iPhone 10 |
iphone | 1 | 20 | iPhone SE |
pixel 8 | 2 | 30 | Pixel 8 |
pixel 8 | 2 | 40 | Pixel 8a |
원본 columns 포함하는 인덱스에 대한 텍스트 쿼리
미리 계산된 임베딩을 사용하여 이미지 인덱스를 검색하고 임베딩으로 유사한 이미지를 찾습니다. 다음 예제에서는 Databricks Runtime 15.3 이상에서만 지원되는 query_vector
사용합니다. Databricks Runtime 15.2 이하의 경우 query_vector
대신 query
사용합니다.
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
인덱스 유형 쿼리는 지원되지 않습니다. - 입력 parameters
filters_json
또는columns
지원되지 않습니다. -
num_results
가 100보다 큰 벡터 검색은 지원되지 않습니다. - 원본 table 대한 READ 액세스 권한이 없는 사용자는
vector_search()
사용할 수 없습니다. - 하이브리드 키워드 유사성 검색은
vector_search()
사용하여 지원되지 않습니다. -
vector_search
는 기본 모델 API 프로비전된 처리량을 사용하여 엔드포인트를 제공하는 모델과 함께 사용할 수 없습니다.