Zurück zum Blog

Ihren eigenen KI-Assistenten ohne Enterprise-Kosten zu Ihrer Website hinzufügen

2025-12-0710 min read

Benutzerdefinierte RAG-Lösungen wie KI-Chatbots müssen nicht teuer sein. Sie können sie kostenlos mit Cloudflares großzügiger kostenloser Stufe betreiben.

Enterprise-Plattformen wie AWS Kendra oder Azure AI Search können Tausende pro Monat kosten, während Optionen wie Pinecones Starter-Stufe oder selbst gehostete Lösungen mit pgvector budgetfreundlichere Alternativen bieten. Nachdem ich an mehreren RAG-Projekten beteiligt war, habe ich festgestellt, dass Cloudflare AI Search je nach Ihren Anforderungen eine gute Option sein kann. Es passt nicht zu jedem Anwendungsfall, aber für viele Szenarien übernimmt es den Großteil der anspruchsvollen Arbeit.

Dieser Beitrag beschreibt, wie ich einen Chatbot für diese Website mithilfe von Cloudflare AI Search erstellt habe. Ich werde behandeln, was RAG ist, wie AI Search die Pipeline vereinfacht, Implementierungsdetails (Streaming, Speicherung, Ratenbegrenzung), tatsächliche Kosten und wie dies auf Geschäftsanwendungsfälle skaliert.

Obwohl dies eine persönliche Website ist (mein digitales Gartenhaus), gilt dieselbe Architektur, egal ob Sie eine persönliche Website oder Unternehmensdokumentation indizieren.

Was ist RAG?

RAG (Retrieval-Augmented Generation) ist ein Muster, das LLM-Antworten auf Ihre tatsächlichen Daten stützt. Anstatt sich nur auf die Trainingsdaten des Modells zu verlassen, ruft RAG relevante Inhalte aus Ihren Dokumenten ab und fügt sie dem Prompt hinzu.

RAG-Übersichtsdia­gramm

Der Prozess umfasst zwei Phasen:

  1. Indizierung (einmalig): Ihre Dokumente werden in Chunks aufgeteilt, in Vektor-Embeddings umgewandelt und in einer Vektordatenbank gespeichert
  2. Abfrage (pro Anfrage): Die Frage des Benutzers wird eingebettet, ähnliche Chunks werden über semantische Suche abgerufen, und das LLM generiert eine Antwort mithilfe dieser Chunks als Kontext

Dieser Ansatz reduziert Halluzinationen, da das Modell auf der Grundlage Ihrer Inhalte und nicht nur seines Allgemeinwissens antwortet. Es bedeutet auch, dass Sie kein Modell neu abstimmen müssen, jedes Mal, wenn sich Ihre Inhalte ändern.

Was Cloudflare AI Search tatsächlich leistet

Bevor wir uns mit der Implementierung befassen, ist es hilfreich zu verstehen, was AI Search (früher AutoRAG genannt) standardmäßig bietet:

  • Automatische Indizierung: Verweisen Sie auf Ihre Website oder Datenquelle, und es durchsucht und indiziert Ihre Inhalte automatisch
  • Vektor-Embeddings: Es generiert und verwaltet die Embeddings für die semantische Suche
  • RAG-Pipeline: Es ruft relevante Inhalte ab und generiert Antworten mithilfe dieses Kontexts
  • Kontinuierliche Updates: Wenn sich Ihre Inhalte ändern, wird der Index automatisch aktualisiert

Das bedeutet, dass Sie die Logik für Chunking, Embedding, Vektorspeicherung oder Abruf nicht selbst erstellen müssen. AI Search kümmert sich um all das.

Architekturübersicht

Hier ist, was ich tatsächlich gebaut habe:

RAG-Chatbot-Architektur­diagramm

Die Komponenten sind:

  • Cloudflare AI Search: Indiziert diese Website und verwaltet die RAG-Pipeline
  • Cloudflare Worker: Verarbeitet Anfragen, Validierung und Streaming von Antworten
  • Cloudflare D1: Speichert den Konversationsverlauf für Analysen
  • Cloudflare KV: Verwaltet Sitzungen und Ratenbegrenzung

Die Kernimplementierung

Der eigentliche AI Search-Aufruf ist unkompliziert. Hier ist der wichtigste Teil:

// Holen Sie sich die AI-Bindung aus dem Cloudflare-Kontext
const ai = await getCloudflareAI();

