Notion mit ChatGPT verbinden: Ein RAG-Tutorial für Antworten aus deinen Notizen

Melden

Dieses Tutorial zeigt dir, wie du deine Notion-Datenbank mit ChatGPT verbindest, um ein RAG-System (Retrieval-Augmented Generation) aufzubauen. Damit kann ChatGPT direkt Fragen auf Basis deiner eigenen Notion-Notizen beantworten.

Wir betrachten zwei Wege:

  1. Der einfache Weg (No-Code): Über "Custom GPTs" (für ChatGPT Plus Nutzer).
  2. Der professionelle Weg (Code): Mit Python und LangChain (für eigene Apps).

Vorbereitung: Notion API Zugang einrichten

Egal welchen Weg du wählst, du musst Notion erlauben, Daten zu teilen.

  1. Gehe zu notion.so/my-integrations.
  2. Klicke auf "+ New integration".
  3. Gib ihr einen Namen (z.B. "ChatGPT Connector") und wähle den Workspace aus.
  4. Speichere den Internal Integration Token (du wirst ihn später brauchen).
  5. Wichtig: Gehe in Notion zu der Datenbank/Seite, die du verbinden willst. Klicke oben rechts auf die drei Punkte ... -> Connections -> Connect to -> Wähle deine neue Integration aus.

Methode 1: Der No-Code Weg (Custom GPTs)

Dies ist die schnellste Methode, wenn du ChatGPT Plus nutzt.

  1. Export: Da Custom GPTs (noch) keinen direkten Live-Sync für Notion-Datenbanken per Klick haben, exportiere deine Notion-Datenbank als Markdown & CSV.
  2. GPT erstellen: Gehe in ChatGPT auf "Explore GPTs" -> "Create".
  3. Knowledge: Lade die exportierten Dateien unter dem Reiter "Configure" im Bereich "Knowledge" hoch.
  4. Anweisung: Schreibe in die Instructions: "Nutze die hochgeladenen Notion-Dateien als primäre Quelle, um Fragen zu beantworten (RAG)."

Hinweis: Für einen automatischen Sync bräuchtest du ein Tool wie Zapier oder Make.com, das neue Notion-Einträge via API an einen Vector Store sendet.


Methode 2: Der Entwickler-Weg (Python + LangChain)

Dies ist ein echtes RAG-System. Wir laden Daten aus Notion, wandeln sie in Vektoren um und speichern sie in einer Datenbank.

1. Voraussetzungen

Installiere die benötigten Bibliotheken:

pip install langchain openai chromadb notion-client tiktoken

2. Der RAG-Code (Minimalbeispiel)

import os
from langchain_community.document_loaders import NotionDBLoader
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import Chroma
from langchain.chains import RetrievalQA

# API Keys setzen
os.environ["NOTION_TOKEN"] = "DEIN_NOTION_TOKEN"
os.environ["OPENAI_API_KEY"] = "DEIN_OPENAI_KEY"
DATABASE_ID = "DEINE_DATABASE_ID" # Findest du in der Notion-URL

# 1. Daten aus Notion laden
loader = NotionDBLoader(
    integration_token=os.environ["NOTION_TOKEN"],
    database_id=DATABASE_ID,
    request_timeout_sec=30
)
docs = loader.load()

# 2. Text in kleine Stücke (Chunks) teilen
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
splits = text_splitter.split_documents(docs)

# 3. Embeddings erstellen und in Vector Store (Chroma) speichern
vectorstore = Chroma.from_documents(documents=splits, embedding=OpenAIEmbeddings())

# 4. RAG-Chain erstellen
rag_chain = RetrievalQA.from_chain_type(
    llm=ChatOpenAI(model_name="gpt-4-turbo"),
    chain_type="stuff",
    retriever=vectorstore.as_retriever()
)

# 5. Abfrage stellen
query = "Was sind die wichtigsten Aufgaben in meiner Notion-Liste?"
response = rag_chain.invoke(query)
print(response["result"])

Wie funktioniert das technisch? (Der RAG-Prozess)

  1. Loading: Der NotionDBLoader greift über die API auf deine Seiten zu und zieht den Textinhalt.
  2. Splitting: Da LLMs ein Limit für die Eingabelänge haben, wird der Text in verdaubare Häppchen geschnitten.
  3. Embedding: Jedes Textstück wird durch ein KI-Modell (OpenAIEmbeddings) in eine lange Liste von Zahlen (Vektoren) umgewandelt. Diese Zahlen repräsentieren die Bedeutung des Textes.
  4. Vector Store: Diese Vektoren werden in einer Datenbank (hier ChromaDB) gespeichert.
  5. Retrieval: Wenn du eine Frage stellst, wird diese ebenfalls in einen Vektor umgewandelt. Das System sucht dann in der Datenbank nach den Textstücken, deren Vektoren der Frage am ähnlichsten sind.
  6. Generation: Nur diese relevanten Stücke werden zusammen mit deiner Frage an ChatGPT gesendet ("Hier ist das Wissen, beantworte damit die Frage").

Profi-Tipps für bessere Ergebnisse:

  • Datenqualität: Notion-Datenbanken sind oft unordentlich. Bereinige deine Daten, bevor du sie verbindest. Lösche leere Seiten.
  • Sync-Intervall: Wenn du Methode 2 nutzt, solltest du ein Skript schreiben, das einmal pro Stunde/Tag den Vector Store aktualisiert.
  • Metadaten: Achte darauf, dass Properties aus Notion (Datum, Tags, Status) mit in den Textsplitter übernommen werden, damit die KI Kontext hat (z. B. "Welche Aufgaben sind dringend?").

Tools, die das für dich übernehmen (SaaS):

Wenn du nicht selbst programmieren willst, schaue dir diese Tools an:

  • Chatbase / Mendable: Erlauben direkten Notion-Import für Chatbots.
  • Carbon.ai: Eine API, die spezialisiert darauf ist, Notion-Daten für RAG aufzubereiten.
  • Zapier Central: Erlaubt es, KI-Agenten zu bauen, die direkt auf Notion-Live-Daten zugreifen können.
0