KI-Anwendungsrahmen · 02

Detaillierte Erläuterung von LlamaIndex· Datenverbindung und RAG-Engine (Wissen an die KI füttern)

Dem LLM externes Wissen geben, um Q&A genauer zu machen.

FRAMEWORK MAP
Detaillierte Erläuterung von LlamaIndex
Datenverbindung und RAG-Engine (Wissen an die KI füttern)
Dem LLM externes Wissen geben, um Q&A genauer zu machen.
Zusammenfassung in einem Satz

LlamaIndex ist wie ein Super-Bibliothekar: Es hilft dir, verschiedenste Daten zu ordnen, bei Bedarf schnell die relevantesten Inhalte zu finden und sie dann an das LLM weiterzugeben, damit präzise Antworten erzeugt werden.

1. Was ist LlamaIndex?

LlamaIndex (ehemals GPT Index) wird verwendet, um zu erstellenDatengetriebene LLM-AnwendungFramework. Kernziel: verschiedene Datenquellen verbinden, Indizes aufbauen und leistungsstarke Such- und Generierungsfunktionen bereitstellen.

Datenquelle
Daten aus verschiedenen Quellen laden
Indexaufbau
Organisieren, aufteilen, vektorisieren
Retrieval-Augmentation
Relevante Informationen schnell abrufen
Antwort generieren
Antworten auf Basis des Kontexts generieren

2. Kernablauf (RAG-Ablauf)

Step 1
Datenladen
Load
Step 2
Textaufteilung
Chunk
Step 3
Vektorisierung
Embed
Step 4
Indexaufbau
Index
Step 5
Suche
Retrieve
Step 6
Antwort generieren
Generate

3. Kernmodule (Code Map)

Readers-Datenlader

Unterstützt mehrere Datenquellen (Dateien, Webseiten, Datenbanken usw.)

Nodes Knoten (Textblöcke)

Dokumente in semantisch ähnliche Knoten aufteilen

Indexes-Indexstruktur

Knoten mit mehreren Indexstrukturen organisieren und speichern

Retrievers-Retriever

Relevanten Text anhand der Abfrage aus dem Index abrufen

Query Engine Abfrage-Engine

Abruf und LLM integrieren, um die endgültige Antwort zu erzeugen

Embeddings-Einbettungsmodelle

Text in Vektordarstellungen umwandeln

Speicherschicht

Speichert Daten wie Indizes, Dokumente und Vektoren

Callbacks-Callback-Mechanismus

Protokolle, Debugging, Ereignisbehandlung usw.

4. Datenladen (von Readers unterstützte Datenquellen)

Datei
PDFTXTDOCXPPTXCSVJSON
Webseite
WebsiteAPI-SchnittstelleRSSNotionGitHubYouTube
Datenbank
SQLMongoDBPostgreSQLMySQLElasticsearch
Sonstiges
SlackCloud-Speicher (S3, GCS)Benutzerdefinierte Datenquellen

5. Indexstruktur (Indexes)

Vector Index
Vektorindex

Basierend auf der Vektorsimilaritäts-Suche (am häufigsten)

Geeignet für:Allgemeine Fragen und Antworten, semantische Suche
Tree Index
Baumindex

Eine Hierarchie aufbauen, die sich für zusammenfassende Abfragen eignet

Geeignet für:Hierarchische Zusammenfassung ist erforderlich
List Index
Listenindex

Geordnete Liste, einfache und intuitive Struktur

Geeignet für:Einfacher sequentieller Zugriff
Keyword Index
Stichwortindex

Abruf basierend auf Schlüsselwortabgleich

Geeignet für:Exakte Schlüsselwortübereinstimmung
Graph Index
Graphindex

Beziehungsgraphen, komplexe Wissenssuche

Geeignet für:Graphbeziehungen erforderlich

6. Abruf und Abfragen (Retrieval)

Top-K-Abruf

Zu den K relevantesten Knoten zurückkehren

Suche nach Ähnlichkeitsschwellenwert

Knoten zurückgeben, deren Ähnlichkeit über dem Schwellenwert liegt

Hybride Suche (Hybrid)

Vektorsuche + Stichwortsuche

Neu-Ranking (Rerank)

Ein Re-Ranking-Modell verwenden, um die Ergebnisse zu optimieren

Kontextkomprimierung (Compression)

Den Kontext komprimieren und dabei die wichtigen Informationen beibehalten

7. Abfrage-Engine (Query Engine)

RetrieverQA

Grundlegende Q&A-Generierung

SubQuestion

Zerlegung in Teilprobleme

Router

Router mit mehreren Strategien

Chat

Dialogmodus, unterstützt mehrturnige Gespräche

Custom

Benutzerdefinierte Engine, flexibel erweiterbar

8. Kernfunktionen

  • Einheitliche Schnittstelle: unterstützt mehrere Datenquellen und LLMs
  • Modulares Design: zusammensetzbare Komponenten, die sich leicht erweitern lassen
  • Effiziente Indizierung: mehrere Indexstrukturen optimieren die Suchleistung
  • RAG-Optimierung: Retrieval-Augmented Generation, weniger Halluzinationen
  • Produktionsreif: unterstützt Parallelität, Batch-Verarbeitung, Caching usw.
  • Reiches Ökosystem: Integration mit gängigen Vektordatenbanken und Tools

9. Codebeispiele (Schnellstart)

from llama_index.core import SimpleDirectoryReader, VectorStoreIndex
from llama_index.core.query_engine import RetrieverQueryEngine

# 1. Daten laden
reader = SimpleDirectoryReader("./data")
documents = reader.load_data()

# 2. Index erstellen
index = VectorStoreIndex.from_documents(documents)

# 3. Abfrage-Engine erstellen
query_engine = index.as_query_engine(similarity_top_k=3)

# 4. Abfrage
response = query_engine.query("Was ist LlamaIndex?")
print(response)

10. Praxisbeispiele & Open-Source-Projekte