Condividi tramite


Funzione vector_search

Si applica a:segno di spunta sì 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

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 costante STRING, il nome completo di un indice di ricerca vettoriale esistente nella stessa area di lavoro per le chiamate. Il definitore deve avere l'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 specifica di testo nella sorgente di incorporazione column del Delta Sync Index. La query deve essere un'espressione STRING di una stringa da ricercare nell'indice.
    • Per Databricks Runtime 15.3 o versione successiva, usare query_vector per cercare un vettore specifico nel vettore di incorporamento column dell'indice Delta Sync. Questo argomento è obbligatorio per la ricerca di un indice Delta Sync usando vettori autogestiti. La query deve essere un'espressione ARRAY<FLOAT>, o ARRAY<DOUBLE>o ARRAY<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.
  • num_results (facoltativo): una costante intera, numero massimo di voci da restituire. L’impostazione predefinita è 10.

Valori restituiti

Un table dei principali record corrispondenti all'indice. Tutti i columns dell'indice sono inclusi.

Esempi

Le sezioni seguenti illustrano query SQL di esempio per ricerche di indici diverse.

Query di testo sugli indici con sorgente di incorporamento columns

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 origine di incorporamento columns

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.
  • Gli input parameters,filters_json o columns non sono supportati.
  • La ricerca vettoriale con num_results maggiore di 100 non è supportata.
  • Gli utenti che non dispongono dell'accesso READ al table 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.