Worum es geht
Eine RAG-Pipeline ist nur so gut wie ihre Datenbasis. Wenn neue Dokumente in deinem Google Drive landen – aktualisierte Preislisten, neue Support-Artikel, überarbeitete Handbücher – muss die Vektordatenbank das wissen.
Playbook
5. April 2026
Leseführung
Eine RAG-Pipeline ist nur so gut wie ihre Datenbasis. Wenn neue Dokumente in deinem Google Drive landen – aktualisierte Preislisten, neue Support-Artikel, überarbeitete Handbücher – muss die Vektordatenbank das wissen.
1Lies zuerst die Einordnung links. Sie erklärt dir, warum der Beitrag überhaupt relevant ist.
2Danach einmal komplett lesen. Der Beitrag ist kurz genug für einen sauberen Durchgang.
3Wenn du tiefer gehen willst, erst am Ende in die Quellen springen.
• Das Problem: Veraltete Vektordatenbanken
• Architektur des automatischen Syncs
• n8n-Workflow: Schritt für Schritt
• Trigger konfigurieren
Eine RAG-Pipeline ist nur so gut wie ihre Datenbasis. Wenn neue Dokumente in deinem Google Drive landen – aktualisierte Preislisten, neue Support-Artikel, überarbeitete Handbücher – muss die Vektordatenbank das wissen. Manuelle Neu-Indexierung kostet Zeit und wird vergessen. Die Lösung: ein automatischer Sync-Workflow, der neue und geänderte Dateien erkennt und die Datenbank inkrementell aktualisiert.
Stell dir vor, dein Support-Chatbot beantwortet Fragen auf Basis von Dokumenten, die drei Monate alt sind. Neue Produkte, geänderte Preise, behobene Bugs – alles unbekannt. Das Vertrauen in den Bot sinkt. Die Lösung ist kein einmaliges Import-Skript, sondern ein kontinuierlicher Sync-Prozess.
Drei Szenarien, die der Workflow abdecken muss:
Google Drive
↓ (Trigger: neue/geänderte Datei)
n8n Workflow
├── Datei herunterladen
├── Text extrahieren (PDF/DOCX/GoogleDoc)
├── Alte Chunks in Vektordatenbank löschen (nach file_id)
├── Text in Chunks aufteilen
├── Embeddings generieren
└── Neue Chunks speichern (mit Metadaten)
Das Herzstück ist die file_id als eindeutiger Bezeichner. Jede Datei in Google Drive hat eine unveränderliche ID – selbst wenn sie umbenannt oder verschoben wird. Diese ID wird als Metadatum in der Vektordatenbank gespeichert, sodass beim Update alle alten Chunks zuverlässig gefunden und ersetzt werden können.
Der Google Drive Trigger in n8n reagiert auf fileCreated und fileUpdated Events. Du wählst den zu überwachenden Ordner und legst das Poll-Intervall fest (z. B. alle 5 Minuten oder per Webhook bei Drive-Enterprise).
{
"trigger": "Google Drive",
"event": ["fileCreated", "fileUpdated"],
"folder": "Wissensdatenbank",
"pollInterval": "*/5 * * * *"
}
n8n lädt die Datei herunter und leitet sie durch den passenden Extractor. Der Binary-to-Text-Node unterstützt PDF, DOCX und plain text. Für Google Docs nutzt du die Drive API direkt mit exportMimeType: text/plain.
Bevor neue Chunks gespeichert werden, müssen die alten raus. In Qdrant funktioniert das über einen Filter auf das Metadatum file_id:
from qdrant_client import QdrantClient
from qdrant_client.models import Filter, FieldCondition, MatchValue
client = QdrantClient(host="localhost", port=6333)
# Alle Chunks dieser Datei löschen
client.delete(
collection_name="wissensdatenbank",
points_selector=Filter(
must=[
FieldCondition(
key="file_id",
match=MatchValue(value="1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms")
)
]
)
)
Jeder Chunk bekommt beim Speichern Metadaten mitgegeben – das macht spätere Updates und Filterungen möglich:
vectorstore.add_documents(
documents=chunks,
metadatas=[
{
"file_id": file_id,
"file_name": file_name,
"last_modified": modified_time,
"mime_type": mime_type
}
for _ in chunks
]
)
n8n unterstützt out of the box:
| Format | Extraktionsmethode |
|---|---|
| Google Docs | Drive API Export (text/plain) |
| Binary-to-Text Node | |
| DOCX | Binary-to-Text Node |
| Google Sheets | Sheets API → Zeilen als Chunks |
| Bilder | Vision-API (optional, teuer) |
Für Google Sheets empfiehlt sich eine andere Chunking-Strategie: Jede Zeile (mit Header als Kontext) wird ein eigener Chunk. Das macht Tabelleninhalte semantisch durchsuchbar.
Um unnötige API-Calls und Embedding-Kosten zu vermeiden, vergleichst du den modifiedTime-Timestamp aus Google Drive mit dem gespeicherten Wert in deiner Datenbank:
# In einer separaten Tracking-Tabelle
last_known = db.get("file_sync_status", file_id)
if file.modified_time <= last_known.modified_time:
print(f"Übersprungen: {file.name} – keine Änderung")
continue
Bei 1.000 Dateien spart das 90%+ der API-Kosten, wenn sich täglich nur wenige Dateien ändern.
Du musst nicht bei null anfangen. Das n8n-Template "Google Drive to Supabase contextual vector database sync" (Workflow #8200) und "Automate document ingestion & RAG system with Google Drive, Sheets & OpenAI" (#8312) sind direkt einsatzbereit. Du konfigurierst OAuth für Google Drive, trägst deinen API-Key für die Vektordatenbank ein – fertig.
Ein automatischer Google Drive Sync hält deine RAG-Wissensbasis immer aktuell: Der n8n-Trigger erkennt neue und geänderte Dateien, der Workflow löscht veraltete Chunks (via file_id), generiert frische Embeddings und schreibt sie zurück in die Vektordatenbank. Der Timestamp-Vergleich verhindert unnötige Re-Indexierungen. Das Ergebnis: Ein Chatbot, der immer auf dem neuesten Stand ist – ohne manuelle Eingriffe.
Quellen:
Nachvollziehbarkeit
Sauberer Abschluss
Wenn du die Kernidee verstanden hast und einen nächsten Schritt für dich benennen kannst, ist der Beitrag für heute erfüllt. Du musst hier nicht alles in einem Zug durcharbeiten.
War dieser Inhalt hilfreich?