Skip to content
BotServBotServ
LlamaIndexRAGAgenten-FrameworkDaten-IndizesQuery-Engine

LlamaIndex: RAG-fokussiertes Agenten-Framework

LlamaIndex für KI-Agenten. RAG-Framework, Daten-Indizes, Query-Engines und Praxisbeispiele.

S

schutzgeist

4 min read
LlamaIndex: RAG-fokussiertes Agenten-Framework

LlamaIndex: RAG-fokussiertes Agenten-Framework

Was dieser Artikel über LlamaIndex behandelt

  • Was LlamaIndex ist und wie es funktioniert.
  • Wie Du Agenten mit LlamaIndex und RAG baust.
  • Daten-Indizes, Query-Engines und Tools für Agenten.
  • Praxisbeispiele für Dokumenten-Q&A und Wissensdatenbanken.
  • Best Practices für RAG-Qualität und Performance.

Einleitung: LlamaIndex verständlich erklärt

LlamaIndex ist ein Framework für RAG-basierte Agenten. Es verbindet LLMs mit Daten-Indizes (Vektordatenbanken), Query-Engines (Suche) und Tools (Aktionen). Für Agenten, die auf Dokumenten und Wissensdatenbanken zugreifen.

Dieser Artikel richtet sich an Entwickler, die RAG-Agenten mit LlamaIndex bauen wollen. Grundlagen findest Du in Lokales RAG und KI-Agenten-Frameworks.

Warum brauche ich LlamaIndex?

Stell Dir vor, Du baust einen Agenten, der Fragen zu Deinen Dokumenten beantwortet. LangChain ist generisch, LlamaIndex ist spezialisiert: Es bietet fertige Indizes, Query-Engines und Retrieval-Tools für RAG. Für dokumenten-basierte Agenten ist es die beste Wahl.

LlamaIndex kurz erklärt

LlamaIndex = RAG-fokussiertes Framework. Daten-Indizes für Dokumente, Query-Engines für Suche, Tools für Agenten. Für dokumenten-basierte Agenten und Wissensdatenbanken.

Der Kerngedanke lautet: RAG-first für dokumenten-basierte Agenten.

Für wen ist dieser Artikel gedacht?

  • RAG-Entwickler, die dokumenten-basierte Agenten bauen.
  • Wissensmanager, die Dokumenten-Q&A implementieren.
  • Entwickler, die LlamaIndex für Agenten nutzen.
  • Python-Entwickler, die RAG-Frameworks vergleichen.

Wichtige Begriffe

  • LlamaIndex - RAG-Framework. Wann nützlich: für RAG-Agenten.
  • RAG - Retrieval-Augmented Generation. Wann nützlich: das Konzept.
  • Vektordatenbank - Speicher. Wann nützlich: für Indizes.
  • Ollama - Lokaler Modellserver. Wann nützlich: für Modelle.
  • Query-Engine - Suchmaschine. Wann nützlich: für Retrieval.

Setup

pip install llama-index llama-index-llms-ollama llama-index-embeddings-ollama
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.llms.ollama import Ollama
from llama_index.embeddings.ollama import OllamaEmbedding

# LLM konfigurieren
llm = Ollama(model="llama3.1", base_url="http://ollama:11434")

# Embedding konfigurieren
embed_model = OllamaEmbedding(
    model_name="multilingual-e5",
    base_url="http://ollama:11434"
)

Praxisbeispiel 1: Dokumenten-Index

from llama_index.core import VectorStoreIndex, SimpleDirectoryReader

# Dokumente laden
documents = SimpleDirectoryReader("./dokumente").load_data()

# Index erstellen
index = VectorStoreIndex.from_documents(
    documents,
    embed_model=embed_model
)

# Query-Engine
query_engine = index.as_query_engine(llm=llm)

# Frage stellen
response = query_engine.query("Was steht im Vertrag über Kündigung?")
print(response)

Praxisbeispiel 2: Agent mit Tools

from llama_index.core.agent import ReActAgent
from llama_index.core.tools import FunctionTool

# Tool definieren
def multiply(a: int, b: int) -> int:
    """Multipliziere zwei Zahlen"""
    return a * b

def get_weather(location: str) -> str:
    """Wetter abrufen"""
    return f"Wetter in {location}: 22°C"

# Tools erstellen
tools = [
    FunctionTool.from_defaults(fn=multiply),
    FunctionTool.from_defaults(fn=get_weather)
]

# Agent erstellen
agent = ReActAgent.from_tools(
    tools,
    llm=llm,
    verbose=True
)

# Agent nutzen
response = agent.chat("Was ist 123 * 456?")
print(response)

Praxisbeispiel 3: RAG-Agent

from llama_index.core.agent import ReActAgent
from llama_index.core.tools import QueryEngineTool, ToolMetadata