// Rufen Sie AI Search auf
const aiSearch = ai.autorag('your-ai-search-instance');
const response = await aiSearch.aiSearch({
query: message,
system_prompt: systemPrompt,
max_num_results: 5,
stream: true
});

Das war's für den RAG-Teil. AI Search nimmt die Abfrage des Benutzers, durchsucht meinen indizierten Website-Inhalt, ruft relevante Chunks ab und generiert eine Antwort mithilfe dieses Kontexts.

Einrichten von AI Search

Um AI Search zu verwenden, müssen Sie:

  1. Eine AI Search-Instanz im Cloudflare-Dashboard erstellen
  2. Ihre Datenquelle verbinden (in meinem Fall diese Website)
  3. Warten, bis die anfängliche Indizierung abgeschlossen ist
  4. Die AI-Bindung zu Ihrer wrangler.toml hinzufügen
# wrangler.toml
[ai]
binding = "AI"

Nach der Konfiguration überwacht AI Search kontinuierlich Ihre Datenquelle und aktualisiert den Index, wenn sich Inhalte ändern.

Der System-Prompt

Der System-Prompt definiert, wie sich die KI verhalten soll. Hier gestalten Sie die Persönlichkeit und die Grenzen des Chatbots:

function getSystemPrompt(locale: string): string {
return `Sie sind ein hilfreicher KI-Assistent auf der Portfolio-Website von David Loor.

## KRITISCHE REGELN:

1. ANTWORTEN SIE IMMER in ${languageNames[locale]}
2. BEANTWORTEN SIE NUR Fragen zu David Loor – Sie sind KEIN allgemeiner Assistent
3. Verwenden Sie den bereitgestellten Kontext über David – erfinden Sie keine Informationen

## Ihr Verhalten:

- Seien Sie hilfsbereit und professionell
- Halten Sie Antworten prägnant (maximal 2-3 Absätze)
- Erwähnen Sie, wenn es angebracht ist, dass man einen Anruf buchen oder eine E-Mail senden kann
- Sprechen Sie nicht über Preise – schlagen Sie vor, dies direkt zu besprechen
- Geben Sie nicht vor, David zu sein – Sie sind sein KI-Assistent`;
}

Der Abschnitt mit den kritischen Regeln ist wichtig. Ohne explizite Grenzen würde der Chatbot versuchen, allgemeine Wissensfragen zu beantworten, was ich für einen Portfolio-Assistenten nicht möchte.

Streaming von Antworten

Niemand möchte auf eine vollständige Antwort warten, bevor er etwas sieht. AI Search unterstützt Streaming standardmäßig mit stream: true. Sie können die Antwort direkt über Server-Sent Events (SSE) an den Client weiterleiten und den Benutzern so den vertrauten ChatGPT-ähnlichen Tippeffekt bieten.

Speichern von Konversationen mit D1

Wenn Sie Konversationen analysieren oder Ihren Chatbot im Laufe der Zeit verbessern möchten, können Sie diese in Cloudflare D1 (ihrem serverlosen SQLite) speichern. Führen Sie die Datenbankschreibvorgänge einfach im Hintergrund aus, damit sie das Streaming der Antwort nicht blockieren.

Ratenbegrenzung mit KV

Öffentliche APIs müssen geschützt werden. Ich verwende Cloudflare KV für eine einfache Ratenbegrenzung:

const RATE_LIMIT_WINDOW_MS = 60000; // 1 Minute
const RATE_LIMIT_MAX_REQUESTS = 15; // 15 Nachrichten pro Minute

async function checkRateLimit(kv: KVNamespace, sessionId: string): Promise<boolean> {
const key = `ratelimit_${sessionId}`;
const data = await kv.get<{ count: number; windowStart: number }>(key, 'json');

const now = Date.now();
if (!data || now - data.windowStart >= RATE_LIMIT_WINDOW_MS) {
// Neues Fenster
await kv.put(key, JSON.stringify({ count: 1, windowStart: now }), { expirationTtl: 120 });
return true;
}

if (data.count >= RATE_LIMIT_MAX_REQUESTS) {
return false; // Rate limitiert
}

await kv.put(key, JSON.stringify({ count: data.count + 1, windowStart: data.windowStart }), { expirationTtl: 120 });
return true;
}

Lokale Entwicklung

