다음을 통해 공유


vector_search 함수

적용 대상:예로 표시된 확인 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 상수로, 호출을 위해 동일한 작업 영역에 있는 기존 벡터 검색 인덱스의 정규화된 이름입니다. 정의자는 인덱스 권한이 있어야 합니다 Select .
  • 다음 중 하나를 사용하여 인덱스에서 검색할 식을 지정합니다.
    • Databricks Runtime 15.3 이상의 경우 query_text를 사용하여 델타 동기화 인덱스의 임베딩 원본 열에서 특정 텍스트 문자열을 검색하십시오. 쿼리는 인덱스에서 검색할 문자열의 STRING 식이어야 합니다.
    • Databricks Runtime 15.3 이상의 경우 query_vector을 사용하여 델타 동기화 인덱스의 임베딩 벡터 열에서 특정 벡터를 검색합니다. 이 인수는 자체 관리형 벡터를 사용하여 델타 동기화 인덱스를 검색하는 데 필요합니다. 쿼리는 인덱스에서 검색할 포함 벡터의 ARRAY<FLOAT>또는 ARRAY<DOUBLE>또는 ARRAY<DECIMAL(_, _)> 식이어야 합니다.
    • Databricks Runtime 15.2 이하의 경우 query 사용하여 인덱스에서 검색할 문자열을 지정합니다.
  • num_results(선택 사항): 정수 상수로, 반환할 레코드의 최대 수입니다. 기본값은 10입니다.
  • query_type(선택 사항): 벡터 검색 인덱스에서 수행하려는 검색 유형입니다. ANN 명시적으로 지정되지 않은 경우 기본값으로 설정됩니다.
    • query_typeANNquery_text 경우 근사한 인접 검색 또는 유사성 검색을 수행하려면 지정하거나 query_vector 지정해야 합니다.
    • query_typeHYBRID경우 지정 query_text 해야 합니다. 하이브리드 검색을 query_text 둘 다 query_vector 지정할 수 있습니다. 이 인스턴스의 하이브리드 검색은 키워드 검색이 리터럴 텍스트를 대상으로 사용하는 유사성 검색과 키워드 검색의 조합을 의미합니다.

다음 표에는 포함 모델이 있는 델타 동기화 인덱 스가 있는 경우 사용할 수 있는 인수가 요약되어 있습니다.

query_type query_text query_vector Description
ANN(근사 근사 항목 또는 유사성 검색이라고도 함)
  • 텍스트 또는 벡터의 특정 문자열에 대한 유사성 검색의 경우 지정할 query_text수 있습니다.
  • 포함은 자동으로 계산되고 query_text유사성 검색에 사용할 수 있으므로 지정할 query_vector필요가 없습니다.
ANN(근사 근사 항목 또는 유사성 검색이라고도 함) 유사성 검색에 사용합니다 query_vector .
하이브리드
  • 키워드 검색에 사용합니다 query_text . 키워드 검색은 리터럴 텍스트를 대상으로 사용하므로 query_text 필수입니다.
  • 포함은 자동으로 계산되고 query_text유사성 검색에 사용할 수 있으므로 지정할 query_vector필요가 없습니다.
하이브리드 키워드 검색에 사용하고 query_text 유사성 검색에 사용합니다 query_vector .

다음 표에서는 포함 모델 없이 델타 동기화 인덱스가 있을 때 사용할 수 있는 다양한 시나리오와 인수에 대해 설명합니다.

query_type query_text query_vector Description
ANN (근사 근사 항목 또는 유사성 검색이라고도 함) 유사성 검색에 사용합니다query_vector . 유사성 검색에는 검색 대상으로 포함 벡터가 필요합니다. 이 시나리오에서는 포함 모델을 사용하여 포함 벡터를 계산할 수 없으므로 이를 제공해야 합니다.
하이브리드 텍스트 및 벡터의 특정 문자열에 대한 하이브리드 검색의 경우 둘 다 query_text 지정하고 query_vector.

반품

인덱스에서 일치하는 상위 레코드의 테이블입니다. 인덱스의 모든 열이 포함됩니다.

예제

다음 섹션에서는 다양한 인덱스 검색에 대한 예제 SQL 쿼리를 보여 줍니다.

하이브리드 검색 쿼리

다음 하이브리드 검색 예제에서는 다음 검색 유형을 결합하여 벡터 검색 인덱스의 텍스트 또는 메타데이터에서 제공된 용어를 찾습니다.

  • 벡터 유사성 검색: 비슷한 의미 체계의 의미를 Wi-Fi issues찾으려면 .
  • 키워드 검색: 키워드 인덱스에서 찾으 Wi-Fi issues LMP-9R2 려면
SELECT * FROM vector_search(
  index => 'main.support_docs.index',
  query_text => 'Wi-Fi issues LMP-9R2',
  query_type => 'HYBRID',
  num_results => 3)
doc_id title product_code
1403 Wi-Fi 문제 해결 가이드 - LMP-9R2 LMP-9R2
1332 LMP-9R2 디바이스에 대한 알려진 연결 문제 LMP-9R2
1271 일반 Wi-Fi 문제 해결 가이드 LMP-8R2

다음 하이브리드 검색 예제에서는 용어와 query_text 용어를 query_vector모두 Wi-Fi issues LMP-9R2 지정합니다. 이 예제에서 키워드 검색은 회사 고유의 전용 용어(예: "LMP-9R2")에서 더 잘 수행되지만, 일반적으로 공용 데이터 세트에 대해 학습되는 벡터 검색은 "LMP-9R2"와 같은 용어를 인식하지 못합니다.


SELECT * FROM vector_search(
  index => 'main.support_docs.index',
  query_text => 'Wi-Fi issues LMP-9R2',
  query_vector => array( 0.0213, 0.1045, 0.0871, 0.0562, 0.1459, ... 0.0131),-- a self computed embedding of the `query_text` param
  query_type => 'HYBRID',
  num_results => 3 )

doc_id title product_code
1403 Wi-Fi 문제 해결 가이드 - LMP-9R2 LMP-9R2
1332 LMP-9R2 디바이스에 대한 알려진 연결 문제 LMP-9R2
1271 일반 Wi-Fi 문제 해결 가이드 LMP-8R2

원본 열을 포함하는 인덱스에 대한 텍스트 쿼리

제품 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 프로비전된 처리량을 사용하여 엔드포인트를 제공하는 모델과 함께 사용할 수 없습니다.