Compartilhar via


Função vector_search

Aplica-se a:verificação marcada como sim SQL do Databricks

Importante

Esse recurso está em uma versão prévia.

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

Requisitos

Sintaxe

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

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

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

SELECT * FROM vector_search(
  index, query, num_results
)

Argumentos

Todos os argumentos devem ser transmitidos ​​por nome, como vector_search(index => indexName, query_text => queryText).

  • index: uma constante STRING, o nome totalmente qualificado de um índice de busca em vetores atual no mesmo workspace para invocações. O definidor deve ter a permissão “Selecionar” no índice.
  • Use um dos seguintes procedimentos para especificar a expressão a ser pesquisada no índice:
    • Para o Databricks Runtime 15.3 ou superior, use query_text para pesquisar uma cadeia de texto específica na coluna de fonte de embeddings do índice de sincronização Delta. 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 vetor de incorporação do seu Índice de Sincronização Delta. Esse argumento é necessário para pesquisar um Índice de Sincronização Delta usando vetores autogerenciados. A consulta deve ser uma expressão ARRAY<FLOAT>, ou ARRAY<DOUBLE>ou ARRAY<DECIMAL(_, _)> do vetor de inserção para pesquisar no índice.
    • Para o 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 valor 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 consultas SQL de exemplo para diferentes pesquisas de índice.

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

Pesquise produtos semelhantes por nome em um índice de SKUs de produtos. O exemplo a seguir usa query_text que só tem suporte no Databricks Runtime 15.3 e superior. Para o 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

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
pixel 8 2 30 Pixel 8
pixel 8 2 40 Pixel 8a

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

Pesquise um índice de imagens com inserções pré-computadas para encontrar imagens semelhantes por inserção. O exemplo a seguir usa query_vector que só tem suporte no Databricks Runtime 15.3 e superior. Para o 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 image_name 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 search.image_name search_image_embedding
[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 se aplicam durante a versão preliminar:

  • Não há suporte para consultar tipos de índice DIRECT_ACCESS.
  • Não há suporte para os parâmetros de entrada filters_json ou columns.
  • Não há suporte para a busca em vetores com num_results maior que 100.
  • Usuários que não têm permissão de leitura na tabela de origem não podem usar vector_search().
  • Não há suporte para pesquisa de similaridade de palavra-chave híbrida usando vector_search().
  • vector_search não pode ser usado com pontos de extremidade de serviço do modelo usando a taxa de transferência provisionada das APIs do Foundation Model.