# Query-Engine als Tool
query_tool = QueryEngineTool(
    query_engine=query_engine,
    metadata=ToolMetadata(
        name="document_search",
        description="Suche in Dokumenten"
    )
)

# Agent mit RAG-Tool
agent = ReActAgent.from_tools(
    [query_tool],
    llm=llm,
    verbose=True
)

# Agent nutzt RAG für Antworten
response = agent.chat("Was steht im Dokument über Datenschutz?")
print(response)

Praxisbeispiel 4: Multi-Index-Agent

# Mehrere Indizes für verschiedene Dokumente
index_contracts = VectorStoreIndex.from_documents(
    SimpleDirectoryReader("./vertraege").load_data(),
    embed_model=embed_model
)

index_invoices = VectorStoreIndex.from_documents(
    SimpleDirectoryReader("./rechnungen").load_data(),
    embed_model=embed_model
)

# Tools für jeden Index
contract_tool = QueryEngineTool(
    query_engine=index_contracts.as_query_engine(llm=llm),
    metadata=ToolMetadata(
        name="contract_search",
        description="Suche in Verträgen"
    )
)

invoice_tool = QueryEngineTool(
    query_engine=index_invoices.as_query_engine(llm=llm),
    metadata=ToolMetadata(
        name="invoice_search",
        description="Suche in Rechnungen"
    )
)

# Agent mit mehreren Tools
agent = ReActAgent.from_tools(
    [contract_tool, invoice_tool],
    llm=llm
)

LlamaIndex vs. LangChain

AspektLlamaIndexLangChain
FokusRAG, DokumenteAllgemein
IndizesJa, dediziertNein, manuell
Query-EngineJa, dediziertNein, manuell
AgentenJa, ReActJa, verschiedene
KomplexitätEinfacher für RAGKomplexer, flexibler
Best fürDokumenten-Q&AAllgemeine Agenten

Sicherheitshinweise

  • Datenquellen: Indizes können sensible Daten enthalten. Zugriffskontrolle.
  • Prompt Injection: Dokumente können Injections enthalten. Siehe Prompt Injection.
  • Audit: Alle Agenten-Aktionen loggen. Siehe Audit Logging.
  • Berechtigungen: Agent sollte nur nötige Indizes zugreifen können. Siehe Tool-Berechtigungen.

Typische Stolpersteine

  • Zu viele Dokumente: Große Indizes können langsam sein. Chunking und Filterung.
  • Schlechte Embeddings: Falsches Embedding-Modell = schlechte Suche. multilingual-e5 für Deutsch.
  • Keine Quellenangaben: Agent sollte Quellen angeben, nicht nur Antworten.
  • Halluzinationen: Ohne gutes Retrieval halluziniert das Modell. RAG-Qualität prüfen.
  • Zu viele Tools: Mehr als 5-7 Tools überfordern das Modell.

Key Takeaways:

  • LlamaIndex = RAG-fokussiertes Framework für dokumenten-basierte Agenten.
  • Daten-Indizes, Query-Engines und Tools für Agenten.
  • Für Dokumenten-Q&A, Wissensdatenbanken und RAG-Anwendungen.
  • Einfacher für RAG als LangChain, spezialisierter.
  • Für allgemeine Agenten: LangChain oder CrewAI.

FAQ

Was ist LlamaIndex?

Ein RAG-fokussiertes Framework für KI-Agenten: Daten-Indizes für Dokumente, Query-Engines für Suche, Tools für Agenten. Für dokumenten-basierte Agenten.

LlamaIndex oder LangChain?

LlamaIndex für RAG und Dokumenten-Q&A. LangChain für allgemeine Agenten und komplexe Workflows. Beide können kombiniert werden.

Was sind Daten-Indizes?

Strukturen für Dokumenten-Suche: VectorStoreIndex für semantische Suche, KeywordTableIndex für Keywords, etc. Sie ermöglichen RAG.

Was ist eine Query-Engine?

Die Suchmaschine für den Index: Sie findet relevante Dokumente, generiert Kontext und gibt Antworten mit Quellenangabe.

Welches Embedding-Modell?

multilingual-e5 oder bge-m3 für deutsche Dokumente. nomic-embed-text für Englisch. Für lange Dokumente: bge-m3 oder gte-Qwen2.

Sind meine Dokumente sicher?

Ja, wenn Du lokale Modelle und lokale Indizes nutzt. Alle Daten bleiben auf Deinem Server. Bei Cloud-APIs gehen Daten raus.

Was kostet LlamaIndex?

Kostenlos. LlamaIndex ist Open Source. Für lokale Modelle (Ollama): nur Hardware-Kosten. Für Cloud-APIs: API-Kosten.

Wie performant ist LlamaIndex?

Gut für mittlere Dokumentenmengen (tausende Dokumente). Für sehr große Mengen: Chunking-Strategie, Filterung und gute Embeddings wichtig.

Quellen und weiterführende Literatur

Zurück zum KI Blog
Share:

Ähnliche Beiträge