Erstellen fortgeschrittener Retrieval-Augmented-Generation-(RAG)-Apps mit LlamaIndex
Einführung
Bei einem kürzlich von Zilliz (San Francisco) veranstalteten Unstructured Data Meetup hielt Laurie Voss, VP of Developer Relations bei LlamaIndex, einen Vortrag über „Building Advanced RAG Apps with LlamaIndex. Er teilte sein Wissen darüber, wie man Retrieval Augmented Generation (RAG)-Frameworks mit LlamaIndex einfacher und produktionsreif macht.
Tauchen wir in die Konzepte von RAG ein und sehen wir uns an, wie LlamaIndex 🦙 bei der Entwicklung von RAG-Apps hilft. Um kurz Hintergrundinformationen zu LlamaIndex (früher bekannt als GPTIndex) zu geben: Ein Großteil ihrer früheren Arbeiten wurde mit robusten Closed-Source-Technologien wie OpenAI umgesetzt. Als Open-Source-Modelle jedoch aufzuholen begannen, fingen sie an, Open-Source-Alternativen zu integrieren. Ob LLMs, Embedding-Modelle oder Re-Ranking-Technologien – sie decken inzwischen eine Reihe von Optionen ab, mit denen Nutzer ihre eigenen Daten verwenden können, um eine RAG-Anwendung zu erstellen.
Was ist Retrieval Augmented Generation (RAG)?
Systematischer RAG-Workflow
RAG ist ein Framework, das entwickelt wurde, um die Einschränkungen von LLMs zu überwinden, indem es sie mit Retrieval-Fähigkeiten unterstützt. Der größte Nachteil von LLMs besteht darin, dass sie begrenzte Kontextfenster haben und immer nur einen Teil der Daten einer Organisation gleichzeitig verarbeiten können (nicht mehr als eine Million Tokens auf einmal). RAG löst dieses Problem, indem es selektiv nur die relevantesten Texte/Daten abruft, um möglichst genaue Antworten bereitzustellen.
Wichtige Vorteile von RAG:
Genauigkeit: Wenn relevante und prägnante Daten durch implementierte Retrieval-Methoden abgerufen und an ein LLM gesendet werden, gewährleistet dies genaue Antworten.
Aktualität: Manche fragen sich vielleicht, warum Unternehmen LLMs nicht mit ihren Daten trainieren. Die Herausforderung beim Fine-Tuning besteht darin, dass das Laden eines LLMs in eine beliebige Umgebung, insbesondere hochwertiger Modelle, bereits kostspielig ist. Andererseits ermöglicht Retrieval-Augmented Generation (RAG) einfache Datenaktualisierungen in Echtzeit. Dies macht RAG zu einer praktischen Lösung für dynamische Datenumgebungen, wie sie etwa in großen privaten Anwaltskanzleien oder Industrieunternehmen vorkommen.
Herkunft: RAG kann die spezialisierten Informationsquellen nachverfolgen, was für Anwendungen, die verifizierbare Daten erfordern, entscheidend ist.
Zur Vereinfachung: Erinnern Sie sich an die Verständnisaufgaben, die Sie als Kind gemacht haben? RAG ist dem sehr ähnlich. Die abgerufenen Textabschnitte dienen als Verständnisgrundlage, aus der das Kind (LLM) Fragen beantworten muss. So einfach ist das ;-)
Fortgeschrittene RAG-Techniken
Zwei Techniken werden häufig für das Information Retrieval verwendet.
Keyword-Suche: Traditionelle Keyword-Suchmethoden sind weiterhin effektiv, um Daten auf Basis bestimmter Begriffe abzurufen.
Vektorsuche(am leistungsstärksten), auch bekannt als Vektorähnlichkeitssuche: Stellen Sie sich eine Vektorsuche als etwas vor, das Wörter in numerische Listen namens Vektoren umwandelt. Diese Vektoren erfassen den Kern der Bedeutung jedes Wortes. Wir können ähnliche Wörter finden, indem wir diese Vektoren anhand ihrer numerischen Nähe vergleichen (hauptsächlich gemessen durch Kosinusähnlichkeit oder Skalarprodukt). Die Vektorsuche hilft uns, Daten deutlich effektiver und zuverlässiger abzurufen. Sobald wir die Vektorsuche durchgeführt haben, kann das LLM auf den relevantesten Text zugreifen, um die Anfrage zu beantworten.
Suchmaschinen werden in RAG-Systemen verwendet, um Dokumente aus verschiedenen Quellen abzurufen, wodurch das Abrufen relevanter Informationen verbessert und die allgemeine Reaktionsfähigkeit von KI-Tools erhöht wird.
Wenn Sie an eine Vektorsuche denken, denken Sie an Ihr Oxford Dictionary. Gruppieren Sie die Wörter jedoch nach ihren Buchstabenfolgen, anstatt sie nach ihrer Bedeutung zu gruppieren. Die vector embedding-Modelle machen dimensional dasselbe.
Dimensionale und semantische Gruppierung von Begriffen mithilfe der Vektorsuche
Außerdem können Open-Source-Vektordatenbanken wie Milvus verwendet werden, um Vector Stores kostenlos einzurichten! Sehen Sie es sich hier an.
LlamaIndex: Vereinfachung der RAG-Implementierung
LlamaIndex ist ein Open-Source-Framework, das Ihre Daten mit LLMs verbindet und in Python und TypeScript verfügbar ist. Es vereinfacht die Erstellung von RAG-Anwendungen und ermöglicht es Entwicklern, funktionsfähige RAG-Systeme mit minimalem Code zu erstellen. Um eine grundlegende RAG-Funktionalität zu implementieren, benötigen Sie dank LlamaIndex nur fünf Zeilen Python-Code.
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?")
Erweiterte RAG-Funktionen für Datenaufnahme und Abfragen mit LlamaIndex
LlamaIndex bietet außerdem eine breite Palette erweiterter Funktionen zur Datenaufnahme und Abfrage für Ihre RAG-Anwendungen.
Datenaufnahme
Data Connectors: LlamaHub von LlamaIndex bietet Konnektoren für verschiedene Datenquellen, darunter Google Drive, Notion, Slack und Datenbanken wie Postgres und MongoDB.
PDF Parsing: LlamaIndex bietet erweiterte PDF-Parsing-Funktionen und konvertiert komplexe PDFs in Markdown, damit LLMs sie besser verstehen, da LLMs auf einem großen Teil von Markdown-Daten trainiert werden.
Embedding Models: LlamaIndex unterstützt verschiedene Open-Source- und Closed-Source-Embedding-Modelle und ermöglicht eine Anpassung basierend auf der Domäne.
Vector Stores: LlamaIndex integriert sich mit mehreren Vektordatenbanken, wiederum sowohl Open Source als auch Closed Source, darunter Milvus und Zilliz Cloud, für effiziente Speicherung und Abfrage.
Abfragen
- Sub-Question Query Engine
Bei komplexen Fragen, die mehrere einfache Abfragen erfordern, zerlegt die Sub-Question Query Engine die Hauptabfrage in kleinere Teile, ruft Antworten aus verschiedenen Quellen ab und kombiniert sie zu einer einzigen Antwort.
Abfrageaufschlüsselung für bessere Abfrage
Abfrageaufschlüsselung für bessere Abfrage
Sammlung separater Antworten
Sammlung separater Antworten
Endgültig zusammengestellte Antwort
Endgültig zusammengestellte Antwort
Siehe den Code hier.
- Small to Big Retrieval
Diese Methodik umfasst das Einbetten extrem kleiner Textstücke (Sätze, die sehr wahrscheinlich und hochrelevant für die Benutzerabfrage sind) in Vektoren und das Abrufen des Vektorfensters um diesen Satz herum, sowohl nach oben als auch nach unten.
Visualisierung der Small-to-Big-Retrieval-Methodik
Visualisierung der Small-to-Big-Retrieval-Methodik
Reale Implementierung
Reale Implementierung
Siehe den Code hier.
Das Vorab-Tagging von Dokumenten mit Metadaten (z. B. Jahr, Benutzer, Unternehmen, Schlüsselwörter), wie im folgenden Beispiel, ermöglicht eine präzisere Filterung und Abfrage und erhöht so die Genauigkeit der Antworten des LLM. Diese Funktion kann bei der Keyword Search helfen. Stellen Sie sich Metadaten wie benutzerdefinierte Eigenschaften für Text vor.
Eine T-Shirt-Anzeige
Eine T-Shirt-Anzeige
Durch die Kombination von Schlüsselwort- und Vektorsuche führt die hybride Suche Abfragen über die angegebenen Methoden aus. Sie führt die Ergebnisse basierend auf Konfidenzwerten zusammen und stellt so sicher, dass die relevantesten Daten abgerufen werden – ein detailliertes Beispiel mit Code hier.
- Agents
LlamaIndex Agents sind halbautonome Softwarekomponenten, die verschiedene Tools verwenden, um ein Ziel zu erreichen. Sie können mehrere Abrufstrategien und Tools kombinieren, um komplexe Abfragen effektiv zu beantworten.
Stellen Sie es sich so vor: Ein Tool ist eine vordefinierte Benutzerfunktion, für die ein Benutzer eine Beschreibung dessen festlegen kann, was sie tut, und der Agent ist ein Ingenieur, der mit diesen Tools arbeitet. Wenn der Benutzer ein LLM direkt fragt, was die Multiplikation zweier riesiger Zahlen ergibt, wird es höchstwahrscheinlich eine Antwort geben, die nahe an der tatsächlichen Ground-Truth-Antwort liegt, aber nicht identisch ist. Wenn wir ihm jedoch ein Multiplikationstool geben, das es basierend auf einer festgelegten Beschreibung aufrufen kann, wird es unabhängig von der Größe der Zahlen konsistent die richtige Antwort erzielen.
Einfacher agentischer Workflow
Einfacher agentischer Workflow
Ebenso kann ein Benutzer einen Agentic RAG Workflow erstellen, indem er dem LLM die Tools und deren Beschreibungen gibt und es entscheiden lässt, welches für eine bestimmte RAG-Abfrage verwendet werden soll.
Zusammenfassung zu Advanced RAG
Lauries Präsentation zeigt grundlegende und fortgeschrittene Anwendungsframeworks für RAG, die wir mit minimalen Codezeilen mithilfe von LlamaIndex erstellen können. LlamaIndex stellt uns außerdem LlamaParse zur Verfügung, das uns helfen kann, unsere Daten in unsere bevorzugten Vektordatenbanken wie Milvus lokal oder in der Cloud zu indexieren. Letztlich liegt es beim Benutzer zu entscheiden, was am besten zu seinen Anwendungsfällen passt. Diese Präsentation zeigte außerdem verschiedene RAG-Strategien, für die man sich entscheiden kann, um Retrieval und Generation zu optimieren.
Zitate
Liu, Jerry. „Llamahub.“ Llamahub, 2023, https://cloud.llamaindex.ai/parse.
Liu, Jerry. „Starter Tutorial (OpenAI).“ LlamaIndex, 2023, https://docs.llamaindex.ai/en/stable/getting_started/starter_example/.
„Llama Hub.“ Llama Hub, 2023, https://llamahub.ai/.
LlamaIndex. „Hybrid Search.“ LlamaIndex, 2023, https://docs.llamaindex.ai/en/stable/examples/vector_stores/MilvusHybridIndexDemo/.
LlamaIndex. „LLM based Agents.“ LlamaIndex, 2023, https://docs.llamaindex.ai/en/stable/use_cases/agents/.
LlamaIndex. „Metadata Replacement + Node Sentence Window.“ LlamaIndex, 2023, https://docs.llamaindex.ai/en/stable/examples/node_postprocessor/MetadataReplacementDemo/.
LlamaIndex. „Sub Question Query Engine.“ 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. „Milvus Vector Datbases.“ Milvus: Vector database, 2023, https://milvus.io/.
Milvus. „Quickstart Milvus documentation.“ Milvus, 5 May 2024, https://milvus.io/docs/quickstart.md.
Weiterlesen

Zilliz Cloud Now Available in Azure North Europe: Bringing AI-Powered Vector Search Closer to European Customers
The addition of the Azure North Europe (Ireland) region further expands our global footprint to better serve our European customers.

Legal Document Analysis: Harnessing Zilliz Cloud's Semantic Search and RAG for Legal Insights
Enhance legal document analysis with Zilliz Cloud’s Semantic Search and RAG. Improve accuracy, efficiency, and scalability for contracts, case law, and compliance.

DeepSeek Always Busy? Deploy It Locally with Milvus in Just 10 Minutes—No More Waiting!
Learn how to set up DeepSeek-R1 on your local machine using Ollama, AnythingLLM, and Milvus in just 10 minutes. Bypass busy servers and enhance AI responses with custom data.


