Tag 1 Block 4: Einführung in Retrieval Augmented Generation (RAG)¶
Überblick¶
In diesem Block lernen wir die Grundlagen von Retrieval Augmented Generation (RAG) kennen - eine leistungsstarke Methode, um Large Language Models (LLMs) mit externen Daten anzureichern.
Lernziele¶
- Verstehen, was RAG ist und warum es für Finance, Risk und Controlling relevant ist
- Kennenlernen der grundlegenden Komponenten einer RAG-Pipeline
- Erlernen des Ladens verschiedener Dokumenttypen mit LangChain
- Durchführen erster praktischer Übungen mit Finanzdokumenten
Was ist Retrieval Augmented Generation (RAG)?¶
RAG kombiniert zwei Schlüsselkonzepte: 1. Retrieval: Das Abrufen relevanter Informationen aus einer Datenbasis 2. Generation: Die Erstellung von Antworten durch ein LLM basierend auf diesen Informationen
Warum RAG für Finance, Risk und Controlling?¶
- Aktualität: LLMs haben nur Wissen bis zu ihrem Trainingszeitpunkt
- Genauigkeit: Reduziert Halluzinationen durch Faktenverankerung
- Compliance: Nachvollziehbarkeit der Antworten durch Quellenangaben
- Vertraulichkeit: Interne Daten bleiben im Unternehmen
Anwendungsfälle in Finance, Risk und Controlling¶
- Automatisierte Beantwortung von Finanzfragen basierend auf Quartalsberichten
- Risikoanalyse durch Auswertung interner Dokumente
- Compliance-Prüfung durch Abgleich mit Regularien
- Controlling-Assistenten für schnellen Zugriff auf Kennzahlen
Grundlegende Komponenten einer RAG-Pipeline¶
- Dokumentenladung: Einlesen verschiedener Dokumenttypen
- Dokumentenaufteilung: Zerlegung in handhabbare Chunks
- Vektorisierung: Umwandlung von Text in numerische Repräsentationen
- Speicherung: Ablage in einer Vektordatenbank
- Retrieval: Abrufen relevanter Dokumente
- Generation: Erstellung von Antworten durch ein LLM
LangChain als Framework¶
LangChain ist ein Python-Framework, das: - Die Erstellung von LLM-Anwendungen vereinfacht - Modulare Komponenten für jeden Schritt der RAG-Pipeline bietet - Eine große Community und viele Integrationen hat
from langchain.document_loaders import TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
Dokumentenladung mit LangChain¶
LangChain bietet über 80 verschiedene Loader für: - Textdateien (.txt, .md) - Office-Dokumente (.docx, .pptx, .xlsx) - PDFs - E-Mails - Webseiten - Datenbanken - APIs
Beispiel: Laden eines PDF-Dokuments¶
from langchain.document_loaders import PyPDFLoader
# Laden eines Jahresberichts
loader = PyPDFLoader("jahresbericht_2023.pdf")
documents = loader.load()
print(f"Anzahl der geladenen Seiten: {len(documents)}")
print(f"Erste Seite: {documents[0].page_content[:100]}...")
Beispiel: Laden einer Excel-Datei¶
from langchain.document_loaders import UnstructuredExcelLoader
# Laden einer Finanztabelle
loader = UnstructuredExcelLoader("finanzkennzahlen.xlsx")
documents = loader.load()
print(f"Anzahl der extrahierten Elemente: {len(documents)}")
Beispiel: Laden von Webinhalten¶
from langchain.document_loaders import WebBaseLoader
# Laden von Finanzinformationen aus dem Web
loader = WebBaseLoader("https://www.bundesbank.de/de/statistiken")
documents = loader.load()
print(f"Geladene Inhalte: {len(documents)}")
Metadaten verstehen und nutzen¶
Jedes Dokument in LangChain hat: - page_content: Den eigentlichen Textinhalt - metadata: Zusätzliche Informationen wie Quelle, Seitenzahl, etc.
# Beispiel für Metadaten
print(documents[0].metadata)
# Ausgabe: {'source': 'jahresbericht_2023.pdf', 'page': 0}
Herausforderungen beim Dokumentenladen¶
- Formatvielfalt: Unterschiedliche Dokumenttypen erfordern verschiedene Loader
- Strukturierte vs. unstrukturierte Daten: Tabellen vs. Fließtext
- Qualität der Extraktion: Besonders bei PDFs mit komplexem Layout
- Große Dateien: Speicher- und Performanceprobleme
Übungsaufgaben¶
- Laden Sie einen Jahresbericht als PDF
- Extrahieren Sie Daten aus einer Excel-Tabelle mit Finanzkennzahlen
- Laden Sie Informationen von einer Finanz-Website
Ausblick auf den nächsten Block¶
Im nächsten Block werden wir uns mit der Aufteilung von Dokumenten und der Erstellung von Vektordatenbanken beschäftigen - wichtige Schritte, um große Dokumentmengen effizient durchsuchbar zu machen.