Função vector_search
Aplica-se a: 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
: UmaSTRING
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ãoSTRING
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ãoARRAY<FLOAT>
, ouARRAY<DOUBLE>
, ouARRAY<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.
- Para o Databricks Runtime 15.3 ou superior, use
-
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
oucolumns
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.