Ein Q&A-Bot für Ihre Dokumente
Stellen Sie einen funktionierenden RAG-Bot bereit: PDFs aufnehmen, Embeddings erzeugen, suchen, generieren. Das „Hello World“ produktiver Agents.
Ein Q&A-Bot für Ihre Dokumente ist eine kostenlose AI Agents-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Agents-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
Projektziel
Erstellen Sie einen Chatbot, der Fragen zu Ihren eigenen Dokumenten (PDFs, Markdown usw.) beantwortet. Das ist das „Hello World“ der Produktions-Agents und für jedes Team sofort nützlich.
Architektur
- Ingestion: Dokumente laden → in Chunks aufteilen → einbetten → in einer Vektordatenbank speichern
- Abfrage: Frage einbetten → die besten K Chunks abrufen → in den Prompt einfügen → an das LLM übergeben
- Zitieren: Chunks mit IDs formatieren und das LLM zum Zitieren auffordern
Step 1: Load and Chunk
from langchain.text_splitter import RecursiveCharacterTextSplitter
from pypdf import PdfReader
text = ''
for page in PdfReader('handbook.pdf').pages:
text += page.extract_text() + '\n'
splitter = RecursiveCharacterTextSplitter(chunk_size=800, chunk_overlap=100)
chunks = splitter.split_text(text)
print(f'{len(chunks)} chunks')Step 2: Embed and Store
import chromadb
from openai import OpenAI
oai = OpenAI()
chroma = chromadb.PersistentClient(path='./db')
collection = chroma.get_or_create_collection('handbook')
resp = oai.embeddings.create(model='text-embedding-3-small', input=chunks)
vectors = [d.embedding for d in resp.data]
collection.add(ids=[f'c{i}' for i in range(len(chunks))], embeddings=vectors, documents=chunks)Step 3: Query Function
def query(question, k=4):
qvec = oai.embeddings.create(model='text-embedding-3-small', input=question).data[0].embedding
res = collection.query(query_embeddings=[qvec], n_results=k)
return res['documents'][0]Step 4: Build the Prompt
def make_prompt(question, chunks):
context = '\n\n'.join(f'[{i+1}] {c}' for i, c in enumerate(chunks))
return f'''
Using only the context below, answer the question.
If the answer is not present, say so.
Cite the source like [1], [2], etc.
Context:
{context}
Question: {question}
Answer:
'''
print(make_prompt("What is the return policy?", ["Returns accepted within 30 days.", "Item must be unused."]))
Step 5: Generate
def answer(question):
chunks = query(question)
prompt = make_prompt(question, chunks)
response = oai.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': prompt}],
temperature=0,
)
return response.choices[0].message.content
print(answer('What is our refund policy?'))Mit einer Benutzeroberfläche verbinden
Verpacken Sie das Ganze in FastAPI und eine einfache HTML-Seite (oder Streamlit), und Sie haben eine funktionierende Anwendung.
# pip install fastapi uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.post('/ask')
def ask(payload: dict):
return {'answer': answer(payload['question'])}Chatverlauf hinzufügen
Für Fragen und Antworten über mehrere Gesprächsrunden hinweg behalten Sie die Nachrichten bei und übergeben Sie sie an den Prompt:
messages = [{'role': 'system', 'content': 'You are a doc Q&A assistant.'}]
def chat(user_input):
messages.append({'role': 'user', 'content': user_input})
chunks = query(user_input)
context_msg = {'role': 'system', 'content': f'Context:\n{chr(10).join(chunks)}'}
response = oai.chat.completions.create(
model='gpt-4o-mini',
messages=[messages[0], context_msg] + messages[1:]
)
answer = response.choices[0].message.content
messages.append({'role': 'assistant', 'content': answer})
return answerHäufige Stolperfallen
- Chunks sind zu groß oder zu klein – versuchen Sie es mit 500–800 Tokens
- Keine Quellenangabe – Benutzer vertrauen Antworten ohne Quellen nicht
- K ist zu groß – verbraucht Tokens und verwässert die Aufmerksamkeit
- Die GESAMTE Frage einschließlich des Chatverlaufs einbetten – betten Sie nur die neueste Frage des Benutzers ein
Quellenlinks hinzufügen
Quellen-URLs in den Metadaten speichern und in der Antwort anzeigen:
metadata = [{'source': 'handbook.pdf', 'page': i} for i in range(len(chunks))]
# In the prompt, include 'source: <url>' so the LLM can produce clickable references.Evaluieren
Sammeln Sie 20 echte Fragen von Benutzern. Markieren Sie manuell, ob der Bot korrekt antwortet. Verwenden Sie dies als Ihr erstes Eval-Set.
Veröffentlichen und iterieren
Dieser Bot beantwortet in der Produktion 80 % der häufigen Fragen. Iterieren Sie anhand der 20 %, die er falsch beantwortet – meistens benötigen Sie bessere Chunk-Aufteilung oder ein besseres Re-Ranking.
Quellenangabe
Warum sollten Quellen-IDs in den Prompt aufgenommen und das LLM zum Zitieren aufgefordert werden?
Zusammenfassung
Ein RAG-Bot in etwa 50 Zeilen. Veröffentlichen, evaluieren und bei Chunk-Aufteilung und Retrieval iterieren. Dieses Muster wiederholt sich in unzähligen Agent-Anwendungen.
Häufig gestellte Fragen
Ist die Lektion „Ein Q&A-Bot für Ihre Dokumente“ kostenlos?
Ja — der vollständige Text von „Ein Q&A-Bot für Ihre Dokumente“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Agents-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Ein Q&A-Bot für Ihre Dokumente“?
Stellen Sie einen funktionierenden RAG-Bot bereit: PDFs aufnehmen, Embeddings erzeugen, suchen, generieren. Das „Hello World“ produktiver Agents. Du übst AI Agents mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um AI Agents zu starten?
Keine Vorkenntnisse erforderlich. AI Agents auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Ein Q&A-Bot für Ihre Dokumente“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser AI Agents-Lektion Code schreiben und ausführen?
Ja. Jede AI Agents-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Ein Q&A-Bot für Ihre Dokumente
- Ein Agent zur Code-Erklärung
- Ein Recherche-Agent zum Web-Browsing
- Ein SQL-Assistent für Ihre Datenbank