Für die lokale Entwicklung verwende ich npx wrangler dev, das den Worker lokal ausführt und sich gleichzeitig mit meinen produktiven Cloudflare-Diensten (AI Search, D1, KV) verbindet. Dies bietet mir eine produktionsähnliche Umgebung ohne Bereitstellung:

npx wrangler dev

Der Worker-Code läuft auf meinem Rechner, aber die Bindungen verbinden sich mit den tatsächlichen Remote-Diensten. Das bedeutet, dass die lokale Entwicklung Ihr Neuron-Kontingent nutzt, aber es ist der genaueste Weg zum Testen vor der Bereitstellung.

Was mich das gekostet hat

Hier sind die guten Nachrichten: Sie können diesen gesamten Stack auf der kostenlosen Stufe von Cloudflare betreiben. Kein kostenpflichtiger Plan erforderlich.

DienstLimits der kostenlosen Stufe
AI SearchAuf allen Plänen verfügbar (einschließlich kostenlos)
Workers AI10.000 Neuronen/Tag
D15 Mio. Lesevorgänge/Tag, 100.000 Schreibvorgänge/Tag, 5 GB Speicher
KV100.000 Lesevorgänge/Tag, 1.000 Schreibvorgänge/Tag, 1 GB Speicher
Workers100.000 Anfragen/Tag

Das Hauptlimit, das Sie erreichen werden, sind die Workers AI Neuronen. Rechnen wir es durch.

Workers AI (die Hauptkosten)

Sie erhalten kostenlos 10.000 Neuronen pro Tag (etwa 300.000/Monat). Eine typische Chat-Interaktion mit AI Search verbraucht je nach Länge der Antwort etwa 500–1.000 Neuronen. Das bedeutet:

  • ~300–600 Chat-Nachrichten pro Tag, bevor die kostenlose Stufe überschritten wird
  • ~9.000–18.000 Nachrichten pro Monat inklusive

Für die meisten persönlichen Websites und kleinen Unternehmen ist das mehr als genug, um völlig kostenlos zu laufen. Darüber hinaus zahlen Sie 0,011 $ pro 1.000 Neuronen. Ein geschäftiger Chatbot, der 1.000 Nachrichten/Tag verarbeitet, würde ungefähr 5–10 $/Monat zusätzlich kosten.

Andere Dienste (großzügige Limits)

Die anderen Limits der kostenlosen Stufe sind großzügig:

  • Worker-Anfragen: 100.000/Tag. Das sind ~100.000 Chat-Nachrichten täglich, bevor Limits erreicht werden.
  • D1-Lesevorgänge: 5 Mio./Tag. Jeder Chat verbraucht einige Lesevorgänge, also Tausende von Chats täglich.
  • D1-Schreibvorgänge: 100.000/Tag. Jede Nachricht speichert 2 Zeilen, also ~50.000 Nachrichten/Tag.
  • KV-Lesevorgänge: 100.000/Tag. Die Ratenbegrenzung verbraucht ~2 Lesevorgänge pro Nachricht.

Für die meisten Websites sind die Workers AI Neuronen das einzige Limit, das Sie realistisch erreichen werden. Die anderen Dienste haben tägliche Limits, die zurückgesetzt werden, was Ihnen viel Spielraum gibt.

Was ich nicht gebaut habe

Es ist erwähnenswert, was AI Search für mich übernommen hat:

  • Dokumenten-Chunking: Ich habe keine Chunking-Logik geschrieben
  • Embedding-Generierung: AI Search generiert und verwaltet Embeddings
  • Vektorspeicherung: Kein separater Vectorize-Setup erforderlich
  • Abruf-Logik: AI Search übernimmt die semantische Suche
  • Index-Updates: Inhaltsänderungen werden automatisch übernommen

Hätte ich dies von Grund auf mit separaten Embeddings, Vektordatenbank und Abruf-Pipeline erstellt, wäre es erheblich mehr Arbeit gewesen. AI Search abstrahiert all das.

Skalierung auf Geschäftsanwendungsfälle

Obwohl ich dies für meine persönliche Website erstellt habe, gilt dasselbe Muster für Geschäftsszenarien. AI Search unterstützt neben Websites auch andere Datenquellen:

Kundensupport

