Creare un'applicazione RAG con Milvus e Databricks DBRX
Introduzione
I Large Language Models (LLM) continuano a svilupparsi rapidamente e nuovi modelli vengono rilasciati regolarmente con capacità migliorate rispetto alle versioni precedenti. A marzo 2024, Databricks, una piattaforma dati leader, ha rilasciato il suo primo modello open-source, DBRX, un nuovo modello all’avanguardia con un’architettura mixture-of-experts (MoE) a grana fine. Questo modello decoder-only basato su transformer ha superato diversi benchmark come MMLU, Programmazione (HumanEval) e Matematica (GSM8K).
L’integrazione di DBRX in applicazioni reali ha aperto nuove strade per la creazione di potenti app GenAI, come i sistemi Retrieval Augmented Generation (RAG). Questi sistemi combinano la comprensione contestuale degli LLM con meccanismi efficienti di recupero delle informazioni per fornire risposte altamente accurate e contestualmente pertinenti, anche per query complesse.
In questo tutorial, esploreremo come costruire una solida applicazione RAG combinando le capacità di Milvus, un database vettoriale scalabile ottimizzato per la ricerca di similarità, e DBRX. Milvus consente una gestione e un’interrogazione efficienti di embedding su larga scala, mentre DBRX offre capacità di elaborazione del linguaggio naturale (NLP) all’avanguardia. Insieme, creano una sinergia ideale per applicazioni come la gestione della conoscenza, l’assistenza clienti e le raccomandazioni personalizzate.
Vai a ciò che trovi più interessante:
Comprendere RAG
Introduzione a Milvus
Introduzione a Databricks DBRX
Introduzione all’architettura MoE
Costruire RAG con Milvus e DBRX: una guida passo passo
Comprendere la Retrieval Augmented Generation (RAG)
La Retrieval Augmented Generation (RAG) è un approccio ibrido che migliora le prestazioni degli LLM integrando sistemi esterni di recupero delle informazioni. I LLM tradizionali si basano esclusivamente sulla loro conoscenza pre-addestrata e sul fine-tuning per generare risposte, il che può limitarne l’efficacia quando si trovano di fronte a query che richiedono informazioni aggiornate o specifiche di un dominio. RAG affronta questa limitazione incorporando un meccanismo di recupero che, durante l’inferenza, preleva contesto o dati pertinenti da una fonte esterna, come un database vettoriale o un repository di documenti.
Un sistema RAG è tipicamente composto da due componenti chiave:
Retriever: Questo componente è responsabile del recupero di informazioni pertinenti da un grande corpus o database in base alla query o all’input. Convertendo i dati testuali in embedding, il retriever abilita la ricerca semantica, sfruttando database vettoriali, come Milvus o Zilliz, come sistemi di archiviazione della base di conoscenza e identifica in modo efficiente le informazioni più rilevanti.
Generator: Utilizzando il contesto recuperato come input, l’LLM genera una risposta che è sia informata dai dati esterni sia coerente con la query di input. Ciò garantisce che le risposte non siano solo accurate, ma anche fondate sulle informazioni più pertinenti e aggiornate.
Architettura RAG
Figura 1: Architettura RAG
Combinando recupero e generazione, i sistemi RAG possono produrre risposte più accurate, consapevoli del contesto e basate sui fatti, rendendoli estremamente preziosi in casi d’uso come:
Interrogazione della Knowledge Base: Fornire risposte dettagliate e accurate da dataset ampi e non strutturati.
Assistenza Clienti: Fornire risposte personalizzate e precise facendo riferimento a knowledge base specifiche.
Creazione di Contenuti: Assistere nella scrittura creativa o tecnica reperendo informazioni contestualmente rilevanti.
Ricerca Scientifica: Riassumere risultati di ricerca o rispondere a query specifiche di dominio attingendo da articoli accademici o database.
Database Vettoriale Milvus
Milvus è un database vettoriale open-source progettato per gestire, archiviare e interrogare in modo efficiente embedding vettoriali su larga scala. È ampiamente utilizzato in applicazioni che richiedono ricerca per similarità e recupero semantico, come pipeline di Retrieval-Augmented Generation (RAG), sistemi di raccomandazione, chatbot, motori di ricerca semantica ecc.
Perché Milvus è ideale per i sistemi RAG?
Nei sistemi RAG, un database vettoriale come Milvus funge da spina dorsale del componente retriever. Ecco come si inserisce nell’architettura:
Archiviazione Efficiente: Milvus può archiviare embedding ad alta dimensionalità su scala di miliardi generati da dati testuali o multimodali, consentendo una rappresentazione compatta ed efficiente di vaste knowledge base.
Recupero Rapido: Quando una query viene inserita nel sistema, Milvus esegue una ricerca semantica per recuperare gli embedding più rilevanti, che vengono poi utilizzati per fornire contesto al modello generatore.
Scalabilità: Milvus garantisce che, anche con l’aumentare delle dimensioni della knowledge base, il processo di recupero rimanga performante, consentendo ai sistemi RAG di scalare per soddisfare le esigenze aziendali.
Introduzione a DBRX
DBRX è il nuovo LLM di Databricks rilasciato a marzo 2024, come primo contributo open-source dell’azienda al crescente ecosistema delle tecnologie AI avanzate. È disponibile in due versioni: il modello base (DBRX Base) e il modello fine-tuned (DBRX Instruct). Costruito su un’architettura basata su transformer e solo decoder, DBRX impiega un design mixture-of-experts (MoE) a grana fine che lo distingue da molti modelli esistenti. Questa architettura innovativa consente a DBRX di allocare dinamicamente le risorse computazionali a compiti o query diversi, rendendolo altamente efficiente e adattabile a vari casi d’uso. Prima di approfondire DBRX, impariamo alcune nozioni di base dell’architettura Mixture of Expert (MoE) .
Architettura Mixture of Experts (MoE)
La mixture of experts è un’architettura di rete neurale che divide i carichi di lavoro computazionali tra più sotto-modelli specializzati, o "esperti." A differenza dei modelli tradizionali che attivano uniformemente tutti i livelli e i parametri durante l’inferenza, MoE seleziona e attiva dinamicamente solo un sottoinsieme di esperti più rilevanti per un determinato input. Questa attivazione selettiva introduce sia efficienza sia specializzazione.
L’architettura MoE include i seguenti componenti chiave:
Reti di Esperti: Moduli multipli di rete neurale, ciascuno addestrato a specializzarsi in diversi tipi di input o attività. Questi esperti sviluppano capacità uniche per elaborare domini di dati specifici o risolvere particolari tipologie di problemi.
Meccanismo Router: Un sofisticato meccanismo di gating seleziona e attiva dinamicamente gli esperti più appropriati per un determinato input. Questo sistema di routing utilizza parametri apprendibili per determinare quali esperti siano più rilevanti per un determinato compito.
Attivazione sparsa: Attiva solo un sottoinsieme di esperti per ciascun input, riducendo drasticamente la complessità computazionale pur mantenendo prestazioni elevate. Questo approccio garantisce che non tutti i parametri del modello siano coinvolti simultaneamente.
Figura 2: layer Mixture of Experts (MoE)
Figura 2: layer Mixture of Experts (MoE) | Fonte
L'architettura MoE presenta diversi vantaggi, tra cui:
Efficienza computazionale: Attiva solo un sottoinsieme di esperti per ciascun input, riducendo i requisiti computazionali complessivi.
Specializzazione profonda: Consente alle singole reti esperte di sviluppare capacità altamente focalizzate.
Architettura scalabile: Consente un'espansione più semplice delle capacità del modello aggiungendo più esperti.
Allocazione dinamica delle risorse: Indirizza in modo intelligente gli input verso le risorse computazionali più appropriate.
Vantaggi chiave di DBRX
DBRX ha ottenuto ottimi risultati nei benchmark chiave:
MMLU (Massive Multitask Language Understanding): Dimostra la sua ampia conoscenza generale e le sue capacità di ragionamento.
Attività di programmazione (HumanEval): Eccelle nella generazione e comprensione del codice, rendendolo ideale per il supporto allo sviluppo software.
Attività matematiche (GSM8K): Mostra una forte attitudine nella risoluzione di problemi matematici complessi.
Figura 3: benchmark DBRX
Figura 3: benchmark DBRX (Fonte)
Scalabilità ed efficienza:
DBRX è ottimizzato sia per distribuzioni su larga scala sia per ambienti con risorse limitate, grazie al suo design MoE che garantisce un'elevata velocità in termini di token elaborati al secondo.
La sua scalabilità garantisce l'idoneità per un'ampia gamma di applicazioni, dai sistemi di livello enterprise a configurazioni più piccole e specifiche per dominio.
Figura 4: inferenza DBRX
Figura 4: inferenza DBRX (Fonte)
Accessibilità open-source:
In quanto modello open-source, DBRX consente a sviluppatori e organizzazioni di sperimentare, adattare e innovare senza essere vincolati a ecosistemi proprietari.
La trasparenza del suo sviluppo incoraggia un approccio guidato dalla community al miglioramento e all'integrazione del modello.
DBRX nei sistemi RAG
DBRX è particolarmente adatto ai sistemi di Retrieval-Augmented Generation (RAG) grazie alla sua capacità di generare risposte contestualmente accurate e coerenti basate sulle informazioni recuperate. I vantaggi chiave includono:
Adattabilità contestuale: DBRX integra perfettamente il contesto recuperato nei suoi output generativi, garantendo che le risposte siano altamente pertinenti e specifiche rispetto alla query.
Fine-tuning specifico per dominio: Sebbene DBRX offra prestazioni eccezionali già pronto all'uso, può anche essere sottoposto a fine-tuning con dati specifici del dominio per migliorare ulteriormente la sua accuratezza e rilevanza per applicazioni specializzate.
Efficienza in attività complesse:.Con la sua architettura MoE, DBRX può gestire query complesse e sfaccettate sfruttando in modo efficiente i suoi esperti specializzati, rendendolo ideale per sistemi RAG esigenti.
Applicazione RAG con Milvus e DBRX
Questo tutorial notebook dimostra come implementare una pipeline di Retrieval-Augmented Generation (RAG) utilizzando Milvus come vector store, DBRX come modello linguistico e LangChain come framework. Date le dimensioni del modello, questa implementazione sfrutta un endpoint di serving di un workspace Databricks. In alternativa, il modello può essere scaricato tramite Ollama o la libreria Hugging Face Transformers, sebbene ciò richieda una GPU ad alte prestazioni.
Passaggio 1: Caricare i dati
L'origine dati per questo tutorial è il blog ufficiale di rilascio di Databricks DBRX. Il documento viene caricato e suddiviso in blocchi gestibili usando un metodo ricorsivo di suddivisione del testo.
# Carica e suddividi i documenti
loader = WebBaseLoader("https://www.databricks.com/blog/introducing-dbrx-new-state-art-open-llm")
documents = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=2000, chunk_overlap=200)
docs = text_splitter.split_documents(documents)
Passaggio 2: Caricare gli embedding
Successivamente, utilizziamo embedding open-source di Hugging Face per codificare il contenuto del documento ai fini del retrieval.
# Carica gli embedding
embeddings = HuggingFaceBgeEmbeddings(
model_name = "BAAI/bge-small-en-v1.5")
Passaggio 3: Creare il retriever Milvus
Milvus è configurato come vector store, consentendo efficienti ricerche di similarità. Una volta configurato, il retriever viene testato con una query di esempio.
# Crea il retriever Milvus
vectorstore = Milvus.from_documents(documents=docs,
embedding=embeddings,
collection_name='my_collection',
connection_args={
"uri": "./milvus_demo.db"}
)
retriever = vectorstore.as_retriever()
# Test retriever
query = "What is DBRX?"
vectorstore.similarity_search(query, k=1)
```
Output:
[Document(metadata={'description': '', 'language': 'en-US', 'pk': 454492864071335939, 'source': 'https://www.databricks.com/blog/introducing-dbrx-new-state-art-open-llm', 'title': 'Introducing DBRX: A New State-of-the-Art Open LLM | Databricks Blog'}, page_content='and GPT-3.5 Turbo on RAG tasks.Training mixture-of-experts models is hard. We had to overcome a variety of scientific and performance challenges to build a pipeline robust enough
```
Passaggio 4: Implementare la pipeline RAG
La pipeline RAG integra il modello Databricks DBRX per attività di risposta alle domande. Per usare il modello al di fuori di un workspace Databricks, devi impostare l'URL Host e il Token di Databricks. La pipeline include anche un template di prompt per risposte concise e specifiche del contesto.
# Carica le variabili d'ambiente
DATABRICKS_HOST = userdata.get('DATABRICKS_HOST')
DATABRICKS_TOKEN = userdata.get('DATABRICKS_TOKEN')
# Imposta la pipeline RAG con Databricks DBRX
llm = ChatDatabricks(endpoint="dbrx-instruct",
max_tokens=200)
PROMPT_TEMPLATE = """
Human: You are an AI assistant,that provides answers to questions related to Databricks.
Use the following pieces of information to provide a concise answer to the question enclosed in <question> tags.
If you don't know the answer, just say that you don't know, don't try to make up an answer.
<context>
{context}
</context>
<question>
{question}
</question>
The response should be specific and use only reliable Databricks information.
Assistant:"""
prompt = PromptTemplate(
template=PROMPT_TEMPLATE, input_variables=["context", "question"]
)
def format_docs(docs):
return "nn".join(doc.page_content for doc in docs)
Infine, la catena RAG viene costruita per gestire il processo di retrieval e generazione. La catena elabora le query usando il retriever, formatta i risultati e genera risposte usando il modello DBRX.
# Definisci la catena RAG (Retrieval-Augmented Generation)
rag_chain = (
{"context": retriever | format_docs, "question": RunnablePassthrough()}
| prompt
| llm
| StrOutputParser()
)
res = rag_chain.invoke(query)
res
```
Output:
'DBRX è un modello linguistico di grandi dimensioni (LLM) decoder-only basato su transformer, addestrato utilizzando la previsione del token successivo. Utilizza un’architettura mixture-of-experts (MoE) a grana fine con un totale di 132B parametri, di cui 36B parametri sono attivi per qualsiasi input dato. DBRX è stato preaddestrato su 12T token di dati di testo e codice, e utilizza codifiche di posizione rotatorie (RoPE), unità lineari con gate (GLU) e grouped query attention (GQA). Utilizza anche il tokenizer GPT-4. DBRX è noto per la sua efficienza, con un’inferenza fino a 2x più veloce di LLaMA2-70B, ed è circa il 40% delle dimensioni di Grok-1 in termini sia di conteggi totali sia di parametri attivi. Supera GPT-3.5 ed è competitivo con Gemini 1.0 Pro, ed è particolarmente capace come modello di codice, superando modelli specializzati come CodeLLaMA-70B nelle attività di programmazione.'
```
Questo tutorial è disponibile nel seguente notebook.
Conclusione
La combinazione dell’innovativa architettura Mixture of Experts (MoE) di DBRX e del database vettoriale scalabile di Milvus stabilisce una base solida per costruire sistemi di IA intelligenti e consapevoli del contesto. Il design MoE a grana fine di DBRX gli consente di adattarsi dinamicamente a compiti diversi, garantendo efficienza computazionale e prestazioni eccezionali in una varietà di casi d’uso. Questa capacità è particolarmente vitale nei sistemi di Retrieval Augmented Generation (RAG), dove la capacità di generare risposte contestualmente accurate e specifiche del dominio è fondamentale.
Milvus completa questa architettura consentendo ai sistemi RAG di gestire facilmente enormi basi di conoscenza. Questa combinazione potenzia applicazioni in aree quali gestione della conoscenza, supporto clienti, creazione di contenuti e ricerca scientifica, fornendo risultati pertinenti fondati sulle informazioni più accurate e aggiornate. Per sviluppatori e organizzazioni, ciò rappresenta un avanzamento tecnologico e un’opportunità per costruire sistemi più intelligenti, reattivi e consapevoli del contesto.
Risorse correlate
Continua a leggere

The Real Bottlenecks in Autonomous Driving — And How AI Infrastructure Can Solve Them
Autonomous driving faces a data bottleneck. Learn how AI-native vector databases like Zilliz solve scale, cost, and insight challenges across AV pipelines.

Announcing the General Availability of Zilliz Cloud BYOC on Google Cloud Platform
Zilliz Cloud BYOC on GCP offers enterprise vector search with full data sovereignty and seamless integration.

Proactive Monitoring for Vector Database: Zilliz Cloud Integrates with Datadog
we're excited to announce Zilliz Cloud's integration with Datadog, enabling comprehensive monitoring and observability for your vectorDB deployments.



