Passa al contenuto principale

Using MLflow AI Gateway and Llama 2 to Build Generative AI Apps

Ottieni una maggiore precisione utilizzando la Retrieval Augmented Generation (RAG) con i tuoi dati

Data Intelligence Platforms

Per creare bot di assistenza clienti, grafi di conoscenza interni o sistemi di Q&A, i clienti utilizzano spesso applicazioni di Retrieval Augmented Generation (RAG) che sfruttano modelli pre-addestrati insieme ai loro dati proprietari. Tuttavia, la mancanza di barriere di protezione per la gestione sicura delle credenziali e la prevenzione degli abusi impedisce ai clienti di democratizzare l'accesso e lo sviluppo di queste applicazioni. Di recente abbiamo annunciato MLflow AI Gateway, un gateway API di livello enterprise altamente scalabile che consente alle organizzazioni di gestire i propri LLM e renderli disponibili per la sperimentazione e la produzione. Oggi siamo lieti di annunciare l'estensione dell'AI Gateway per supportare al meglio le applicazioni RAG. Le organizzazioni possono ora centralizzare la governance delle API di modelli ospitate privatamente (tramite Databricks Model Serving), delle API proprietarie (OpenAI, Co:here, Anthropic) e ora delle API di modelli aperti tramite MosaicML per sviluppare e distribuire applicazioni RAG in tutta sicurezza. 

In questo post del blog, illustreremo come creare e implementare un'applicazione RAG sulla piattaforma Databricks Lakehouse AI utilizzando il modello Llama2-70B-Chat per la generazione di testo e il modello Instructor-XL per gli embedding di testo, che sono ospitati e ottimizzati tramite le API di inferenza Starter Tier di MosaicML. L'utilizzo di modelli in hosting ci consente di iniziare rapidamente e di disporre di un modo economico per sperimentare con un throughput ridotto. 

L'applicazione RAG che stiamo costruendo in questo blog risponde a domande sul giardinaggio e fornisce consigli sulla cura delle piante. 

Se hai già familiarità con la RAG e vuoi solo vedere un esempio di come funziona il tutto, dai un'occhiata alla nostra demo (con notebook di esempio) che mostra come utilizzare Llama2, l'inferenza di MosaicML e la ricerca vettoriale per creare la tua applicazione RAG su Databricks.

Che cosa significa RAG?

La RAG è un'architettura molto diffusa che consente ai clienti di migliorare le prestazioni del modello sfruttando i propri dati. Ciò avviene recuperando dati/documenti pertinenti e fornendoli come contesto all'LLM. La RAG ha dimostrato di avere successo nel supportare i chatbot e i sistemi Q&A che devono mantenere informazioni aggiornate o accedere a conoscenze specifiche del settore.
 

Utilizzare l'AI Gateway per implementare dei guardrail per la chiamata delle API del modello

L'MLflow AI Gateway, annunciato di recente, consente alle organizzazioni di centralizzare la governance, la gestione delle credenziali e i limiti di frequenza per le API dei loro modelli, inclusi gli LLM SaaS, tramite un oggetto chiamato Route. La distribuzione delle Route consente alle organizzazioni di democratizzare l'accesso agli LLM, garantendo al contempo che il comportamento degli utenti non abusi del sistema o non lo interrompa. L'AI Gateway fornisce anche un'interfaccia standard per l'esecuzione di query sugli LLM, in modo da semplificare l'aggiornamento dei modelli dietro le Route man mano che vengono rilasciati nuovi modelli all'avanguardia. 

Generalmente, le organizzazioni creano una Route per ogni caso d'uso e molte Route possono puntare allo stesso endpoint API del modello per garantirne il pieno utilizzo. 

