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
| Aspekt | LlamaIndex | LangChain |
|---|---|---|
| Fokus | RAG, Dokumente | Allgemein |
| Indizes | Ja, dediziert | Nein, manuell |
| Query-Engine | Ja, dediziert | Nein, manuell |
| Agenten | Ja, ReAct | Ja, verschiedene |
| Komplexität | Einfacher für RAG | Komplexer, flexibler |
| Best für | Dokumenten-Q&A | Allgemeine 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.
Weiterführende Links
- LlamaIndex - GitHub.
- Lokales RAG - RAG-Grundlagen.
- KI-Agenten-Frameworks - Übersicht.
- LangChain - Alternative.
- Semantic Kernel - Alternative.
- Ollama - Modellserver.
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?
LlamaIndex oder LangChain?
Was sind Daten-Indizes?
Was ist eine Query-Engine?
Welches Embedding-Modell?
Sind meine Dokumente sicher?
Was kostet LlamaIndex?
Wie performant ist LlamaIndex?
Quellen und weiterführende Literatur
- LlamaIndex - GitHub.
- LlamaIndex Docs - Dokumentation.
- RAG Guide - RAG-Techniken.


