Custom-Knowledge-Chatbot: Proprietäre Daten intelligent nutzbar machen
Von statischen Dokumenten zur dialogfähigen KI-Wissensbasis mit RAG-Architektur
🚀 Machen Sie Ihre Dokumente dialogfähig — mit RAG.
💰 Warum ein RAG-Chatbot Ihr Unternehmen transformiert
Mitarbeiter verbringen durchschnittlich 19% ihrer Arbeitszeit mit der Suche nach Informationen — das sind bei einem 80-€-Stundensatz über 25.000 € pro Jahr und Mitarbeiter. Ein RAG-Chatbot, der Ihre eigenen Dokumente als Wissensbasis nutzt, reduziert diese Suchzeit um bis zu 80%.
⚙️ So funktioniert's
Drei Schritte von der Dokumentenablage zur dialogfähigen KI — Retrieval-Augmented Generation in Reinform.
💻 Code-Einblicke
Ein Blick unter die Haube — so wird aus Dokumenten eine intelligente Wissensbasis:
🏗️ Architektur
🚀 Bot-Auswahl & dynamisches Modul-Loading
import os
import importlib
def list_bots():
bot_files = os.listdir("bots")
bots = [os.path.splitext(bot)[0]
for bot in bot_files if bot.endswith('.py')]
return bots
def choose_bot():
bots = list_bots()
print("Available bots:")
for index, bot in enumerate(bots, 1):
print(f"{index}. {bot}")
choice = int(input("Choose a bot by entering its number: ")) - 1
return bots[choice]
def select_bot():
chosen_bot = choose_bot()
bot_module = importlib.import_module(f"bots.{chosen_bot}")
bot_module.main()
if __name__ == "__main__":
select_bot()
🧠 RAG-Pipeline: Vector Index mit LlamaIndex
from llama_index import (GPTVectorStoreIndex,
SimpleDirectoryReader, ServiceContext, Document)
def load_knowledge() -> list[Document]:
documents = SimpleDirectoryReader('knowledge').load_data()
return documents
def create_index() -> GPTVectorStoreIndex:
print('Creating new index')
documents = load_knowledge()
service_context = ServiceContext.from_defaults(chunk_size_limit=3000)
index = GPTVectorStoreIndex.from_documents(
documents, service_context=service_context)
return index
def save_index(index: GPTVectorStoreIndex):
index.save_to_disk('knowledge/index.json')
def load_index() -> GPTVectorStoreIndex:
try:
index = GPTVectorStoreIndex.load_from_disk('knowledge/index.json')
except FileNotFoundError:
index = create_index()
return index
def query_index(index: GPTVectorStoreIndex):
query_engine = index.as_query_engine()
while True:
prompt = input("Type prompt...")
response = query_engine.query(prompt)
print(response)
💬 ChatCompletion Bot mit Custom Knowledge
import openai
def initialize_messages() -> list:
return [
{"role": "system", "content":
"You're a kind helpful assistant, only respond with "
"knowledge you know for sure, dont hallucinate information."},
{"role": "user", "content":
"Your only knowledge is about the lifespan of a dog..."}
# Replace with custom knowledge base
]
def generate_chat_response(messages: list) -> str:
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages
)
return completion.choices[0].message.content
def main():
messages = initialize_messages()
while True:
user_message = input("User: ")
messages.append({"role": "user", "content": user_message})
chat_response = generate_chat_response(messages)
print(f'ChatGPT: {chat_response}')
messages.append({"role": "assistant", "content": chat_response})
⚡ In 5–7 Tagen zum RAG-Prototyp — nicht in 8–13 Wochen.
🚀 Gebaut mit Vibecoding — in 5–7 Tagen statt 8–13 Wochen
- 📋 2–3 Wochen Requirements Engineering
- 🏗️ 2–3 Wochen Architektur & Design
- 💻 3–4 Wochen Implementierung
- 🧪 1–2 Wochen Testing
- 🚢 1 Woche Deployment
- ⏱️ Gesamt: 8–13 Wochen
- 🗣️ 0.5 Tage Prompt-Engineering
- ⚡ 2–3 Tage iterative Generierung
- 🔧 1–2 Tage Refinement & Debugging
- ✅ 1 Tag Integration & Testing
- 🚀 0.5 Tage Deployment
- ⏱️ Gesamt: 5–7 Tage
🗣️ Der System-Prompt hinter diesem Projekt
Dieser konkrete, deutsche System-Prompt wurde für Coding-Agenten optimiert — so entstand der gesamte RAG-Chatbot in wenigen Iterationen:
Du bist ein Python-Experte für RAG-Systeme mit LlamaIndex und OpenAI. Aufgabe: Erstelle einen Chatbot, der auf eigenen Dokumenten basiert und Fragen mittels Retrieval-Augmented Generation (RAG) beantwortet. Technische Anforderungen: - Python 3.10+, LlamaIndex für Vektor-Indexing - OpenAI GPT-3.5-turbo als LLM-Backend - Unterstützung für TXT, CSV und PDF-Dokumente - Persistenter Vektor-Index (kein Neuaufbau bei jedem Start) - Zwei Modi: ChatCompletion (schnell) & VectorStore (präzise) RAG-Workflow: 1. Dokumente aus knowledge/-Verzeichnis laden 2. Text-Chunking mit konfigurierbarer Chunk-Größe 3. Embedding-Generierung via OpenAI Embeddings API 4. GPTVectorStoreIndex für semantische Suche 5. Bei Anfrage: Top-k relevante Chunks retrieven 6. LLM beantwortet Frage mit den Chunks als Kontext Wichtig: - Fehlerbehandlung für leeres knowledge/-Verzeichnis - Streaming-Responses für bessere UX - Konfigurierbare Parameter (Chunk-Size, Top-k, Temperatur) - Quellenangaben in Antworten für Nachvollziehbarkeit
🎯 Strategische Erkenntnisse aus diesem Projekt
RAG ist die Brücke zwischen statischen Dokumenten und dialogfähiger KI. Diese Erkenntnisse sind auf jede Wissensmanagement-Herausforderung übertragbar.
Bereit, Ihr Unternehmenswissen dialogfähig zu machen?
Jedes Unternehmen hat ungenutztes Wissen in Dokumenten, Handbüchern und Protokollen. Lassen Sie uns gemeinsam herausfinden, wie ein RAG-Chatbot Ihre Wissensarbeit revolutioniert.