Verweisen Sie AI Search auf Ihre Dokumentationswebsite, Ihr Hilfezentrum oder Ihre Wissensdatenbank. Der Chatbot kann Produktfragen, Fehlerbehebungsanfragen und Richtlinienfragen beantworten, ohne ein benutzerdefiniertes Modell trainieren zu müssen. Fügen Sie Logik hinzu, um bei Bedarf an menschliche Agenten zu eskalieren.

Interner Wissensassistent

Indizieren Sie Ihr Unternehmenswiki, Confluence oder Ihre internen Dokumentationen. Mitarbeiter können Fragen in natürlicher Sprache stellen, anstatt Ordner zu durchsuchen. Der System-Prompt definiert Zugriffsgrenzen und Antwortstil.

E-Commerce-Produktberater

Indizieren Sie Ihre Produktkatalogseiten. Kunden können fragen: „Welcher Laptop eignet sich gut für Videoschnitt unter 1000 $“ und Antworten erhalten, die auf Ihrem tatsächlichen Bestand basieren. Leiten Sie kaufbereite Kunden zur Kasse weiter.

Was sich bei Skalierung ändert

Die Kernarchitektur bleibt gleich. Was sich ändert:

  • Datenquelle: Anstatt einer persönlichen Website verbinden Sie Ihre Geschäftsinhalte
  • System-Prompt: Zugeschnitten auf Ihre Markenstimme und Ihren Anwendungsfall
  • Geschäftslogik: Benutzerdefinierte Weiterleitung basierend auf den Bedürfnissen des Benutzers
  • Ratenlimits: Angepasst an den erwarteten Traffic
  • Authentifizierung: Fügen Sie eine Benutzerauthentifizierung hinzu, wenn Sie private Inhalte indizieren

AI Search übernimmt die RAG-Komplexität, unabhängig davon, ob Sie 50 Seiten oder 50.000 indizieren.

Modellflexibilität

AI Search ist nicht an ein einzelnes Modell gebunden. Sie haben Optionen:

Generierungsmodelle: AI Search unterstützt Modelle verschiedener Anbieter, darunter Anthropic (Claude 3.5, Claude 4), Google (Gemini 2.5 Flash/Pro), OpenAI (GPT-4o, GPT-5) sowie Cerebras, Grok, Groq und Workers AI. Sie können eine intelligente Standardeinstellung auswählen, die Cloudflare automatisch aktualisiert, oder ein bestimmtes Modell auswählen. Generierungsmodelle können sogar pro Anfrage über die API überschrieben werden.

Embedding-Modelle: Zu den Optionen gehören OpenAIs text-embedding-3-Modelle, Googles Gemini Embedding und Workers AIs BGE-Modelle. Das Embedding-Modell wird bei der Ersteinrichtung festgelegt und kann später nicht mehr geändert werden (es würde eine Neuindizierung von allem erfordern).

Eigenes Modell mitbringen: Wenn die unterstützten Modelle Ihren Anforderungen nicht entsprechen, können Sie Ihr eigenes Generierungsmodell über AI Gateway mitbringen oder AI Search nur für den Abruf nutzen und die Ergebnisse an ein beliebiges externes LLM senden.

Einschränkungen

Dieser Ansatz hat einige Einschränkungen:

  • Cloudflare-spezifisch: AI Search funktioniert nur innerhalb des Cloudflare-Ökosystems
  • Eingeschränkte Abruf-Optimierung: Sie können die Chunk-Größe und Überlappung anpassen, aber nicht die zugrunde liegende Chunking-Strategie oder den Abrufalgorithmus
  • Begrenzte Datenquellen: AI Search unterstützt Websites und R2-Speicher (für PDFs, Dokumente usw.), aber keine beliebigen Datenbanken oder APIs direkt

Für komplexere Anwendungsfälle (benutzerdefiniertes Chunking, mehrere heterogene Datenquellen oder spezialisierter Abruf) müssten Sie mehr von der Pipeline selbst erstellen, indem Sie direkt Vectorize und Workers AI verwenden.

Probieren Sie den Chatbot in der Ecke dieser Seite aus. Er führt genau das aus, was ich hier beschrieben habe.

Wenn Sie etwas Ähnliches erstellen und die Details besprechen möchten, lassen Sie uns reden.

Bleiben Sie auf dem Laufenden

Erhalten Sie die neuesten Beiträge und Einblicke in Ihren Posteingang.

Unsubscribe anytime. No spam, ever.