Per questa applicazione RAG, vogliamo creare due AI Gateway Route: una per il nostro modello di embedding e un'altra per il nostro modello di generazione di testo. Stiamo utilizzando modelli aperti per entrambi perché vogliamo avere un percorso supportato per il fine-tuning o l'hosting privato in futuro per evitare il vendor lock-in. Per fare questo, useremo l'API di inferenza di MosaicML. Queste APIs forniscono un accesso facile e veloce ai modelli open-source all'avanguardia per una rapida sperimentazione e prezzi basati sui token. MosaicML supporta i modelli MPT e Llama2 per il completamento del testo e i modelli Instructor per gli embedding di testo. In questo esempio, useremo Llama2-70b-Chat, addestrato su 2.000 miliardi di token e sottoposto a fine-tuning per il dialogo, la sicurezza e l'utilità da Meta, e Instructor-XL, un modello di embedding con 1,2 miliardi di parametri sottoposto a fine-tuning per le istruzioni da HKUNLP.

È facile creare una route per Llama2-70B-Chat utilizzando il nuovo supporto per le API di inferenza di MosaicML su AI Gateway:

Analogamente alla route di completamento del testo configurata sopra, possiamo creare un'altra route per Instructor-XL disponibile tramite l'API di inferenza di MosaicML

Per ottenere una chiave API per i modelli ospitati da MosaicML, registrati qui.

Usa LangChain per mettere insieme retriever e generazione di testo

Ora dobbiamo creare il nostro indice vettoriale dai nostri embedding di documenti, in modo da poter eseguire ricerche di somiglianza tra documenti in tempo reale. Possiamo usare LangChain e indirizzarlo alla nostra Route dell'AI Gateway per il nostro modello di embedding:

 

Dobbiamo quindi assemblare il nostro prompt template e il modello di generazione del testo:

La catena RetrievalQA collega i due componenti in modo che i documenti recuperati dal database vettoriale alimentino il contesto per il modello di riepilogo del testo:

Ora è possibile registrare la chain utilizzando il flavor LangChain di MLflow e distribuirla su un endpoint di Model Serving CPU di Databricks. L'uso di MLflow fornisce automaticamente il versioning dei modelli per aggiungere maggiore rigore al processo di produzione.

Dopo aver completato il proof of concept, sperimenta per migliorare la qualità.

A seconda dei requisiti, è possibile eseguire molti esperimenti per trovare le ottimizzazioni giuste per portare l'applicazione in produzione. Utilizzando le API di monitoraggio e valutazione di MLflow, è possibile registrare ogni parametro, modello di base, metrica delle prestazioni e output del modello per il confronto. La nuova interfaccia utente di valutazione in MLflow semplifica il confronto affiancato degli output dei modelli e tutti i dati di monitoraggio e valutazione di MLflow vengono archiviati in formati interrogabili per ulteriori analisi. Alcuni esperimenti comuni:

  1. Latenza - Provare modelli più piccoli per ridurre la latenza e i costi
  2. Qualità - Prova a eseguire il fine-tuning di un modello open source con i tuoi dati. Questo può aiutare con la conoscenza specifica del dominio e a rispettare il formato di risposta desiderato.
  3. Privacy - Prova a ospitare privatamente il modello su Databricks LLM-Optimized GPU Model Serving e a usare il gateway AI per utilizzare appieno l'endpoint in diversi casi d'uso

Inizia oggi a sviluppare applicazioni RAG su Lakehouse AI con MosaicML

La piattaforma Databricks Lakehouse AI consente agli sviluppatori di creare e implementare rapidamente applicazioni di IA generativa in tutta sicurezza.

Per replicare l'applicazione di chat di cui sopra nella tua organizzazione, installa la nostra demo completa del chatbot RAG direttamente nel tuo workspace che utilizza Llama2, l'inferenza di MosaicML e la ricerca vettoriale su Lakehouse.

Esplora la demo del chatbot LLM RAG

 

Esplora ulteriormente e migliora le tue applicazioni RAG:

Non perdere mai un post di Databricks

Iscriviti al nostro blog e ricevi gli ultimi post direttamente nella tua casella di posta elettronica.

Cosa succederà adesso?

image

Data Science e ML

October 31, 2023/9 min de leitura

Anunciando as métricas de LLM-como-juiz do MLflow 2.8 e as Melhores Práticas para Avaliação de LLM de Aplicações RAG, Parte 2

Creating High Quality RAG Applications with Databricks

Anúncios

December 6, 2023/7 min de leitura

Criando aplicativos RAG de alta qualidade com a Databricks