Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Databricks AI Search (in precedenza Databricks Vector Search) è una soluzione di ricerca integrata nella piattaforma data intelligence di Databricks e integrata con i relativi strumenti di governance e produttività. Supporta il recupero per applicazioni di intelligenza artificiale generative, ad esempio sistemi RAG, sistemi di raccomandazione e riconoscimento di immagini e video trovando gli incorporamenti più simili a una query.
La ricerca vettoriale è un tipo di ricerca ottimizzata per il recupero di incorporamenti. Gli incorporamenti sono rappresentazioni matematiche del contenuto semantico dei dati, in genere dati di testo o immagine. Gli incorporamenti vengono generati da un modello linguistico di grandi dimensioni e sono un componente chiave di molte applicazioni di intelligenza artificiale generative che dipendono dalla ricerca di documenti o immagini simili tra loro.
Con La ricerca di intelligenza artificiale di Databricks si crea un indice di ricerca di intelligenza artificiale da una tabella Delta. L'indice include dati incorporati con i metadati. È quindi possibile eseguire query sull'indice usando un'API REST per identificare i vettori più simili e restituire i documenti associati. È possibile strutturare l'indice da sincronizzare automaticamente quando viene aggiornata la tabella Delta sottostante.
Ricerca intelligenza artificiale supporta quanto segue:
- Ricerca ibrida di somiglianza tra parole chiave.
- Ricerca per parole chiave full-text (Beta) su qualsiasi endpoint o indici dedicati full-text (Beta) sugli endpoint ottimizzati per l'archiviazione.
- Filtro.
- Reranking.
- Elenchi di controllo di accesso (ACL) per gestire gli endpoint di ricerca di intelligenza artificiale.
- Sincronizza solo le colonne selezionate.
- Salvare e sincronizzare gli incorporamenti generati.
Come funziona la ricerca di intelligenza artificiale?
Ricerca AI usa l'algoritmo Hierarchical Navigable Small World (HNSW) per le ricerche approssimate del vicino più prossimo (ANN) e la metrica di distanza L2 per misurare la similarità dei vettori di embedding. Se vuoi usare la similarità coseno, devi normalizzare gli embedding dei punti dati prima di passarli all'algoritmo di ricerca vettoriale. Quando i punti dati vengono normalizzati, la classificazione prodotta dalla distanza L2 corrisponde alla classificazione prodotta dalla somiglianza del coseno.
Ricerca di intelligenza artificiale supporta anche la ricerca ibrida di somiglianza delle parole chiave, che combina la ricerca di incorporamento basata su vettori con tecniche di ricerca tradizionali basate su parole chiave. Questo approccio corrisponde a parole esatte nella query, usando anche una ricerca di somiglianza basata su vettori per acquisire le relazioni semantiche e il contesto della query.
Integrando queste due tecniche, la ricerca ibrida di somiglianza tra parole chiave recupera i documenti che contengono non solo le parole chiave esatte, ma anche quelle concettualmente simili, fornendo risultati di ricerca più completi e pertinenti. Questo metodo è particolarmente utile nelle applicazioni RAG in cui i dati di origine hanno parole chiave univoche, ad esempio SKU o identificatori non adatti alla ricerca di somiglianza pura.
Per i dettagli sull'API, vedere la documentazione di riferimento di SDK Python e Interrogare un indice di ricerca basata sull'intelligenza artificiale.
Calcolo della ricerca di somiglianza
Il calcolo della ricerca di somiglianza impiega la formula seguente:
dove dist è la distanza euclidea tra la query q e la voce di indice x:
Algoritmo di ricerca delle parole chiave
I punteggi di rilevanza vengono calcolati usando Okapi BM25. Tutte le colonne di testo o stringa sono oggetto di ricerca, incluse le colonne di testo incorporato e i metadati di origine in formato testo o stringa. La funzione di tokenizzazione divide in corrispondenza dei limiti delle parole, rimuove la punteggiatura e converte tutto il testo in minuscolo.
In che modo vengono combinate la ricerca di somiglianza e la ricerca di parole chiave
I risultati della ricerca di somiglianza e della ricerca delle parole chiave vengono combinati usando la funzione RRF (Reciprocal Rank Fusion).
RRF per prima cosa riassegna ogni documento di ciascun metodo utilizzando i punteggi:
rrf_param controlla l'importanza relativa dei documenti di priorità superiore e inferiore. Sulla base della letteratura, rrf_param è impostato su 60.
I punteggi vengono normalizzati in modo che il punteggio più alto possibile sia 1 usando il fattore di normalizzazione seguente:
Il punteggio finale per ogni documento viene calcolato come segue:
Vengono restituiti i documenti con i punteggi finali più alti.
Opzioni per fornire incorporamenti vettoriali
Per creare un indice di ricerca di intelligenza artificiale in Databricks, è prima necessario decidere come fornire incorporamenti vettoriali. Databricks supporta tre opzioni.
Opzione 1: Indice di sincronizzazione delta con incorporamenti calcolati da Databricks
Con questa opzione è disponibile una tabella Delta di origine che contiene dati in formato testo. Databricks calcola gli incorporamenti, usando un modello specificato e, facoltativamente, salva gli incorporamenti in una tabella in Unity Catalog. Quando la tabella Delta viene aggiornata, l'indice rimane sincronizzato con la tabella Delta.
Il diagramma seguente illustra il processo:
- Calcolare gli embeddings delle query. La query può includere filtri di metadati.
- Eseguire ricerche di somiglianza per identificare i documenti più rilevanti.
- Restituire i documenti più rilevanti e aggiungerli alla query.
Opzione 2: Indice di sincronizzazione delta con incorporamenti autogestito
Con questa opzione è disponibile una tabella Delta di origine che contiene incorporamenti precalcosi. Quando la tabella Delta viene aggiornata, l'indice rimane sincronizzato con la tabella Delta.
Note
Non è possibile convertire un indice di incorporamento autogestito in un indice gestito da Databricks. Se in un secondo momento si decide di usare incorporamenti gestiti, è necessario creare un nuovo indice e ricompilare gli incorporamenti.
Il diagramma seguente illustra il processo:
- La query è costituita da incorporamenti e può includere filtri di metadati.
- Eseguire ricerche di somiglianza per identificare i documenti più rilevanti. Restituire i documenti più rilevanti e aggiungerli alla query.
Opzione 3: Indice di accesso a vettori diretti
Con questa opzione, è necessario aggiornare manualmente l'indice usando l'API REST quando cambia la tabella di incorporamento.
Il diagramma seguente illustra il processo:
Opzione 4: indice di ricerca a testo completo sugli endpoint ottimizzati per l'archiviazione (Beta)
Con questa opzione, si crea un indice di sincronizzazione Delta in un endpoint ottimizzato per l'archiviazione senza alcuna colonna incorporata. L'indice supporta la ricerca full-text basata su parole chiave usando il punteggio BM25, senza richiedere incorporamenti vettoriali. Ciò è utile per cercare termini, identificatori o parole chiave esatte nei dati di testo.
Note
È anche possibile usare query_type="FULL_TEXT" per eseguire ricerche di parole chiave sugli indici di ricerca di intelligenza artificiale esistenti in endpoint standard e ottimizzati per l'archiviazione. Questa opzione consente di creare un indice dedicato che non contiene alcun incorporamento.
Gli indici di ricerca full-text dedicati sono disponibili solo sugli endpoint ottimizzati per l'archiviazione e richiedono la modalità di sincronizzazione attivata. Per istruzioni, vedere Creare un indice di ricerca full-text (Beta).
Opzioni endpoint
Ricerca intelligenza artificiale offre le opzioni seguenti per poter selezionare la configurazione dell'endpoint che soddisfi le esigenze dell'applicazione.
Note
High QPS è in anteprima pubblica ed è disponibile solo per gli endpoint standard.
-
Gli endpoint standard hanno una capacità di 320 milioni di vettori alla dimensione 768.
- Con gli endpoint standard, è possibile usare QPS elevato per supportare una larghezza di banda elevata sostenuta. Consulta Come scalare il throughput degli endpoint di AI Search con QPS elevato.
- Gli endpoint ottimizzati per l'archiviazione hanno una capacità maggiore (oltre un miliardo di vettori alla dimensione 768) e offrono indicizzazione 10-20 volte più veloce. Le query sugli endpoint ottimizzati per l'archiviazione hanno una latenza leggermente aumentata di circa 250 msec. I prezzi per questa opzione sono ottimizzati per il maggior numero di vettori. Per informazioni dettagliate sui prezzi, vedere la pagina dei prezzi di Ricerca di intelligenza artificiale. Per informazioni sulla gestione dei costi di ricerca di intelligenza artificiale, vedere Guida alla gestione dei costi di ricerca di intelligenza artificiale.
Si specifica il tipo di endpoint quando si crea l'endpoint.
Vedere anche Limitazioni degli endpoint ottimizzati per l'archiviazione.
Come configurare la ricerca di intelligenza artificiale
Per usare La ricerca di intelligenza artificiale, è necessario creare quanto segue:
Un endpoint di ricerca di intelligenza artificiale. Questo endpoint serve l'indice di ricerca di intelligenza artificiale. È possibile eseguire query e aggiornare l'endpoint usando l'API REST o l'SDK. Per istruzioni, vedere Creare un endpoint di ricerca di intelligenza artificiale .
Gli endpoint aumentano automaticamente per supportare le dimensioni dell'indice o il numero di richieste simultanee. Gli endpoint vengono ridimensionati automaticamente quando viene eliminato un indice.
Un indice di ricerca di intelligenza artificiale. L'indice AI Search viene creato a partire da una tabella Delta ed è ottimizzato per eseguire ricerche approssimate del vicino più prossimo (ANN) in tempo reale. L'obiettivo della ricerca è identificare i documenti simili alla query. Gli indici di ricerca di intelligenza artificiale vengono visualizzati in e sono regolati dal catalogo unity. Per istruzioni, vedere Creare un indice di ricerca di intelligenza artificiale .
Inoltre, se si sceglie di usare Databricks per calcolare gli incorporamenti, è possibile usare un endpoint delle API del modello di base preconfigurato o creare un endpoint di servizio del modello per gestire il modello di incorporamento preferito. Per istruzioni, vedere API modello di base con pagamento in base al token o Creare un modello di base che gestisce gli endpoint.
Per eseguire query sull'endpoint di gestione del modello, usare l'API REST o Python SDK. La query può definire filtri in base a qualsiasi colonna della tabella Delta. Per informazioni dettagliate, vedere Utilizzare filtri nelle query, la documentazione API o la documentazione del SDK Python.
Requisiti
- Area di lavoro con Unity Catalog abilitato.
- Calcolo serverless attivato. Per le istruzioni, consulta Connetti al calcolo senza server.
- Per gli endpoint standard, la tabella di origine deve avere il feed di dati delle modifiche abilitato. Vedi Usa il feed dei dati di modifica in Azure Databricks.
- Per creare un indice di ricerca di intelligenza artificiale, è necessario disporre CREATE TABLE dei privilegi per lo schema del catalogo in cui verrà creato l'indice.
L'autorizzazione per creare e gestire gli endpoint di ricerca di intelligenza artificiale viene configurata usando gli elenchi di controllo di accesso. Vedere ACL degli endpoint di ricerca di intelligenza artificiale.
protezione e autenticazione dei dati
Databricks implementa i controlli di sicurezza seguenti per proteggere i dati:
- Ogni richiesta del cliente ad AI Search è logicamente isolata, autenticata e autorizzata.
- AI Search cifra tutti i dati archiviati (AES-256) e in transito (TLS 1.2+).
La Ricerca AI supporta due modalità di autenticazione: service principal e token di accesso personali (PAT). Per le applicazioni di produzione, Databricks consiglia di usare principali di servizio, che possono avere prestazioni per ogni query fino a 100 msec più rapide rispetto ai token di accesso personali.
Token del principal di servizio. Un amministratore può generare un token dell'entità servizio e passarlo all'SDK o all'API. Vedi utilizzare i principali del servizio. Per i casi d'uso di produzione, Databricks consiglia di usare un token del servizio principale.
# Pass in a service principal vsc = AISearchClient(workspace_url="...", service_principal_client_id="...", service_principal_client_secret="..." )Token di accesso personale. È possibile usare un token di accesso personale per eseguire l'autenticazione con Ricerca di intelligenza artificiale. Vedere Autenticazione con token di accesso personale. Se si usa l'SDK in un ambiente notebook, l'SDK genera automaticamente un token PAT per l'autenticazione.
# Pass in the PAT token client = AISearchClient(workspace_url="...", personal_access_token="...")
Le chiavi gestite dal cliente (CMK) sono supportate sugli endpoint creati a partire dell'8 maggio 2024.
Monitorare l'utilizzo e i costi
Per informazioni sul monitoraggio dell'utilizzo e dei costi associati agli indici e agli endpoint di ricerca di intelligenza artificiale, vedere Guida alla gestione dei costi di Ricerca intelligenza artificiale.
È anche possibile eseguire query sull'utilizzo in base ai criteri di utilizzo. Vedere Criteri di utilizzo della ricerca di intelligenza artificiale.
Limiti relativi alle dimensioni delle risorse e dei dati
La tabella seguente riepiloga i limiti delle dimensioni delle risorse e dei dati per gli endpoint e gli indici di ricerca di intelligenza artificiale:
| Risorsa | Granularità | Limite |
|---|---|---|
| Endpoint di ricerca con IA | Per area di lavoro | 500 |
| Incorporamenti (indice di sincronizzazione delta) | Per endpoint standard | ~ 320.000.000 alla dimensione di incorporamento 768 ~ 160.000.000 alla dimensione di incorporamento 1536 ~ 80.000.000 alla dimensione di incorporamento 3072 (scala approssimativamente lineare) |
| Embeddings (indice di accesso vettoriale diretto) | Per endpoint standard | ~ 2.000.000 per la dimensione di incorporamento 768 |
| Incapsulamenti (endpoint ottimizzato per l'archiviazione) | Per endpoint ottimizzato per l'archiviazione | ~ 1.000.000.000 alla dimensione di incorporamento 768 |
| Dimensione di incorporazione | Per indice | 4096 |
| Indici | Per terminale | 50 |
| Columns | Per indice | 50 |
| Columns | Tipi supportati: byte, short, integer, long, float, double, boolean, string, timestamp, date, array | |
| Campi dei metadati | Per indice | 50 |
| Nome dell'indice | Per indice | 128 caratteri |
I limiti seguenti si applicano alla creazione e all'aggiornamento degli indici di ricerca di intelligenza artificiale:
| Risorsa | Granularità | Limite |
|---|---|---|
| Dimensioni delle righe per l'indice di sincronizzazione delta | Per indice | 100 KB |
| Integrazione delle dimensioni delle colonne di origine per l'indice Delta Sync | Per Indice | 32764 byte |
| Limite delle dimensioni delle richieste di upsert in blocco per l'indice Direct Vector | Per Indice | 10 MB |
| Limite di dimensione per le richieste di eliminazione in blocco per l'indice Direct Vector | Per Indice | 10 MB |
I limiti seguenti si applicano all'API della query.
| Risorsa | Granularità | Limite |
|---|---|---|
| Lunghezza del testo della query | Per richiesta | 32764 caratteri |
| Token quando si usa la ricerca ibrida | Per richiesta | 1024 parole o 2 byte di caratteri |
| Condizioni di filtro | Clausola per filtro | 1024 elementi |
| Numero massimo di risultati restituiti (ricerca del vicino più prossimo approssimativa) | Per richiesta | 10,000 |
| Numero massimo di risultati restituiti (ricerca ibrida di somiglianza con parole chiave) | Per richiesta | 200 |
| Numero massimo di risultati restituiti (ricerca full-text) | Per richiesta | 200 |
| Dimensioni della risposta | Per richiesta | 10 MB |
Limitations
- Il nome
_iddella colonna è riservato. Se la tabella di origine ha una colonna denominata_id, rinominarla prima di creare un indice di ricerca di intelligenza artificiale. - Le autorizzazioni a livello di riga e colonna non sono supportate. Tuttavia, è possibile implementare elenchi di controllo di accesso a livello di applicazione personalizzati usando l'API di filtro.
- Non è possibile clonare un indice in un'area di lavoro diversa. È possibile effettuare richieste tra aree di lavoro usando Databricks SDK o l'API REST.
- Viene effettuato il provisioning della capacità dell'indice in base alle dimensioni della tabella di origine in fase di creazione dell'indice. A partire da una tabella di origine di piccole dimensioni limita la quantità di aumento dell'indice e può causare errori di esaurimento della capacità, in modo da ridimensionare la tabella di origine in modo che corrisponda al volume di dati previsto prima di creare l'indice.
Limitazioni degli endpoint ottimizzati per l'archiviazione
Le limitazioni in questa sezione si applicano solo agli endpoint ottimizzati per l'archiviazione.
- La modalità di sincronizzazione continua non è supportata.
- La sincronizzazione delle colonne non è supportata.
- La dimensione di incorporamento deve essere divisibile per 16.
- L'aggiornamento incrementale è parzialmente supportato. Ogni sincronizzazione deve ricompilare parti dell'indice di ricerca di intelligenza artificiale.
- Per gli indici gestiti, eventuali incorporamenti calcolati in precedenza vengono riutilizzati se la riga di origine non è stata modificata.
- Dovresti prevedere una riduzione complessiva significativa del tempo necessario per una sincronizzazione rispetto agli endpoint standard. I set di dati con 1 miliardo di incorporamenti devono completare una sincronizzazione in meno di 8 ore. I set di dati più piccoli richiedono meno tempo per la sincronizzazione.
- Le aree di lavoro conformi a FedRAMP non sono supportate.
- Le chiavi gestite dal cliente non sono supportate.
- Per usare un modello di incorporamento personalizzato per un indice di sincronizzazione Delta gestito, è necessario abilitare l'anteprima di Query di intelligenza artificiale per modelli personalizzati e modelli esterni . Per informazioni su come abilitare le anteprime, vedere Gestire le anteprime di Azure Databricks .
- Gli endpoint ottimizzati per l'archiviazione supportano fino a 1 miliardo di incorporamenti di vettori di 768 dimensioni. Se hai un caso d'uso su larga scala, contatta il tuo team di account.