다음을 통해 공유


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 사용하여 인덱스에서 검색할 문자열을 지정합니다.
  • 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 인덱스 유형 쿼리는 지원되지 않습니다.
  • 입력 parametersfilters_json 또는 columns 지원되지 않습니다.
  • num_results가 100보다 큰 벡터 검색은 지원되지 않습니다.
  • 원본 table 대한 READ 액세스 권한이 없는 사용자는 vector_search()사용할 수 없습니다.
  • 하이브리드 키워드 유사성 검색은 vector_search()사용하여 지원되지 않습니다.
  • vector_search기본 모델 API 프로비전된 처리량을 사용하여 엔드포인트를 제공하는 모델과 함께 사용할 수 없습니다.