Skip to content

About

Lokales RAG-System mit Ollama, pgvector (PostgreSQL) und Semantic Caching zur Dokumentenbeantwortung.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

RAG System mit Ollama und PostgreSQL

Ein einfaches RAG System, das Web-Dokumente lädt, in einer DB (mit pgvector) speichert und Fragen mit Hilfe eines lokalen LLM beantwortet.

Voraussetzungen

  • Python 3.12 (hab ich jetzt genommen, man es geht aber auch 3.10 +)
  • Docker und Docker Compose installiert (PostgreSQL)
  • Ollama installiert und gestartet
  • Ein Ollama Modell installiert (z.B. smollm2:latest)

Installation

  1. PostgreSQL mit Docker starten:
docker-compose up -d

PostgreSQL mit pgvector Extension in einem Docker Container.

  1. Dependencies installieren:
uv sync
  1. Umgebungsvariablen konfigurieren:
cp env.example .env

Die .env Datei enthält bereits die korrekten Einstellungen für den Docker Container (Port 5436).

  1. Verbindung testen (optional):
uv run test_connection.py

Prüft, ob die PostgreSQL Verbindung funktioniert.

  1. Ollama Modell installieren (falls noch nicht vorhanden):
ollama pull smollm2:latest

Verwendung

Das Skript lädt Dokumente von Web-URLs, erstellt Embeddings und speichert sie in einer PostgreSQL Datenbank mit pgvector. Anschließend können Fragen zu den Dokumenten gestellt werden.

  1. Stelle sicher, dass PostgreSQL läuft:
docker-compose up -d
  1. Programm ausführen:
uv run llm.py
  1. PostgreSQL Container stoppen (optional):
docker-compose down
  1. PostgreSQL Container und Daten löschen (optional):
docker-compose down -v

Was das System macht

  1. Lädt Dokumente von konfigurierten URLs
  2. Teilt die Dokumente in Chunks auf
  3. Erstellt Embeddings mit HuggingFace
  4. Speichert die Embeddings in einer PostgreSQL Vektordatenbank (pgvector)
  5. Beantwortet Fragen basierend auf den gespeicherten Dokumenten
  6. Nutzt Semantic Caching für schnellere Antworten bei ähnlichen Fragen

Konfiguration

Alle Konfigurationen können in der .env Datei angepasst werden:

  • SOURCES_FILE: Datei mit den Quellen-URLs (Standard: sources.json)
  • POSTGRES_CONNECTION_STRING: PostgreSQL Verbindungsstring
  • OLLAMA_MODEL: Zu verwendendes Ollama Modell
  • EMBEDDING_MODEL: Embedding Modell für Vektoren
  • CHUNK_SIZE / CHUNK_OVERLAP: Text-Splitting Parameter
  • RETRIEVER_K: Anzahl der abgerufenen Dokumente
  • USE_CACHE: Semantic Caching aktivieren/deaktivieren
  • CACHE_SIMILARITY_THRESHOLD: Ähnlichkeitsschwelle für Cache Hits

Die Vektordatenbank wird in PostgreSQL (Docker Container) gespeichert. Die Daten bleiben erhalten, solange der Container läuft. Mit docker-compose down -v werden die Daten gelöscht.

About

Lokales RAG-System mit Ollama, pgvector (PostgreSQL) und Semantic Caching zur Dokumentenbeantwortung.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages