Scopri come usare AI Search di Databricks con embedding multimodali per migliorare le tue applicazioni RAG con capacità multimodali.
di Austin Choi e Jordan Soldo
Il recupero multimodale rappresenta una sfida significativa nei moderni sistemi di AI. I sistemi di recupero tradizionali faticano a cercare efficacemente tra diversi tipi di dati senza metadati o tag estesi. Questo è particolarmente problematico per le aziende sanitarie che gestiscono grandi volumi di contenuti diversi, inclusi testo, immagini, audio e altro, spesso risultando in fonti di dati non strutturati.
Chiunque lavori nel settore sanitario comprende la difficoltà di unire dati non strutturati con dati strutturati. Un esempio comune è la documentazione clinica, dove note cliniche scritte a mano o riassunti di dimissione dei pazienti sono spesso inviati in PDF, immagini e formati simili. Questo deve essere convertito manualmente o elaborato utilizzando il Riconoscimento Ottico dei Caratteri (OCR) per trovare le informazioni necessarie. Anche dopo questo passaggio, è necessario mappare i dati ai dati strutturati esistenti per utilizzarli efficacemente.
Per questo blog, esamineremo quanto segue:
Alla fine di questo blog, vedrete come gli embedding multimodali abilitano quanto segue per il settore sanitario:
Uno spazio di embedding (AWS | Azure | GCP) è una rappresentazione matematica n-dimensionale di record che consente di archiviare una o più modalità di dati come vettori di numeri in virgola mobile. Ciò che lo rende utile è che in uno spazio di embedding ben costruito, i record con significato simile occupano uno spazio simile. Ad esempio, immaginiamo di avere una foto di un cavallo, la parola "camion" e una registrazione audio di un cane che abbaia. Passiamo questi tre punti dati completamente diversi nel nostro modello di embedding multimodale e otteniamo quanto segue:
Ecco una rappresentazione visiva di dove esisterebbero i numeri in uno spazio di embedding:

In pratica, le dimensioni dello spazio di embedding saranno centinaia o migliaia, ma per illustrare, usiamo uno spazio 3D. Possiamo immaginare che la prima posizione in questi vettori rappresenti la "animalità", la seconda la "trasportabilità" e la terza la "rumorosità". Questo avrebbe senso dati gli embedding, ma tipicamente non sappiamo cosa rappresenti ogni dimensione. L'importante è che rappresentino il significato semantico dei record.
Esistono diversi modi per creare uno spazio di embedding multimodale, inclusa la formazione simultanea di più encoder (come CLIP), l'uso di meccanismi di cross-attention (come DALL-E) o l'uso di vari metodi di allineamento post-addestramento. Questi metodi consentono al significato del record di trascendere la modalità originale e occupare uno spazio condiviso con altri record o formati disparati.
Questo spazio semantico condiviso è ciò che abilita potenti capacità di ricerca cross-modale. Quando una query di testo e un'immagine condividono rappresentazioni vettoriali simili, è probabile che condividano significati semantici simili, permettendoci di trovare immagini pertinenti basate su descrizioni testuali senza tag o metadati espliciti.
Per implementare efficacemente la ricerca multimodale, abbiamo bisogno di modelli in grado di generare embedding per diversi tipi di dati all'interno di uno spazio vettoriale condiviso. Questi modelli sono specificamente progettati per comprendere le relazioni tra diverse modalità e rappresentarle in uno spazio matematico unificato.
Diversi potenti modelli di embedding multimodali sono disponibili a partire da giugno 2025:
In Databricks, forniamo l'infrastruttura e gli strumenti per ospitare, valutare e sviluppare una soluzione end-to-end, personalizzabile per il vostro caso d'uso. Considerate i seguenti scenari quando iniziate a implementare questo caso d'uso:
Per l'implementazione completa di questa soluzione, visita questo repository qui: Link Github
Questo esempio utilizzerà informazioni sintetiche sui pazienti come dati strutturati ed esempi di spiegazioni dei benefici in formato PDF come dati non strutturati. Innanzitutto, vengono generati dati sintetici da utilizzare con uno Genie Space. Successivamente, il modello di embedding multimodale Nomic, un modello di embedding multimodale open source all'avanguardia, viene caricato su Databricks Model Serving per generare embedding su esempi di spiegazioni dei benefici trovati online.
Questo processo può sembrare complicato, ma Databricks fornisce strumenti integrati che consentono una soluzione completa e end-to-end. A un livello elevato, il processo è il seguente:
Questo Genie Space verrà utilizzato come strumento per convertire il linguaggio naturale in una query SQL per interrogare i nostri dati strutturati.
In questo esempio, la libreria Faker verrà utilizzata per generare informazioni casuali sui pazienti. Creeremo due tabelle per diversificare i nostri dati: Visite Pazienti e Sedi di Pratica, con colonne come motivi della visita, fornitori di assicurazione e tipi di assicurazione.
Per interrogare i dati usando il linguaggio naturale, possiamo utilizzare gli spazi Databricks Genie (AWS | Azure | GCP) per convertire la nostra query in linguaggio naturale e recuperare i dati rilevanti dei pazienti. Nell'interfaccia utente di Databricks, basta cliccare sulla scheda Genie nella barra a sinistra → Nuovo → selezionare le tabelle patient_visits e practice_locations.

