다음을 통해 공유


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 상수로, 호출을 위해 동일한 작업 영역에 있는 기존 벡터 검색 인덱스의 정규화된 이름입니다. 정의자는 인덱스 "선택" 권한이 있어야 합니다.
  • 다음 중 하나를 사용하여 인덱스에서 검색할 식을 지정합니다.
    • 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입니다.

반품

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

예제

다음 섹션에서는 다양한 인덱스 검색에 대한 예제 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 프로비전된 처리량을 사용하여 엔드포인트를 제공하는 모델과 함께 사용할 수 없습니다.