Skip to content

Block 05 – Embeddings & Vector Stores

Haufe AI Automation Kurs | Tag 2 - Block 1
Zeitbedarf: 3-4 Stunden | Schwierigkeitsgrad: Fortgeschritten
Thema: Dokumentenverarbeitung mit Embeddings und Vektordatenbanken


🎯 Lernziele

Nach diesem Block können Sie: - Texte in semantische Vektoren (Embeddings) umwandeln und verstehen - Vektordatenbanken wie Chroma und FAISS für Finanzdokumente einrichten - Verschiedene Retrieval-Methoden für intelligente Dokumentensuche implementieren
- Vollständige RAG-Pipeline für Finanzberichte und Risikodokumente aufbauen


📖 Theorie

Theorie ansehen

Verstehen Sie Embeddings, Vektorräume, semantische Ähnlichkeit und die komplette RAG-Pipeline-Architektur.


## 💻 Übung [Aufgabe öffnen](./exercise.md) Von RAG-Evolution-Demonstrator bis zur produktiven Streamlit-App für PDF-Zusammenfassungen. --- ## ✅ Lösung [Lösung anzeigen](./solution.md) Vollständige Implementierungen aller RAG-Komponenten und Retrieval-Strategien. --- -->

🧠 Embeddings & Semantische Suche

Was sind Embeddings?

Numerische Vektordarstellungen von Text, die semantische Bedeutung erfassen: - "Liquidität" und "Cashflow" → ähnliche Vektoren - Dimensionalität: 1536 (OpenAI ada-002) - Kosinus-Ähnlichkeit: Maß für semantische Nähe

Vektordatenbanken

Effiziente Speicherung und Suche: - Chroma: Open Source, einfach zu verwenden - FAISS: Meta's hochperformante Lösung - Ähnlichkeitssuche: k-nearest neighbors - Metadaten-Filterung: Erweiterte Suchoptionen


🗂️ Assets


🛠️ Hauptübungen

1. RAG-Pipeline Evolution

Ziel: Komplette RAG-Entwicklung verstehen
Schritte: Basic Processing → Chunking → Embeddings → Vectorstore → RAG
Output: Funktionale RAG-Pipeline mit Qualitätsvergleich

2. Embeddings für Finanztexte

Ziel: Semantische Ähnlichkeit bei Finanzterminologie
Tools: OpenAI Embeddings, Cosine Similarity
Output: Ähnlichkeitsanalyse für "EBITDA", "Cashflow", "Liquidität"

3. Produktive Vektordatenbank

Ziel: Chroma-DB für Finanzberichte aufbauen
Features: Similarity Search, MMR, Metadatenfilterung
Output: Skalierbare Dokumentensuchfunktion

4. PDF-Summarization App

Ziel: Benutzerfreundliche Streamlit-Anwendung
Features: Upload, Processing, Strukturierte Zusammenfassung
Output: Produktive App für Earnings Call Transcripts

5. Retrieval-Methoden Benchmark

Ziel: Verschiedene Strategien evaluieren
Vergleich: Vector-Retrieval vs. BM25 vs. Ensemble
Output: Qualitätsbewertung für verschiedene Abfragetypen


💡 Praktische Code-Beispiele

RAG-Pipeline Setup

from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.text_splitter import RecursiveCharacterTextSplitter

# 1. Dokumente laden und chunken
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000, chunk_overlap=200
)
chunks = text_splitter.split_documents(documents)

# 2. Embeddings erstellen
embeddings = OpenAIEmbeddings()

# 3. Vectorstore aufbauen
vectorstore = Chroma.from_documents(
    documents=chunks,
    embedding=embeddings,
    persist_directory="./chroma_db"
)

# 4. Retrieval konfigurieren
retriever = vectorstore.as_retriever(
    search_type="similarity_score_threshold",
    search_kwargs={"score_threshold": 0.7, "k": 5}
)

Streamlit App Integration

import streamlit as st

st.title("📄 PDF Zusammenfassung")
uploaded_file = st.file_uploader("PDF hochladen", type="pdf")

if uploaded_file:
    # PDF verarbeiten
    documents = load_pdf(uploaded_file)
    summary = create_summary(documents)
    st.write(summary)

⚙️ Setup-Anforderungen

Python-Pakete

pip install langchain>=0.1.0 langchain-openai>=0.1.0
pip install langchain-community>=0.0.20 chromadb>=0.4.0
pip install streamlit>=1.28.0 pypdf>=4.0.0

API-Keys erforderlich

# .env Datei
OPENAI_API_KEY=your_openai_api_key_here
LANGCHAIN_API_KEY=your_langchain_api_key_here
LANGCHAIN_TRACING_V2=true

Datensets

  • Beispiel-Finanzberichte für Übungen verfügbar
  • ESG-Dokumente für erweiterte Tests
  • Harrison Chase Kursmaterialien als Referenz

🔧 Troubleshooting

Häufige Probleme

  • API-Key Fehler: echo $OPENAI_API_KEY prüfen
  • Chroma DB Probleme: ./chroma_db/ Ordner löschen
  • Memory Issues: Kleinere chunk_size (500-800 Zeichen)
  • Embedding Dimensionen: Konsistenz bei Modellwechsel beachten

Performance-Tipps

  • Große PDFs: map_reduce statt stuff Chain verwenden
  • Persistierung: persist_directory für dauerhafte Speicherung
  • Batch Processing: Für große Dokumentenmengen

🔙 Zurück zur Startseite