Partilhar via


Função vector_search

Aplica-se a:Marque Sim Databricks SQL

Importante

Esta funcionalidade está em Pré-visualização Pública.

A vector_search() função permite que você consulte um índice Mosaic AI Vetor Search usando SQL.

Requisitos

  • Esta função não está disponível em armazéns SQL clássicos.
  • Para obter mais informações, consulte a página de preços do Databricks SQL.
  • Esta função está disponível nas regiões onde o Mosaic AI Vector Search é compatível.

Sintaxe

No Databricks Runtime 15.3 e superior, você pode usar query_text ou query_vector para especificar o que procurar no índice.

SELECT * FROM vector_search(
  index,
  { query_text | query_vector },
  [ num_results ]
)

No Databricks Runtime 15.2 e inferior, você pode usar query para especificar o que procurar no índice.

SELECT * FROM vector_search(
  index, query, num_results
)

Argumentos

Todos os argumentos devem ser passados pelo nome, como vector_search(index => indexName, query_text => queryText).

  • index: Uma STRING constante, o nome totalmente qualificado de um índice de pesquisa vetorial existente no mesmo espaço de trabalho para invocações. O definidor deve ter a permissão "Selecionar" no índice.
  • Use uma das seguintes opções para especificar a expressão a ser pesquisada no índice:
    • Para o Databricks Runtime 15.3 ou superior, use query_text para procurar uma cadeia de caracteres específica de texto na coluna de origem de incorporação do seu Delta Sync Index. A consulta deve ser uma expressão STRING da cadeia de caracteres a ser pesquisada no índice.
    • Para o Databricks Runtime 15.3 ou superior, use query_vector para procurar um vetor específico na coluna de vetores de incorporação do seu Delta Sync Index. Esse argumento é necessário para pesquisar um índice Delta Sync usando vetores autogerenciados. A consulta deve ser uma expressão ARRAY<FLOAT>, ou ARRAY<DOUBLE>, ou ARRAY<DECIMAL(_, _)> do vetor de incorporação a ser pesquisado no índice.
    • Para Databricks Runtime 15.2 ou inferior, use query para especificar a cadeia de caracteres a ser pesquisada em seu índice.
  • num_results (opcional): uma constante inteira, o número máximo de registros a serem retornados. O padrão é 10.

Devoluções

Uma tabela dos principais registros correspondentes do índice. Todas as colunas do índice estão incluídas.

Exemplos

As seções a seguir mostram exemplos de consultas SQL para diferentes pesquisas de índice.

Consultas de texto em índices com incorporação de colunas de origem

Pesquise sobre um índice de SKUs de produtos para encontrar produtos semelhantes por nome. O exemplo a seguir usa query_text que só é suportado no Databricks Runtime 15.3 e superior. Para Databricks Runtime 15.2 e inferior, use query em vez de query_text.


SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_text => "iphone", num_results => 2)
ID Nome do Produto
10 iPhone
20 iPhone SE [en]

O exemplo a seguir pesquisa vários termos ao mesmo tempo usando uma subconsulta 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 [en]
píxel 8 2 30 Píxel 8
píxel 8 2 40 Píxel 8a

Consultas de texto em índices com incorporação de colunas de origem

Pesquise num índice de imagens com incorporações pré-computadas para encontrar imagens semelhantes por incorporação. O exemplo a seguir usa query_vector que só é suportado no Databricks Runtime 15.3 e superior. Para Databricks Runtime 15.2 e inferior, use query em vez de 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)
ID nome_da_imagem incorporação de imagem
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]

O exemplo a seguir pesquisa vários termos ao mesmo tempo usando uma subconsulta 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
query_embedding search.id Procura.nome_da_imagem incorporação_de_imagem_de_pesquisa
[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]

Limitações

As seguintes limitações aplicam-se durante a pré-visualização:

  • Não há suporte para tipos de índice de DIRECT_ACCESS consulta.
  • Os parâmetros de entrada filters_json ou columns não são suportados.
  • A Pesquisa Vetorial com num_results mais de 100 não é suportada.
  • Os usuários que não têm acesso READ à tabela de origem não podem usar vector_search().
  • A pesquisa híbrida de semelhança de palavras-chave não é suportada usando vector_search().
  • vector_search não pode ser usado com pontos de extremidade de serviço de modelo usando a taxa de transferência provisionada de APIs do Modelo de Base.