Salvaguardare l'integrità dei dati: distribuzione RAG on-prem con LLMware e Milvus
Durante la nostra ultima sessione dell’Unstructured Data Meetup, abbiamo avuto il privilegio di ospitare Darren Oberst, CEO di AI Blocks. Si è laureato alla UC Berkeley in fisica e filosofia e attualmente si concentra sulla trasformazione dello sviluppo di large language model (LLM) per i servizi finanziari e legali. In questo meetup, Darren ha discusso perché la Retrieval Augmented Generation (RAG) dovrebbe essere implementata on-premises per le grandi aziende di servizi finanziari e legali.
In questo blog, non solo riepilogheremo i punti chiave di Darren, ma forniremo anche un esempio pratico di creazione di RAG su un cloud privato utilizzando LLMware e il database vettoriale Milvus. Questo esempio è pensato per ispirarti e motivarti ad applicare queste conoscenze ai tuoi progetti. Consigliamo inoltre di guardare la sessione completa su YouTube.
Sfide principali nell’implementazione di RAG
I modelli linguistici di grandi dimensioni possono essere incoerenti. A volte offrono risposte precise, ma possono anche produrre informazioni irrilevanti. Questa incoerenza deriva dal fatto che gli LLM comprendono le relazioni statistiche tra le parole senza coglierne davvero il significato. Inoltre, gli LLM sono pre-addestrati su dati obsoleti e disponibili pubblicamente, il che limita la loro capacità di fornire risposte accurate specifiche per i tuoi dati privati o per le informazioni più recenti.
La Retrieval Augmented Generation (RAG) è una tecnica popolare per affrontare questa limitazione, migliorando le risposte dell’LLM con fonti esterne di conoscenza archiviate in un database vettoriale come Milvus, migliorando così la qualità dei contenuti. Sebbene RAG sia una tecnica eccezionale, la sua implementazione presenta delle sfide.
Nel talk, Darren ****ha condiviso le sfide comuni che molte aziende affrontano.
Preoccupazioni relative alla privacy e alla sicurezza dei dati: Molte aziende, soprattutto quelle nei settori finanziario e legale, esitano a utilizzare servizi di cloud pubblico a causa di preoccupazioni relative alla privacy e alla sicurezza. Molte soluzioni esistenti si concentrano inoltre sui cloud pubblici piuttosto che sull’on-premise, il che pone sfide per le aziende che devono garantire sicurezza dei dati e conformità.
Costi elevati: L’infrastruttura di cloud pubblico che utilizza frequentemente modelli su larga scala può far lievitare le fatture. Pagare una fattura così salata senza avere pieno controllo e proprietà dell’infrastruttura, dei dati e delle applicazioni si traduce in una situazione perdente sotto ogni aspetto.
Trascurare le strategie di recupero: Un aspetto cruciale spesso trascurato è l’importanza delle strategie di recupero nell’implementazione di RAG. Sebbene i team AI tendano a concentrarsi sulle capacità di AI generativa, la qualità dei documenti recuperati è altrettanto vitale.
Implementazione RAG on-prem
Le sfide discusse sopra possono essere affrontate efficacemente con una soluzione comune: implementare RAG su un cloud privato. Questo approccio affronta i problemi nei seguenti modi:
- Migliore sicurezza dei dati: I documenti aziendali sensibili, le informazioni normative e altri dati proprietari devono rimanere entro i confini sicuri di un cloud privato per soddisfare gli standard di conformità e sicurezza. Se tutto avviene in modo privato, non ci saranno violazioni.
- Costi inferiori: Implementare modelli AI su infrastruttura di cloud privato può offrire una soluzione più conveniente rispetto ai servizi di cloud pubblico, soprattutto quando è richiesto un utilizzo frequente. Il costo si riduce ulteriormente quando utilizziamo modelli più piccoli, poiché ottengono risultati pratici in modo più efficiente rispetto a modelli più grandi e più intensivi in termini di risorse. Grazie alla loro rapida innovazione e alle capacità di personalizzazione, gli LLM e le tecnologie open-source sono un’ottima opzione per il tuo RAG.
- Migliorare la generazione con il retrieval in un cloud privato: Un motore di retrieval migliore può integrare un modello più piccolo con capacità generative limitate. Solo realizzando un sistema di retrieval migliore è possibile migliorare significativamente l’accuratezza e l’efficienza delle applicazioni di IA, come il parsing dei documenti, il chunking del testo e le query semantiche.
In sintesi, Darren sostiene l’adozione di soluzioni di cloud privato per l’IA, in particolare per gli LLM, per affrontare le preoccupazioni relative alla privacy dei dati, ai costi e ai risultati. Successivamente, discuteremo i modelli Dragon progettati e ottimizzati per RAG nella libreria Huggingface Transformers.
Modelli dRAGon (Delivering RAG On)🐉
Dragon è una serie di modelli lanciata da AI Blocks progettata specificamente per la Retrieval Augmented Generation (RAG). È una serie di sette modelli open-source perfezionati su dataset proprietari come contratti, documenti normativi e informazioni finanziarie complesse. Esistono tre categorie di modelli:
Classi di modelli e relativa descrizione
Classi di modelli e relativa descrizione
- Modelli Bling: Modelli compatti, istruiti tramite instruct-tuning, ottimizzati per la prototipazione rapida e in grado di funzionare su CPU, il che li rende ideali per le fasi iniziali di test e sviluppo. Sono meno gravosi per la memoria, poiché contengono solo da 1 a 3 miliardi di parametri.
- Modelli Dragon RAG: Versioni perfezionate dei principali modelli di base da 6 e 7 miliardi di parametri come Llama, Mistral, Red-pajama, Falcon e Deci. Pensati per attività come la risposta a domande basata sui fatti e l’analisi di documenti normativi.
- Modelli ****BERT**** Industry: Specializzati per applicazioni specifiche di settore, i modelli Industry BERT sono sentence transformers perfezionati e adattati ad attività come l’analisi dei contratti.
Inoltre, questi modelli sono stati sottoposti a benchmark rigorosi utilizzando benchmark comuni per strutture RAG di buon senso. A differenza dei modelli open-source che si basano su metriche scientifiche come MMLU e ARC, i modelli Dragon vengono testati per l’accuratezza nel mondo reale e per casi d’uso pratici. Questa raccolta di modelli è disponibile su HuggingFace come mostrato di seguito:
Modelli LLMware ospitati su HuggingFace
Modelli LLMware ospitati su HuggingFace
I principali vantaggi dell’utilizzo di questi modelli sono i seguenti:
Accuratezza migliorata: Perfezionati su dataset estesi, questi modelli offrono un’elevata precisione nel parsing dei documenti, nel chunking del testo e nelle query semantiche.
Convenienti: Ottimizzati per l’uso su infrastruttura cloud privata, questi modelli offrono una soluzione economicamente efficiente rispetto a modelli più grandi e ad alta intensità di risorse su cloud pubblici.
Open source e personalizzabili: Disponibili su Hugging Face, questi modelli open-source consentono innovazione rapida e personalizzazione per soddisfare esigenze aziendali specifiche.
Prestazioni di livello produttivo: Valutati tramite benchmark per l’affidabilità, questi modelli offrono prestazioni costanti e affidabili in vari flussi di lavoro.
Integrazione fluida: Con un supporto completo e script di generazione facili da usare, l’integrazione di questi modelli nei flussi di lavoro esistenti è semplice.
Tali modelli non compromettono costi, accuratezza o personalizzabilità; la loro integrazione in LLMware li rende facili da accedere.
Uno sguardo a LLMware
LLMware è una libreria progettata per applicazioni basate su LLM di livello enterprise. Utilizza modelli piccoli e specializzati che possono essere distribuiti privatamente, integrati in modo sicuro con fonti di conoscenza aziendali e adattati in modo conveniente a qualsiasi processo aziendale. Questo toolkit è paragonabile a LangChain ****o LlamaIndex ma è pensato per un’elevata scalabilità e una gestione documentale robusta all’interno di ambienti enterprise.
Componenti di LLMware:
Pipeline RAG: Fornisce componenti integrati per l’intero ciclo di vita della connessione delle fonti di conoscenza ai modelli di IA generativa.
Modelli specializzati: Include oltre 50 modelli piccoli e ottimizzati per attività enterprise come question-answering basato sui fatti, classificazione, riepilogo ed estrazione. Questi modelli includono anche quelli discussi sopra; ne useremo uno nella nostra implementazione nella sezione seguente.
Funzionalità di LLMware:
Ingestione massiva di documenti:
Scalabilità: Progettato per gestire l’ingestione di centinaia di migliaia di documenti, LLMware supporta l’elaborazione parallela e la distribuzione su più worker.
Parsing dei documenti: Implementa specifiche complete per il parsing di PDF, documenti Word, PowerPoint e file Excel utilizzando parser personalizzati basati su C.
Modello dati end-to-end:
Archivi dati persistenti: Si integra con MongoDB per l’archiviazione persistente dei dati, consentendo un chunking e un’indicizzazione efficienti delle raccolte di testo.
Integrazione enterprise: Progettato per integrarsi senza problemi nei flussi di lavoro dei dati enterprise, garantendo una gestione dei dati sicura e scalabile.
Framework per applicazioni basate su LLM:
Compatibilità open source: Questa funzionalità dà priorità al supporto per un’ampia gamma di modelli open-source e Hugging Face, rendendo semplice creare e distribuire applicazioni LLM.
Ambiente ricco di funzionalità: Sviluppato continuamente per includere nuove funzionalità e capacità che supportano diversi casi d’uso in contesti enterprise.
Facilità d’uso:
Esempi e documentazione: Fornisce esempi e documentazione completi per aiutare gli utenti a iniziare rapidamente ed efficientemente.
Focus enterprise: Creato specificamente per rispondere alle esigenze uniche delle distribuzioni LLM di livello enterprise, dalla gestione documentale all’elaborazione scalabile.
Retrieval Augmented Generation in un cloud privato utilizzando Milvus e LLMware
Questa sezione spiegherà e implementerà una soluzione RAG on-premise. Esaminiamo l’architettura per RAG utilizzando LLMware e il database vettoriale Milvus.
L’architettura
Questo diagramma dell’architettura illustra il flusso di lavoro di RAG on-premises utilizzando LLMware e Milvus.
Diagramma dell’architettura per RAG on-premises utilizzando LLMware e Milvus
Diagramma dell’architettura per RAG on-premises utilizzando LLMware e Milvus
Ecco una spiegazione di ciascun componente:
Documenti: I dati di input consistono in vari documenti da elaborare. In questo esempio, gli ~80 documenti di esempio vengono prelevati dal bucket S3.
Pipeline di ingestione: Questo è il passaggio iniziale in cui i documenti vengono ingeriti nel sistema. Questa pipeline prepara i documenti per un’ulteriore elaborazione estraendo informazioni rilevanti ed eventualmente eseguendo attività di pre-elaborazione come la pulizia o la formattazione dei dati.
Generazione degli embedding: Dopo l’ingestione, i documenti vengono passati a un modello di embedding. In questo caso, un modello Industry BERT converte i documenti in rappresentazioni numeriche (embedding vettoriali) che catturano il significato semantico del testo.
Database vettoriale: Gli embedding generati dal modello Industry BERT vengono archiviati in un database vettoriale, Milvus, insieme ai documenti. Questo database vettoriale specializzato è progettato per gestire e cercare in modo efficiente tra dati vettoriali su larga scala.
Query: Un utente invia una query al sistema.
Embedding della query: Anche questa query viene convertita in un embedding per confrontarla con gli embedding dei documenti archiviati in Milvus.
Cerca documenti: La similarità tra gli embedding della query e dei documenti viene calcolata, con i documenti classificati più in alto in base a una maggiore similarità.
Documenti recuperati: Vengono recuperati i documenti pertinenti con alta similarità. Il numero di documenti recuperati e la soglia di similarità possono essere personalizzati.
LLM: I documenti recuperati e la query verranno inviati all'LLM; nel nostro caso, l'LLM è Bling 7B.
Risultato: La risposta dell'LLM viene fornita all'utente.
La prossima sezione mostrerà l'implementazione dell'applicazione RAG nel cloud privato.
Implementazione
In questa implementazione, costruiremo l'applicazione RAG ingerendo ~80 documenti legali nel database vettoriale Milvus e ponendo domande utilizzando un LLM. Presumiamo che l'utente abbia già installato Milvus per questo blog e possa avviare il servizio.
Importazioni
Per prima cosa installeremo le librerie necessarie e le importeremo nel nostro ambiente. Avremo bisogno di llmware e PyMilvus. Ecco come installarlo:
pip install llmware
Pip install pymilvus>=2.4.2
Dopo questo passaggio, importiamo i moduli necessari da llmware.
import os
from llmware.library import Library
from llmware.retrieval import Query
from llmware.setup import Setup
from llmware.status import Status
from llmware.prompts import Prompt
from llmware.configs import LLMWareConfig, MilvusConfig
Dopo aver importato i dati, configureremo la configurazione.
Configurazione
Il passaggio di configurazione è piuttosto semplice. In questo passaggio, memorizziamo i nomi del modello di embedding, del database vettoriale e dell'LLM.
embedding_model = "industry-bert-contracts"
vector_db = "milvus"
llm = "llmware/bling-1b-0.1"
La configurazione include il modello di embedding industry-bert-contracts, Milvus per il database vettoriale e il modello linguistico llmware/bling-1b-0.1 per l'elaborazione e l'analisi ottimizzate dei documenti basate sull'IA.
Configurazione di Milvus
Grazie alla sua integrazione, è molto semplice configurare Milvus utilizzando llmware. Dopo l'installazione di PyMilvus, dobbiamo impostare vector_db come Milvus mentre active_db come sqlite, come mostrato di seguito:
LLMWareConfig().set_active_db("sqlite")
MilvusConfig().set_config("lite", True) # No dependency
LLMWareConfig().set_vector_db("milvus")
llmware supporta Milvus-lite, che è autonomo e non richiede altre dipendenze.
Creazione di una libreria
In llmware, una libreria è il costrutto organizzativo principale per le informazioni non strutturate. Gli utenti possono creare una grande libreria con contenuti diversificati o più librerie, ciascuna dedicata a un argomento, progetto, caso, accordo, account, utente o dipartimento specifico.
Per creare una libreria, possiamo semplicemente chiamare la funzione create_new_library dalla classe Library, che richiede un nome arbitrario come argomento. Diamo un'occhiata.
Library_name = "contracts-Rag"
library = Library().create_new_library(library_name)
Ingestione dei documenti
La classe Setup in LLMware scarica file di esempio da un bucket AWS S3, inclusi vari documenti di esempio come contratti, fatture, report finanziari, ecc. Puoi sempre ottenere la versione più recente di questi esempi utilizzando load_sample_files. In questo esempio, caricheremo gli “Agreements”.
sample_files_path = Setup().load_sample_files(over_write=False)
contracts_path = os.path.join(sample_files_path, "Agreements")
Llmware ha una funzione utile chiamata add_files, uno strumento di ingestione universale. Puntala a una cartella locale contenente tipi di file misti e instraderà automaticamente i file in base alla loro estensione al parser appropriato. I file vengono quindi analizzati, il testo suddiviso in blocchi e indicizzato nel database della raccolta di testo.
library.add_files(input_folder_path=contracts_path)
I documenti sono caricati. Creiamo i suoi embedding.
Creare gli embedding
Tutto in questa implementazione viene eseguito privatamente. Pertanto, il modello di embedding viene scaricato on-prem. Come menzionato, il modello di embedding è industry-bert-contracts, mentre Milvus è il database vettoriale.
library.install_new_embedding(embedding_model_name=embedding_model, vector_db=vector_db)
Dopo aver installato gli embedding nella libreria, puoi controllare lo stato degli embedding per verificare gli embedding aggiornati e confermare che il modello sia stato acquisito accuratamente.
Status().get_embedding_status(library_name, embedding_model)
Vediamo come invocare una chiamata LLM nelle prossime sezioni.
Caricare il Large Language Model
Useremo la funzione load_model per caricare il modello Bling. Questi sono piccoli e adatti a test rapidi.
prompter = Prompt().load_model(llm)
Cercare documenti
In Llmware, la classe Query viene utilizzata per la ricerca e il recupero, richiedendo una Library come parametro obbligatorio. Questo approccio consente ai recuperi di sfruttare l’astrazione della Library, supportando più basi di conoscenza distinte allineate a diversi casi d’uso, utenti, account e permessi.
Questa classe consente molte funzioni di ricerca, come la ricerca testuale e la ricerca semantica. Useremo la ricerca semantica per il nostro esempio.
query = "what is the executive's base annual salary"
results = Query(library).semantic_query(query, result_count=50, embedding_distance_threshold=1.0)
Unire tutti i pezzi
Questa sezione itererà su tutti i contratti, filtrerà i risultati pertinenti e genererà le risposte usando LLM. Ecco lo snippet di codice:
for i, contract in enumerate(os.listdir(contracts_path)):
qr = []
for j, entries in enumerate(results):
if entries["file_source"] == contract:
print("Top Retrieval: ", j, entries["distance"], entries["text"])
qr.append(entries)
source = prompter.add_source_query_results(query_results=qr)
response = prompter.prompt_with_source(query, prompt_name="default_with_context", temperature=0.3)
for resp in response:
if "llm_response" in resp:
print("\nupdate: llm answer - ", resp["llm_response"])
# start fresh for next document
prompter.clear_source_materials()
Ecco la guida per esso.
Iterare sui contratti: Per ogni file di contratto nella directory, inizializza un elenco per memorizzare i risultati di query pertinenti.
Filtrare i risultati pertinenti: Filtra i risultati che corrispondono al contratto corrente e stampa i principali recuperi.
Generare risposte: I risultati filtrati generano una risposta con un modello linguistico e stampano le risposte generate.
Reimpostare per il contratto successivo: Cancella i materiali di origine per prepararsi al contratto successivo.
Il risultato per la query è fornito come segue:
>>> Contract Name: Rhea EXECUTIVE EMPLOYMENT AGREEMENT.pdf
Top Retrieval: 1 0.6237360223214722
The Board (or its compensation committee) will annually review the Executive's base salary following the Employer's standard compensation and performance review policies for senior executives. While the salary may be increased, it cannot be decreased. The specific amount of any yearly increase will be determined based on these policies. For the purposes of this Agreement, "Base Salary" refers to the Executive's base salary as periodically established in accordance with Section 2.2.
Nota che qui viene visualizzato solo il primo recupero.
Sopra, abbiamo creato con successo un'applicazione RAG per documenti legali utilizzando Milvus e LLMware. La parte migliore è che nessun dato viene inviato a fornitori esterni; tutto, incluso il database vettoriale, il modello di embedding e l'LLM, è on-premises
Conclusione
Con la crescente adozione dell'IA, interagire con i dati è diventato più facile che mai. Tuttavia, molte aziende sono ancora riluttanti a inviare i propri dati al cloud, e a ragione. LLMware fornisce una soluzione per costruire sistemi di IA on-premises anziché sul cloud pubblico. Questa soluzione garantisce la privacy dei dati, riduce i costi e offre maggiore controllo.
Utilizzando LLMware e il database vettoriale Milvus, possiamo combinare la potenza della ricerca per similarità vettoriale e degli LLM per porre domande sui nostri documenti privati. Milvus è un robusto database vettoriale open-source che archivia, elabora e ricerca dati vettoriali su scala di miliardi. Una volta che Milvus recupera i primi K risultati più rilevanti per l'LLM, gli LLM avranno il contesto per rispondere alle tue query.
Continua a leggere

Smarter Autoscaling in Zilliz Cloud: Always Optimized for Every Workload
With the latest upgrade, Zilliz Cloud introduces smarter autoscaling—a fully automated, more streamlined, elastic resource management system.

8 Latest RAG Advancements Every Developer Should Know
Explore eight advanced RAG variants that can solve real problems you might be facing: slow retrieval, poor context understanding, multimodal data handling, and resource optimization.

Selecting the Right ETL Tools for Unstructured Data to Prepare for AI
Learn the right ETL tools for unstructured data to power AI. Explore key challenges, tool comparisons, and integrations with Milvus for vector search.



