Creazione di app avanzate di Retrieval Augmented Generation (RAG) con LlamaIndex
Introduzione
In un recente Unstructured Data Meetup ospitato da Zilliz (San Francisco), Laurie Voss, VP of Developer Relations presso LlamaIndex, ha tenuto un intervento su "Creare app RAG avanzate con LlamaIndex. Ha condiviso le sue conoscenze su come rendere i framework di Generazione aumentata dal recupero (RAG) più semplici e pronti per la produzione con LlamaIndex.
Approfondiamo i concetti di RAG e vediamo come LlamaIndex 🦙 aiuta nello sviluppo di app RAG. Per fornire un rapido contesto su LlamaIndex (precedentemente noto come GPTIndex), gran parte dei loro lavori iniziali è stata realizzata con solide tecnologie closed-source come OpenAI. Tuttavia, quando i modelli open-source hanno iniziato a recuperare terreno, hanno cominciato a integrarsi con alternative open-source. Che si tratti di LLM, modelli di embedding o tecnologie di re-ranking, ora coprono diverse opzioni affinché un utente possa usare i propri dati per creare un’applicazione RAG.
Cos’è la Generazione aumentata dal recupero (RAG)?
Flusso di lavoro RAG sistematico
RAG è un framework progettato per superare i limiti degli LLM assistendoli con capacità di recupero. Il principale svantaggio degli LLM è che hanno finestre di contesto limitate e possono gestire solo una parte dei dati di un’organizzazione simultaneamente (non più di un milione di token alla volta). RAG affronta questo problema recuperando selettivamente solo il testo/i dati più rilevanti per fornire le risposte più accurate.
Vantaggi principali di RAG:
Accuratezza: Quando dati pertinenti e concisi vengono recuperati dai metodi di recupero implementati e inviati a un LLM, ciò garantisce risposte accurate.
Recenza: Alcuni potrebbero chiedersi perché le aziende non addestrino gli LLM usando i propri dati. La sfida del fine-tuning è che caricare un LLM in qualsiasi ambiente, soprattutto quelli di alta qualità, è già costoso. D’altra parte, la Generazione aumentata dal recupero (RAG) consente aggiornamenti dei dati facili e in tempo reale. Questo rende RAG una soluzione pratica per ambienti di dati dinamici, come quelli presenti in grandi studi legali privati o aziende industriali.
Provenienza: RAG può tracciare le fonti di informazione di nicchia, il che è cruciale per applicazioni che richiedono dati verificabili.
Per semplificare, ricordate i test di comprensione che facevate da bambini? RAG è molto simile. I frammenti di testo recuperati fungono da brano di comprensione, a partire dal quale il bambino (LLM) deve rispondere alle domande. È così semplice ;-)
Tecniche RAG avanzate
Due tecniche sono ampiamente utilizzate per il recupero delle informazioni.
Ricerca per parole chiave: I metodi tradizionali di ricerca per parole chiave sono ancora efficaci per recuperare dati basati su termini specifici.
Ricerca vettoriale(la più potente), nota anche come ricerca di similarità vettoriale: Pensate a una ricerca vettoriale come a qualcosa che trasforma le parole in liste numeriche chiamate vettori. Questi vettori catturano l’essenza del significato di ogni parola. Possiamo trovare parole simili confrontando questi vettori in base alla loro vicinanza numerica (misurata principalmente tramite similarità del coseno o prodotto scalare). La ricerca vettoriale ci aiuta a recuperare dati in modo molto più efficace e affidabile. Una volta eseguita la ricerca vettoriale, l’LLM può accedere al testo più rilevante per rispondere alla query.
I motori di ricerca vengono utilizzati nei sistemi RAG per recuperare documenti da varie fonti, migliorando il recupero di informazioni pertinenti e la reattività complessiva degli strumenti di IA.
Quando pensi a una ricerca vettoriale, pensa al tuo Oxford Dictionary. Tuttavia, raggruppa le parole in base alle loro sequenze di lettere invece di raggrupparle in base al loro significato. I modelli di vector embedding fanno la stessa cosa dimensionalmente.
Raggruppamento dimensionale e semantico dei termini usando Vector Search
Inoltre, database vettoriali open-source come Milvus possono essere usati per configurare Vector Store gratuitamente! Dai un'occhiata qui.
LlamaIndex: semplificare l'implementazione di RAG
LlamaIndex è un framework open-source che collega i tuoi dati agli LLM, disponibile in Python e TypeScript. Semplifica la creazione di applicazioni RAG, consentendo agli sviluppatori di costruire sistemi RAG funzionali con codice minimo. Per implementare una funzionalità RAG di base, hai bisogno solo di cinque righe di codice Python, grazie a LlamaIndex.
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine()
response = query_engine.query("What did the author do growing up?")
Funzionalità RAG avanzate per l'ingestione dei dati e l'interrogazione con LlamaIndex
LlamaIndex fornisce inoltre un'ampia gamma di funzionalità avanzate di ingestione dei dati e interrogazione per le tue applicazioni RAG.
Ingestione
Connettori dati: LlamaHub di LlamaIndex fornisce connettori per varie fonti dati, tra cui Google Drive, Notion, Slack e database come Postgres e MongoDB.
Analisi dei PDF: LlamaIndex offre funzionalità avanzate di analisi dei PDF, convertendo PDF complessi in Markdown per una migliore comprensione da parte degli LLM, poiché gli LLM sono addestrati su una grande porzione di dati Markdown.
Modelli di embedding: LlamaIndex supporta vari modelli di embedding open-source e closed-source, consentendo la personalizzazione in base al dominio.
Vector Store: LlamaIndex si integra con più database vettoriali, ancora una volta, sia open source sia closed source, tra cui Milvus e Zilliz Cloud, per archiviazione e recupero efficienti.
Interrogazione
- Motore di query con sotto-domande
Per domande complesse che richiedono più query semplici, il motore di query con sotto-domande scompone la query principale in parti più piccole, recupera risposte da fonti diverse e le combina in un'unica risposta.
Scomposizione della query per un recupero migliore
Scomposizione della query per un recupero migliore
Raccolta di risposte separate
Raccolta di risposte separate
Risposta finale compilata
Risposta finale compilata
Vedi il codice qui.
- Recupero dal piccolo al grande
Questa metodologia prevede l'embedding di porzioni estremamente piccole di testo (frasi altamente e probabilmente rilevanti per la query dell'utente) in vettori e il recupero della finestra di vettori attorno a quella frase sia verso l'alto sia verso il basso.
Visualizzazione della metodologia di recupero dal piccolo al grande
Visualizzazione della metodologia di recupero dal piccolo al grande
Implementazione reale
Implementazione reale
Vedi il codice qui.
La pre-etichettatura dei documenti con metadati (ad es., anno, utente, azienda, parole chiave), come nell’esempio seguente, consente un filtraggio e un recupero più precisi, migliorando l’accuratezza delle risposte dell’LLM. Questa funzionalità può aiutare con la Ricerca per parole chiave. Pensa ai metadati come a proprietà personalizzate per il testo.
Una pubblicità di T-shirt
Una pubblicità di T-shirt
Combinando la ricerca per parole chiave e la ricerca vettoriale, la ricerca ibrida esegue le query attraverso i metodi specificati. Unisce i risultati in base ai punteggi di affidabilità, assicurando che vengano recuperati i dati più pertinenti—un esempio dettagliato con Codice qui.
- Agenti
Gli Agenti LlamaIndex sono componenti software semi-autonomi che utilizzano vari strumenti per raggiungere un obiettivo. Possono combinare più strategie di recupero e strumenti per rispondere efficacemente a query complesse.
Pensala così: uno strumento è una funzione utente predefinita per la quale un utente può impostare una descrizione di ciò che fa, e l’Agente è un Ingegnere che lavora con questi strumenti. Se l’utente chiede direttamente a un LLM quale sarà il risultato della moltiplicazione di due numeri enormi, molto probabilmente darà una risposta vicina alla risposta reale effettiva ma non uguale. Ma se gli forniamo uno strumento di moltiplicazione che può chiamare in base a una descrizione impostata, otterrà costantemente la risposta corretta indipendentemente dalla dimensione dei numeri.
Flusso di lavoro agentico semplice
Flusso di lavoro agentico semplice
Allo stesso modo, un utente può creare un Workflow Agentic RAG fornendo all’LLM gli strumenti e le loro descrizioni e lasciando che decida quale utilizzare per una specifica query RAG.
Riepilogo RAG avanzato
La presentazione di Laurie mostra framework applicativi di base e avanzati per RAG, che possiamo costruire con un numero minimo di righe di codice usando LlamaIndex. LlamaIndex ci fornisce anche LlamaParse, che può aiutarci a indicizzare i nostri dati nei nostri database vettoriali preferiti come Milvus localmente o sul cloud. In definitiva, spetta all’utente scegliere ciò che si adatta meglio ai propri casi d’uso. Questa presentazione ha anche mostrato varie strategie RAG che si possono scegliere per ottimizzare Recupero e Generazione.
Citazioni
Liu, Jerry. “Llamahub.” Llamahub, 2023, https://cloud.llamaindex.ai/parse.
Liu, Jerry. “Tutorial iniziale (OpenAI).” LlamaIndex, 2023, https://docs.llamaindex.ai/en/stable/getting_started/starter_example/.
“Llama Hub.” Llama Hub, 2023, https://llamahub.ai/.
LlamaIndex. “Ricerca ibrida.” LlamaIndex, 2023, https://docs.llamaindex.ai/en/stable/examples/vector_stores/MilvusHybridIndexDemo/.
LlamaIndex. “Agenti basati su LLM.” LlamaIndex, 2023, https://docs.llamaindex.ai/en/stable/use_cases/agents/.
LlamaIndex. “Sostituzione dei metadati + Finestra di frasi del nodo.” LlamaIndex, 2023, https://docs.llamaindex.ai/en/stable/examples/node_postprocessor/MetadataReplacementDemo/.
LlamaIndex. “Motore di query per sotto-domande.” LlamaIndex, 2023, https://docs.llamaindex.ai/en/stable/examples/query_engine/sub_question_query_engine/.
Milvus. “Milvus.” Milvus: Vector database, 2019, https://milvus.io/.
Milvus. “Database vettoriali Milvus.” Milvus: Vector database, 2023, https://milvus.io/.
Milvus. “Documentazione Quickstart Milvus.” Milvus, 5 maggio 2024, https://milvus.io/docs/quickstart.md.
Continua a leggere

Top 10 Context Engineering Techniques You Should Know for Production RAG
A practical guide to context engineering for production LLM systems, covering RAG, context processing, memory, agents, and multimodal context.

Zilliz Named "Highest Performer" and "Easiest to Use" in G2's Summer 2025 Grid® Report for Vector Databases
Zilliz shines in G2's Summer 2025 Grid® Report as both "Highest Performer" and "Easiest to Use," solving the performance-usability dilemma.

Milvus WebUI: A Visual Management Tool for Your Vector Database
Explore Milvus WebUI to monitor, manage, and optimize your vector database with real-time insights, performance tracking, and system health monitoring.


