Funzione vector_search
Si applica a: Databricks SQL
Importante
Questa funzionalità è disponibile in anteprima pubblica.
La funzione vector_search()
consente di eseguire query su un indice di Mosaic AI Vector Search usando SQL.
Requisiti
- Questa funzione non è disponibile nei warehouse SQL classici.
- Per altre informazioni, vedere la pagina relativa ai prezzi di Databricks SQL.
- Questa funzione è disponibile nelle aree in cui è supportata la ricerca a vettori di intelligenza artificiale mosaici.
Sintassi
In Databricks Runtime 15.3 e versioni successive è possibile usare query_text
o query_vector
per specificare cosa cercare nell'indice.
SELECT * FROM vector_search(
index,
{ query_text | query_vector },
[ num_results ]
)
In Databricks Runtime 15.2 e versioni successive è possibile usare query
per specificare cosa cercare nell'indice.
SELECT * FROM vector_search(
index, query, num_results
)
Argomenti
Tutti gli argomenti devono essere passati per nome, ad esempio vector_search(index => indexName, query_text => queryText)
.
-
index
: una costanteSTRING
, il nome completo di un indice di ricerca vettoriale esistente nella stessa area di lavoro per le chiamate. Il definer deve disporre dell'autorizzazione "Select" per l'indice. - Usare una delle opzioni seguenti per specificare l'espressione da cercare nell'indice:
- Per Databricks Runtime 15.3 o versione successiva, usare
query_text
per cercare una stringa di testo specifica nella colonna di origine di incorporamento dell'indice di sincronizzazione delta . La query deve essere un'espressioneSTRING
di una stringa da ricercare nell'indice. - Per Databricks Runtime 15.3 o versioni successive, utilizzare
query_vector
per cercare un vettore specifico nella colonna dei vettori di embedding del tuo indice di sincronizzazione Delta. Questo argomento è obbligatorio per la ricerca di un indice di sincronizzazione delta usando vettori autogestiti. La query deve essere un'espressioneARRAY<FLOAT>
, oARRAY<DOUBLE>
oARRAY<DECIMAL(_, _)>
del vettore di incorporamento per la ricerca nell'indice. - Per Databricks Runtime 15.2 o versione successiva, usare
query
per specificare la stringa da cercare nell'indice.
- Per Databricks Runtime 15.3 o versione successiva, usare
-
num_results
(facoltativo): una costante intera, numero massimo di voci da restituire. L’impostazione predefinita è 10.
Valori restituiti
Tabella dei record corrispondenti principali dell'indice. Sono incluse tutte le colonne dell'indice.
Esempi
Le sezioni seguenti illustrano query SQL di esempio per ricerche di indici diverse.
Query di testo sugli indici con colonne di origine incorporate
Cercare un indice di SKU di prodotto per trovare prodotti simili in base al nome. L'esempio seguente usa query_text
supportato solo in Databricks Runtime 15.3 e versioni successive. Per Databricks Runtime 15.2 e versioni successive, usare query
anziché query_text
.
SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_text => "iphone", num_results => 2)
ID | Nome prodotto |
---|---|
10 | iPhone |
20 | iPhone SE |
Nell'esempio seguente, vengono cercati più termini contemporaneamente usando una sottoquery 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 |
Query di testo sugli indici con colonne di origine incorporate
Cercare un indice di immagini con incorporamenti pre-calcolati per trovare immagini simili incorporando. L'esempio seguente usa query_vector
supportato solo in Databricks Runtime 15.3 e versioni successive. Per Databricks Runtime 15.2 e versioni successive, usare query
anziché 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_immagine | incorporamento di immagini |
---|---|---|
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] |
Nell'esempio seguente, vengono cercati più termini contemporaneamente usando una sottoquery 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
incorporamento della query | search.id | cerca.nome_immagine | 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] |
Limiti
Durante l'anteprima, si applicano le limitazioni seguenti:
- I tipi di indice
DIRECT_ACCESS
di query non sono supportati. - I parametri di input
filters_json
ocolumns
non sono supportati. - La ricerca vettoriale con
num_results
maggiore di 100 non è supportata. - Gli utenti che non dispongono dell'accesso READ alla tabella di origine non possono usare
vector_search()
. - La ricerca ibrida di somiglianza tra parole chiave non è supportata tramite
vector_search()
. -
vector_search
non può essere usato con gli endpoint di gestione del modello usando la velocità effettiva con provisioning delle API Modello di base.