Abbiamo bisogno dell'ID dello spazio Genie per catturare il numero che segue 'rooms'. Puoi vedere un esempio qui sotto:
Dato che stiamo usando DSPy, tutto ciò che dobbiamo fare è definire una funzione Python.
Questo è tutto! Ora configuriamo il flusso di lavoro di generazione multimodale.
Per questo passaggio, useremo il modello completamente open colNomic-embed-multimodal-7b su HuggingFace per generare embedding per i nostri dati non strutturati, in questo caso, i PDF. Abbiamo selezionato il modello di Nomic grazie alla sua licenza Apache 2.0 e alle sue alte prestazioni nei benchmark.
Il metodo per generare i tuoi embedding varierà a seconda del tuo caso d'uso e della modalità. Rivedi le Databricks AI Search Best Practices (AWS | Azure | GCP) per capire cosa è meglio per il tuo caso d'uso.
Abbiamo bisogno che questo modello sia disponibile all'interno di Databricks Unity Catalog (UC), quindi useremo MLflow per caricarlo da Huggingface e registrarlo. Successivamente, potremo distribuire il modello a un endpoint di servizio del modello.
Il modello Python include una logica aggiuntiva per gestire gli input di immagini, che si trova nel repository completo.
UC Volumes sono progettati come file system per ospitare qualsiasi file ed è dove archiviamo i nostri dati non strutturati. Puoi usarli in futuro per archiviare altri file, come immagini, e ripetere il processo secondo necessità. Questo include il modello sopra. Nel repository, vedrai che la cache si riferisce a un volume.
Avrai una cartella chiamata sample_pdf_sbc contenente alcuni esempi di riepiloghi di benefici e copertura. Dobbiamo preparare questi PDF per incorporarli.
Il modello colNomic-embed-multimodal-7b è specificamente addestrato per riconoscere testo e immagini all'interno di una singola immagine, un input comune dai PDF. Questo permette al modello di funzionare eccezionalmente bene nel recuperare queste pagine.
Questo metodo ti consente di utilizzare tutto il contenuto di un PDF senza la necessità di una strategia di suddivisione del testo per garantire che il recupero funzioni efficacemente. Il modello stesso può incorporare bene queste immagini nel proprio spazio di embedding.
Useremo pdf2image per convertire ogni pagina del PDF in un'immagine, preparandola per l'embedding.
Ora che abbiamo le immagini PDF, possiamo generare gli embedding. Allo stesso tempo, possiamo salvare gli embedding in una Delta table con colonne aggiuntive che recupereremo insieme alla nostra AI Search, come il percorso del file alla posizione del Volume.
La creazione di un indice per la ricerca vettoriale può essere effettuata tramite UI o API. Il metodo API è mostrato di seguito.
Ora dobbiamo solo collegare tutto con un Agente.
Utilizziamo DSPy per questo grazie al suo design dichiarativo e puramente Python. Ci permette di iterare e sviluppare rapidamente, testando vari modelli per vedere quali funzioneranno meglio per il nostro caso d'uso. Ancora più importante, la natura dichiarativa ci consente di modularizzare il nostro Agente in modo da poter isolare la logica dell'Agente dagli strumenti e concentrarci sulla definizione di COME l'agente dovrebbe svolgere il suo compito.
E la parte migliore? Nessun prompt engineering manuale!
Questa signature specifica e impone gli input e gli output, spiegando anche come la signature dovrebbe funzionare.
Il modulo prenderà le istruzioni dalla signature e creerà un prompt ottimale da inviare all'LLM. Per questo particolare caso d'uso, costruiremo un modulo personalizzato chiamato `MultiModalPatientInsuranceAnalyzer()`.
Questo modulo personalizzato dividerà le signature in passaggi, quasi come “incatenare” chiamate, nel metodo forward. Seguiamo questo processo:
Esamina quali strumenti ha utilizzato l'Agente e il ragionamento che ha seguito per rispondere alla domanda.
Una volta che hai un Agente funzionante, ti consigliamo quanto segue:
Il framework di valutazione sarà cruciale per capire quanto efficacemente l'indice di AI Search recupera informazioni rilevanti per il tuo agente RAG. Seguendo queste metriche, saprai dove apportare modifiche, dal cambiare il modello di embedding all'aggiustare i prompt che interagiscono con l'LLM.
Dovresti anche monitorare per vedere se la Foundation Model API (AWS | Azure | GCP) è sufficiente per il tuo caso d'uso. A un certo punto, raggiungerai i limiti dell'API per le Foundation Model API, quindi dovrai passare al Provisioned Throughput (AWS | Azure | GCP) per avere un endpoint più affidabile per il tuo LLM.
Inoltre, tieni d'occhio i costi relativi al serverless model serving (AWS | Azure | GCP). La maggior parte di questi costi deriverà dal serverless model serving SKU di Databricks e potrebbe aumentare man mano che scali.
Dai un'occhiata a questi blog per capire come farlo su Databricks.
Inoltre, i Delivery Solutions Architects (DSA) di Databricks aiutano ad accelerare le iniziative di Dati e AI in tutte le organizzazioni. I DSA forniscono leadership architetturale, ottimizzano le piattaforme per costi e prestazioni, migliorano l'esperienza degli sviluppatori e guidano l'esecuzione di progetti di successo. Fanno da ponte tra l'implementazione iniziale e le soluzioni di livello produttivo, lavorando a stretto contatto con vari team, inclusi ingegneri dei dati, responsabili tecnici, dirigenti e altri stakeholder per garantire soluzioni personalizzate e un tempo più rapido per il valore. Contatta il tuo team account Databricks per saperne di più.
Inizia costruendo la tua app GenAI! Consulta la documentazione per iniziare.
Su Databricks, hai tutti gli strumenti necessari per sviluppare questa soluzione end-to-end. Dai un'occhiata ai blog qui sotto per saperne di più sulla gestione e l'utilizzo del tuo nuovo Agente con gli Agent Bricks Custom Agents.
(Questo post sul blog è stato tradotto utilizzando strumenti basati sull'intelligenza artificiale) Post originale
Iscriviti al nostro blog e ricevi gli ultimi articoli direttamente nella tua casella di posta.