{"id":1105,"date":"2026-06-15T18:14:22","date_gmt":"2026-06-15T18:14:22","guid":{"rendered":"https:\/\/convly.ai\/how-to-build-a-rag-pipeline-2026\/"},"modified":"2026-06-15T18:17:48","modified_gmt":"2026-06-15T18:17:48","slug":"how-to-build-a-rag-pipeline-2026","status":"publish","type":"post","link":"https:\/\/convly.ai\/de\/how-to-build-a-rag-pipeline-2026\/","title":{"rendered":"So bauen Sie 2026 eine RAG-Pipeline Schritt f\u00fcr Schritt auf"},"content":{"rendered":"<p>Retrieval-augmented generation (RAG) ist bereits vor Jahren keine reine Forschungskuriosit\u00e4t mehr gewesen. Im Jahr 2026 ist es die Standardmethode, ein LLM mit Ihren eigenen Dokumenten zu verbinden \u2013 ohne teures Feintuning eines Modells zu bezahlen oder das Risiko einzugehen, dass das Modell selbstbewusst falsche Antworten erfindet. Das zugrundeliegende Muster ist einfach zu beschreiben, aber bei der Implementierung voller Fallstricke: Finden Sie den richtigen Textausschnitt, \u00fcbergeben Sie ihn dem Modell und lassen Sie das Modell die Antwort generieren.<\/p>\n<p>Dies ist eine Bauanleitung \u2013 kein \u00dcbersichtsartikel. Am Ende dieses Leitfadens wissen Sie genau, welche Komponenten eine funktionierende RAG-Pipeline 2026 ben\u00f6tigt, welche konkreten Tools und Modellversionen sich daf\u00fcr eignen und erhalten einen minimalen Code-Entwurf, den Sie entweder lokal oder \u00fcber eine API ausf\u00fchren k\u00f6nnen. Wir haben jede Versionsnummer, jeden Preis und jedes Benchmark-Ergebnis unten anhand aktueller Quellen \u00fcberpr\u00fcft \u2013 denn der schlimmste RAG-Fehler ist derjenige, den Sie aus einem Blogbeitrag kopieren, der f\u00fcr die Bibliotheken des Vorjahres geschrieben wurde.<\/p>\n<div class=\"convly-tldr\">\n<h3>Wichtigste Erkenntnisse<\/h3>\n<ul>\n<li><strong>Sechs Phasen in dieser Reihenfolge:<\/strong> Chunking, Embedding, Speichern, Abrufen, Neubewerten (Reranking), Generieren. \u00dcberspringen Sie den Reranker, und Ihre Top-Ergebnisse werden deutlich schlechter; \u00fcberspringen Sie die Evaluation, und Sie werden niemals erfahren, ob Ihre Pipeline funktioniert.<\/li>\n<li><strong>Einfaches Chunking \u00fcberzeugt.<\/strong> Rekursives Aufteilen bei etwa 512 Tokens mit 10\u201320 % \u00dcberlappung schnitt in einem Benchmark aus dem Jahr 2026 besser ab als anspruchsvolles semantisches Chunking (69 % vs. 54 % Genauigkeit). Beginnen Sie hier.<\/li>\n<li><strong>Embeddings:<\/strong> nomic-embed-text (768 Dimensionen, kostenlos, lokal) f\u00fcr Prototypen; OpenAI text-embedding-3-large (0,13 USD pro 1 Mio. Tokens, 3072 Dimensionen) oder Voyage-3.5 f\u00fcr hohe Qualit\u00e4t im gro\u00dfen Ma\u00dfstab.<\/li>\n<li><strong>Vektordatenbank:<\/strong> pgvector, falls Sie bereits PostgreSQL betreiben; Qdrant v1.18 (Apache-2.0-Lizenz, Rust), wenn Sie schnelle gefilterte Suche ben\u00f6tigen; Chroma f\u00fcr schnelle lokale Arbeiten.<\/li>\n<li><strong>Frameworks:<\/strong> LangChain 1.x (mit LangGraph-Runtime) f\u00fcr agentenbasierte Workflows, LlamaIndex 0.14.x f\u00fcr abruflastige Anwendungen \u2013 und Sie k\u00f6nnen eine n\u00fctzliche Pipeline bereits mit rund 40 Zeilen Code ohne diese Frameworks realisieren.<\/li>\n<li><strong>F\u00fcgen Sie einen Reranker hinzu.<\/strong> Cohere Rerank 3.5 (2 USD pro 1.000 Suchanfragen) oder der Open-Source-Reranker BGE-reranker-v2-m3 (kostenlos, ca. 50\u2013100 ms auf GPU) verbessern die Relevanz der Top-k-Ergebnisse deutlich und kosteng\u00fcnstig.<\/li>\n<\/ul>\n<\/div>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-flat ez-toc-counter ez-toc-container-direction\">\n<label for=\"ez-toc-cssicon-toggle-item-6a389fca34766\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Umschalten<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #000000;color:#000000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #000000;color:#000000\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewbox=\"0 0 24 24\" version=\"1.2\" baseprofile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a389fca34766\"  aria-label=\"Umschalten\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/convly.ai\/de\/how-to-build-a-rag-pipeline-2026\/#How_a_RAG_pipeline_actually_works\" >So funktioniert eine RAG-Pipeline tats\u00e4chlich<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/convly.ai\/de\/how-to-build-a-rag-pipeline-2026\/#Step_1_Chunk_your_documents\" >Schritt 1: Teilen Sie Ihre Dokumente in Chunks auf<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/convly.ai\/de\/how-to-build-a-rag-pipeline-2026\/#Step_2_Choose_an_embedding_model\" >Schritt 2: W\u00e4hlen Sie ein Embedding-Modell<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/convly.ai\/de\/how-to-build-a-rag-pipeline-2026\/#Step_3_Store_vectors_in_a_vector_database\" >Schritt 3: Speichern Sie die Vektoren in einer Vektordatenbank<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/convly.ai\/de\/how-to-build-a-rag-pipeline-2026\/#Step_4_Retrieve_and_rerank\" >Schritt 4: Abrufen und Neubewerten (Reranking)<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/convly.ai\/de\/how-to-build-a-rag-pipeline-2026\/#Step_5_Augment_the_prompt_and_generate\" >Schritt 5: Anreichern der Eingabeaufforderung (Prompt) und Generieren<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/convly.ai\/de\/how-to-build-a-rag-pipeline-2026\/#Step_6_A_minimal_code_sketch\" >Schritt 6: Minimaler Code-Entwurf<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/convly.ai\/de\/how-to-build-a-rag-pipeline-2026\/#Step_7_Evaluate_%E2%80%94_dont_skip_this\" >Schritt 7: Evaluieren \u2013 \u00fcberspringen Sie diesen Schritt nicht<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/convly.ai\/de\/how-to-build-a-rag-pipeline-2026\/#FAQ\" >H\u00e4ufig gestellte Fragen (FAQ)<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/convly.ai\/de\/how-to-build-a-rag-pipeline-2026\/#Bottom_line\" >Fazit<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/convly.ai\/de\/how-to-build-a-rag-pipeline-2026\/#Related_articles\" >Verwandte Artikel<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"How_a_RAG_pipeline_actually_works\"><\/span>So funktioniert eine RAG-Pipeline tats\u00e4chlich<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ein RAG-System besteht aus zwei Phasen. <strong>Indizierung<\/strong> erfolgt einmalig (oder immer dann, wenn sich Ihre Dokumente \u00e4ndern): Sie teilen Quelldateien in Chunks auf, wandeln jeden Chunk mithilfe eines Embedding-Modells in einen Vektor um und speichern diese Vektoren in einer Datenbank. <strong>Abfrage<\/strong> erfolgt bei jeder Anfrage: Sie wandeln die Nutzerfrage in einen Vektor um, finden die \u00e4hnlichsten Chunks, bewerten sie optional neu (reranken), f\u00fcgen die besten davon in eine Eingabeaufforderung (Prompt) ein und rufen ein LLM auf.<\/p>\n<p>Das ist die gesamte Idee. Die technische Umsetzung liegt in den Details \u2013 etwa Chunk-Gr\u00f6\u00dfe, Wahl des Embedding-Modells, Anzahl der abgerufenen Ergebnisse, Entscheidung f\u00fcr oder gegen ein Reranking sowie die Frage, wie Sie messen, ob Ihre Pipeline \u00fcberhaupt funktioniert. Falls Sie zun\u00e4chst das konzeptionelle Fundament verstehen m\u00f6chten, bevor Sie mit dem Aufbau beginnen, bietet unser <a href=\"\/de\/rag-retrieval-augmented-generation-explained\/\">RAG-Erkl\u00e4rer<\/a> die theoretischen Grundlagen; dieser Artikel konzentriert sich auf die praktische Umsetzung. Und falls Sie noch zwischen RAG und einer individuellen Modellanpassung (Fine-tuning) entscheiden m\u00fcssen, ist der <a href=\"\/de\/fine-tuning-vs-rag\/\">Vergleich zwischen Fine-tuning und RAG<\/a> der richtige Ausgangspunkt \u2013 denn f\u00fcr die meisten Teams, die private, sich st\u00e4ndig \u00e4ndernde Daten einem LLM zur Verf\u00fcgung stellen, ist RAG die kosteng\u00fcnstigere und wartbarere L\u00f6sung.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step_1_Chunk_your_documents\"><\/span>Schritt 1: Teilen Sie Ihre Dokumente in Chunks auf<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Embedding-Modelle weisen eine Kontextbegrenzung auf und \u2013 noch wichtiger \u2013 verlieren bei langen Textpassagen an Pr\u00e4zision. Daher teilen Sie Dokumente in Chunks auf. Der 2026 etablierte Konsens, gest\u00fctzt durch Benchmarks statt blo\u00dfer Intuition, ist wenig spektakul\u00e4r: Verwenden Sie einen rekursiven Zeichensplitter mit einer Zielgr\u00f6\u00dfe von etwa <strong>512 Tokens und einer \u00dcberlappung von 10\u201320 %<\/strong> (50\u2013100 Token).<\/p>\n<p>Eine Bewertung vom Februar 2026 anhand von 50 realen Dokumenten ergab, dass die naive rekursive Aufteilung bei 512 Token eine Abrufgenauigkeit von 69 % erreichte, w\u00e4hrend die semantische Chunking-Methode \u2013 die versucht, an Bedeutungsgrenzen zu teilen \u2013 lediglich 54 % erzielte. Der Grund ist banal: Semantisches Chunking erzeugte durchschnittlich nur 43 Token lange Fragmente, was zu wenig Kontext f\u00fcr das Modell bietet, um pr\u00e4zise Antworten zu generieren. Eine separate Studie aus Januar 2026 mit SPLADE-Abruf stellte zudem fest, dass \u00dcberlappung zwar die Indexierungskosten erh\u00f6hte, aber auf dem verwendeten Datensatz keinerlei messbaren Nutzen brachte. Die ehrliche Erkenntnis lautet daher: Beginnen Sie mit festgr\u00f6\u00dfenbasierten rekursiven Chunks und greifen Sie erst dann auf semantisches oder seitenbasiertes Chunking zur\u00fcck, wenn Ihre Evaluationsmetriken eindeutig belegen, dass dies f\u00fcr Ihre spezifischen Dokumente erforderlich ist.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step_2_Choose_an_embedding_model\"><\/span>Schritt 2: W\u00e4hlen Sie ein Embedding-Modell<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Dies ist die folgenreichste Entscheidung in der gesamten Pipeline \u2013 und der Unterschied zwischen den Optionen ist tats\u00e4chlich sp\u00fcrbar. Im Folgenden finden Sie die im Juni 2026 relevanten Alternativen mit verifizierten Kennzahlen.<\/p>\n<table class=\"convly-vs\">\n<thead>\n<tr>\n<th>Modell<\/th>\n<th>Dimensionen<\/th>\n<th>Kontext<\/th>\n<th>Preis pro 1 Mio. Token<\/th>\n<th>Anmerkungen<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>nomic-embed-text v1.5<\/td>\n<td>768 (MRL 64\u2013768)<\/td>\n<td>8,192<\/td>\n<td>Kostenlos (lokal)<\/td>\n<td>274 MB; die Standardwahl f\u00fcr lokale Installationen<\/td>\n<\/tr>\n<tr>\n<td>mxbai-embed-large<\/td>\n<td>1024<\/td>\n<td>512<\/td>\n<td>Kostenlos (lokal)<\/td>\n<td>670 MB; h\u00f6here Qualit\u00e4t, kurzer Kontext<\/td>\n<\/tr>\n<tr>\n<td>BGE-M3<\/td>\n<td>1024 + sparse<\/td>\n<td>8,192<\/td>\n<td>Kostenlos (lokal)<\/td>\n<td>MIT-Lizenz, \u00fcber 100 Sprachen unterst\u00fctzt<\/td>\n<\/tr>\n<tr>\n<td>OpenAI text-embedding-3-small<\/td>\n<td>1536<\/td>\n<td>8,191<\/td>\n<td>$0.02<\/td>\n<td>G\u00fcnstige API-Basisvariante<\/td>\n<\/tr>\n<tr>\n<td>OpenAI text-embedding-3-large<\/td>\n<td>3072<\/td>\n<td>8,191<\/td>\n<td>$0.13<\/td>\n<td>0,065 USD \u00fcber die Batch-API<\/td>\n<\/tr>\n<tr>\n<td>Voyage-3.5<\/td>\n<td>2048 (MRL 256\u20132048)<\/td>\n<td>32,000<\/td>\n<td>$0.06<\/td>\n<td>\u00dcbertrifft text-embedding-3-large bei Abrufleistung um ca. 8 %<\/td>\n<\/tr>\n<tr>\n<td>Gemini Embedding<\/td>\n<td>3072<\/td>\n<td>\u2014<\/td>\n<td>API<\/td>\n<td>F\u00fchrend bei MTEB v2 (~68,3)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>F\u00fcr einen Prototypen beginnen Sie lokal mit <strong>nomic-embed-text<\/strong> \u2014 es ist schnell, kostenlos, l\u00e4uft problemlos auf einem Laptop mit 16 GB RAM und schl\u00e4gt laut Berichten OpenAIs \u00e4lteres Modell <code>text-embedding-ada-002<\/code>Umso mehr: F\u00fcr Produktionsumgebungen hat der Open-Source-Bereich wirklich aufgeholt: BGE-M3 ist das MIT-lizenzierte Arbeitstier, auf das die meisten selbstgehosteten Stacks standardm\u00e4\u00dfig setzen; Voyage-3.5 und Gemini Embedding f\u00fchren hingegen bei den Managed-API-Benchmarks. Die einzige entscheidende Regel lautet: <strong>Mit welchem Modell Sie Ihre Dokumente einbetten, mit demselben Modell m\u00fcssen Sie auch Ihre Abfragen einbetten.<\/strong> Das Mischen verschiedener Modelle zerst\u00f6rt den Abruf stillschweigend.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step_3_Store_vectors_in_a_vector_database\"><\/span>Schritt 3: Speichern Sie die Vektoren in einer Vektordatenbank<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Sobald Sie die Embeddings vorliegen haben, ben\u00f6tigen sie einen Speicherort, der schnelle nearest-neighbor-Suche unterst\u00fctzt. Im Jahr 2026 stehen Ihnen drei sinnvolle Ebenen zur Verf\u00fcgung.<\/p>\n<div class=\"convly-procons\">\n<div class=\"pros\">\n<h4>Greifen Sie hierzu auf<\/h4>\n<ul>\n<li><strong>pgvector 0.8<\/strong> zur\u00fcck, falls Sie bereits PostgreSQL betreiben. Mit einem HNSW-Index erreicht es eine p95-Latenz im Bereich einstelliger bis niedriger zweistelliger Millisekunden bei einer Million Vektoren. Version 0.8 f\u00fchrte iterative Scans ein, sodass gefilterte Abfragen ausreichend Ergebnisse liefern. Keine neue Infrastruktur erforderlich.<\/li>\n<li><strong>Qdrant v1.18<\/strong> (Apache-2.0-Lizenz, Rust) \u2013 wenn Filteroperationen entscheidend sind. Sein ACORN-Algorithmus (seit Version 1.16 verf\u00fcgbar) l\u00f6st das klassische Problem \u201eFilter ruinieren meine Recall-Rate\u201c, indem er die HNSW-Suche unter restriktiven Filterbedingungen gezielt verbreitert und damit zu den leistungsst\u00e4rksten Optionen f\u00fcr gefilterte Suche z\u00e4hlt. Ein einzelner Docker-Befehl gen\u00fcgt f\u00fcr das Self-Hosting.<\/li>\n<li><strong>Chroma<\/strong> f\u00fcr lokale Prototypenentwicklung. Beste Entwicklererfahrung, eingebetteter Modus, null Betriebsaufwand \u2013 ideal, bis Sie dessen Kapazit\u00e4tsgrenzen \u00fcberschreiten.<\/li>\n<\/ul>\n<\/div>\n<div class=\"cons\">\n<h4>Achten Sie darauf, dass<\/h4>\n<ul>\n<li>Verwaltete Dienste nach Verbrauch abrechnen und oft unerwartete Kosten verursachen: Bei 100 Millionen Vektoren kann Pinecone monatlich \u00fcber 5.000 USD kosten \u2013 im Vergleich zu einem deutlich g\u00fcnstigeren selbstgehosteten Qdrant oder pgvector auf Ihren eigenen VMs. F\u00fchren Sie daher vor dem Skalieren eine Kostenanalyse durch.<\/li>\n<li>Der Aufbau von HNSW-Indizes ist bei gro\u00dfen Datenmengen langsam, und der Index kann bei 1 Million Vektoren mit 1536 Dimensionen bereits ~8 GB gro\u00df werden (mit halfvec l\u00e4sst sich dieser Wert grob halbieren).<\/li>\n<li>Die Speicherhardware bestimmt ma\u00dfgeblich den Durchsatz: Derselbe pgvector-Setup erzielte etwa 410 QPS auf Cloud-SSDs gegen\u00fcber 2.150 QPS auf NVMe.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<p>Eine detailliertere Aufschl\u00fcsselung finden Sie in unserem <a href=\"\/de\/what-is-a-vector-database-2026\/\">Leitfaden zu Vektordatenbanken<\/a>, doch f\u00fcr die meisten Teams reduziert sich die Entscheidung auf folgende Faustregeln: Bereits PostgreSQL im Einsatz \u2192 pgvector; starke Filteranforderungen oder Milliarden von Vektoren n\u00f6tig \u2192 Qdrant oder Milvus; reine Experimente \u2192 Chroma.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step_4_Retrieve_and_rerank\"><\/span>Schritt 4: Abrufen und Neubewerten (Reranking)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Der eigentliche Abruf erfolgt in einem einzigen Schritt: Das Abfrage-Embedding wird erzeugt, und die Datenbank liefert die k n\u00e4chsten Nachbar-Chunks (typischerweise k = 20\u201350). Doch reine Vektor\u00e4hnlichkeit ist ein grobes Instrument. Ein <strong>Reranker<\/strong> \u2013 ein Cross-Encoder, der jedes Abfrage-Dokument-Paar individuell bewertet \u2013 sortiert diese Kandidaten neu und hebt die tats\u00e4chlich relevanten Ergebnisse hervor, bevor sie das LLM erreichen.<\/p>\n<p>Standardvorgehen: Abruf der Top-50 mittels Bi-Encoder, anschlie\u00dfender Rerank, Behalten der Top-5 bis Top-10. Cohere Rerank 3.5 kostet 0,002 USD pro Suchvorgang (2 USD pro 1.000 Anfragen) und verursacht typischerweise eine zus\u00e4tzliche Latenz von rund 100\u2013300 ms. Falls Sie \u00fcber eine GPU verf\u00fcgen und keine laufenden Kosten pro Abfrage w\u00fcnschen, bietet der Open-Source-Reranker <strong>BGE-reranker-v2-m3<\/strong> eine Laufzeit von ca. 50\u2013100 ms und unterst\u00fctzt mehrsprachige Inhalte. Reranking geh\u00f6rt zu den wirkungsvollsten und zugleich einfachsten Verbesserungen einer Pipeline \u2013 die meisten Systeme, die \u201eM\u00fcll abrufen\u201c, fehlt genau dieser Schritt.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step_5_Augment_the_prompt_and_generate\"><\/span>Schritt 5: Anreichern der Eingabeaufforderung (Prompt) und Generieren<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Nun stellen Sie den Prompt zusammen: eine kurze Systemanweisung, die das Modell auffordert, ausschlie\u00dflich auf Basis des bereitgestellten Kontexts zu antworten, gefolgt von den rerankten Chunks und der Nutzerfrage. Danach rufen Sie Ihr LLM auf.<\/p>\n<p>F\u00fcr das Generierungsmodell k\u00f6nnen Sie entweder lokal oder \u00fcber eine API arbeiten. Lokal \u00fcber <a href=\"\/de\/what-is-ollama-complete-guide-2026\/\">Ollama<\/a>ist der 2026er Sweet Spot ein Modell der 8B-Klasse \u2013 etwa Qwen3 8B oder Llama 3.1 8B in Q4_K_M-Quantisierung \u2013, das in 8\u201312 GB VRAM Platz findet und auf einer modernen GPU \u00fcber 40 Token\/Sekunde verarbeitet. Qwen3 14B (~8\u20139 GB bei Q4) stellt einen deutlichen Leistungssprung dar und bietet ein 128K-Kontextfenster, um noch mehr abgerufene Texte einzuf\u00fcgen. F\u00fcr gehostete L\u00f6sungen mit h\u00f6herem Leistungspotenzial eignen sich Frontier-API-Modelle gut; unser <a href=\"\/de\/build-ai-chatbot-claude-api\/\">Claude-API-Chatbot-Tutorial<\/a> f\u00fchrt diesen Weg Schritt f\u00fcr Schritt durch. Eine n\u00fctzliche Erinnerung von Praktikern: Bei RAG z\u00e4hlt meist die Abrufqualit\u00e4t mehr als die Modellgr\u00f6\u00dfe \u2013 saubere Chunks plus ein gutes Embedding-Modell plus ein kleines LLM \u00fcbertrifft ein riesiges Modell, das mit schlechtem Kontext gef\u00fcttert wird.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step_6_A_minimal_code_sketch\"><\/span>Schritt 6: Minimaler Code-Entwurf<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Im Folgenden sehen Sie eine vollst\u00e4ndige lokale Pipeline mit LangChain 1.x, Chroma und Ollama. Sie indexiert ein Dokument und beantwortet eine Frage \u2013 ohne API-Schl\u00fcssel.<\/p>\n<pre><code class=\"language-python\"># pip install langchain langchain-community langchain-chroma langchain-ollama\nfrom langchain_community.document_loaders import TextLoader\nfrom langchain_text_splitters import RecursiveCharacterTextSplitter\nfrom langchain_ollama import OllamaEmbeddings, ChatOllama\nfrom langchain_chroma import Chroma\n\n# 1. Laden + Chunking (~512 Token, ~15 % \u00dcberlappung; Gr\u00f6\u00dfenangaben in Zeichen)\ndocs = TextLoader(\"handbook.txt\").load()\nchunks = RecursiveCharacterTextSplitter(\n    chunk_size=2000, chunk_overlap=300\n).split_documents(docs)\n\n# 2. Einbetten + 3. Speichern\nembeddings = OllamaEmbeddings(model=\"nomic-embed-text\")\nstore = Chroma.from_documents(chunks, embeddings)\n\n# 4. Abrufen (Top 4)\nretriever = store.as_retriever(search_kwargs={\"k\": 4})\n\n# 5. Anreichern + Generieren\nllm = ChatOllama(model=\"qwen3:8b\")\nquestion = \"Wie lange betr\u00e4gt die R\u00fcckgabefrist?\"\ncontext = \"\\n\\n\".join(d.page_content for d in retriever.invoke(question))\nprompt = (f\"Antworten Sie ausschlie\u00dflich anhand des Kontexts. Ist die Information nicht vorhanden, geben Sie dies an.\\n\\n\"\\\n          f\"Kontext:\\n{context}\\n\\nFrage: {question}\")\nprint(llm.invoke(prompt).content)\n<\/code><\/pre>\n<p>Damit ist die gesamte Pipeline abgeschlossen. Um Reranking einzuf\u00fcgen, integrieren Sie einfach einen <code>ContextualCompressionRetriever<\/code> mit einem Cross-Encoder zwischen den Schritten 4 und 5. Mit LlamaIndex 0.14.x erfordert derselbe Ablauf typischerweise weniger Code dank seiner speziell f\u00fcr Retrieval entwickelten Abstraktionen \u2013 es ist die bessere Wahl f\u00fcr retrieval-lastige Anwendungen, w\u00e4hrend LangChains LangGraph-Laufzeit besonders dann \u00fcberzeugt, wenn Sie zustandsbehaftete, mehrstufige Agenten ben\u00f6tigen. (Die Wahl einer Orchestrierungsschicht ist ein Thema f\u00fcr sich; siehe unseren <a href=\"\/de\/best-ai-agent-frameworks-2026\/\">Vergleich von KI-Agent-Frameworks<\/a>.)<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step_7_Evaluate_%E2%80%94_dont_skip_this\"><\/span>Schritt 7: Evaluieren \u2013 \u00fcberspringen Sie diesen Schritt nicht<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Der Unterschied zwischen einer Demo und einem Produkt ist die Messung. Das Standardwerkzeug hierf\u00fcr ist <strong>RAGAS<\/strong>, das mit einem LLM als \u201eRichter\u201c die Treue (\u201eHat die Antwort sich an den Kontext gehalten?\u201c), die Kontextpr\u00e4zision und den Kontextrecall bewertet. Erstellen Sie einen kleinen Satz von 20\u201350 Frage-Antwort-Paaren aus Ihren echten Dokumenten und f\u00fchren Sie RAGAS bei jeder \u00c4nderung aus.<\/p>\n<p>So stellen Sie auch sicher, dass alle fr\u00fcheren Entscheidungen ehrlich getroffen werden. Sollten Sie auf semantisches Chunking umsteigen? Einen Reranker hinzuf\u00fcgen? Den Parameter k von 4 auf 8 erh\u00f6hen? Raten Sie nicht \u2013 \u00e4ndern Sie eine Variable, f\u00fchren Sie RAGAS erneut aus und behalten Sie die \u00c4nderung nur dann bei, wenn sich die Kennzahlen verbessern. Ohne diese Schleife optimieren Sie im Blindflug.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"FAQ\"><\/span>H\u00e4ufig gestellte Fragen (FAQ)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3>Wie hoch sind die Kosten f\u00fcr den Betrieb einer RAG-Pipeline?<\/h3>\n<p>Almost free to prototype. With local Ollama embeddings, Chroma, and a local LLM, your only cost is electricity. At scale, the main bills are the vector DB (a self-hosted Qdrant or pgvector instance on your own VM is dramatically cheaper than managed offerings, which can exceed $5,000\/month at 100M vectors) and, if you use APIs, embeddings (OpenAI text-embedding-3-large is $0.13 per million tokens) plus generation calls.<\/p>\n<h3>Brauche ich eine Vektordatenbank oder reicht eine herk\u00f6mmliche Datenbank aus?<\/h3>\n<p>Sie ben\u00f6tigen zwar Vektor-Suche, aber nicht unbedingt ein dediziertes Produkt. pgvector f\u00fcgt diese Funktionalit\u00e4t zu PostgreSQL hinzu und bew\u00e4ltigt 1 Million Vektoren mit niedriger p95-Latenz (ein- bis zweistellige Millisekunden auf NVMe, etwas h\u00f6her auf Cloud-SSDs); wenn Sie bereits PostgreSQL betreiben, k\u00f6nnen Sie daher v\u00f6llig auf neue Infrastruktur verzichten. Greifen Sie erst dann zu einer dedizierten Datenbank wie Qdrant, wenn Sie umfangreiche Metadatenfilterung oder Milliarden von Vektoren ben\u00f6tigen.<\/p>\n<h3>Welche Chunk-Gr\u00f6\u00dfe sollte ich verwenden?<\/h3>\n<p>Beginnen Sie mit etwa 512 Tokens und einer \u00dcberlappung von 10\u201320 % mithilfe eines rekursiven Splitters. Ein Benchmark aus dem Jahr 2026 ergab, dass dieser Ansatz die Abrufgenauigkeit gegen\u00fcber semantischem Chunking mit 69 % zu 54 % \u00fcbertraf. Wechseln Sie erst dann zu anspruchsvolleren Chunking-Verfahren, wenn Ihre Evaluationsmetriken belegen, dass dies bei Ihren konkreten Dokumenten tats\u00e4chlich hilft.<\/p>\n<h3>Ist ein Reranker wirklich notwendig?<\/h3>\n<p>Nicht, um eine funktionierende L\u00f6sung zu erhalten \u2013 doch ist er eine der kosteng\u00fcnstigsten Qualit\u00e4tsverbesserungen \u00fcberhaupt. Rufen Sie zun\u00e4chst einen breiten Satz ab (die Top-50-Ergebnisse), werten Sie diese mit Cohere Rerank 3.5 oder dem Open-Source-Modell BGE-reranker-v2-m3 neu ein und behalten Sie nur die besten 5\u201310 Ergebnisse. Die meisten Pipelines, die irrelevante Chunks zur\u00fcckliefern, fehlt einfach dieser Schritt.<\/p>\n<h3>Kann ich RAG auch ohne LangChain oder LlamaIndex bauen?<\/h3>\n<p>Ja. Die Kernschleife \u2013 Embedding, Suche, Prompting, Generierung \u2013 umfasst etwa 40 Zeilen reinen Python-Codes, die direkt Ihr Embedding-Modell, den Client f\u00fcr die Vektordatenbank und das LLM aufrufen. Frameworks sparen Zeit bei Loadern, Rerankern und agentischer Orchestrierung, sind jedoch optional; ein Aufbau von Grund auf bietet Ihnen volle Kontrolle \u00fcber jeden einzelnen Schritt.<\/p>\n<h3>Sollte ich f\u00fcr die Generierung ein lokales Modell oder eine API verwenden?<\/h3>\n<p>Ein lokales Modell (\u00fcber Ollama mit einem 8B-Modell auf 8\u201312 GB VRAM) ist ideal f\u00fcr Datenschutz, Kostenkontrolle und Offline-Nutzung. Eine API bietet Ihnen eine h\u00f6here Qualit\u00e4ts-Obergrenze und entbindet Sie vollst\u00e4ndig von Betriebsaufwand. Viele Teams prototypisieren lokal, um kosteng\u00fcnstig iterieren zu k\u00f6nnen, und w\u00e4hlen dann je nach Einsatzszenario \u2013 basierend auf Datensensitivit\u00e4t und Budget \u2013 die passende L\u00f6sung f\u00fcr die jeweilige Produktionseinf\u00fchrung.<\/p>\n<h3>Wie halte ich den Index aktuell, wenn sich die Dokumente \u00e4ndern?<\/h3>\n<p>Re-embedden und upserten Sie nur die ge\u00e4nderten Inhalte, statt den gesamten Index neu zu erstellen. Verfolgen Sie pro Quelldokument einen Inhalts-Hash oder ein \u00c4nderungsdatum und l\u00f6schen Sie beim Update die alten Chunks dieses Dokuments, bevor Sie die neuen einf\u00fcgen. Die meisten Vektordatenbanken unterst\u00fctzen Upserts und L\u00f6schvorg\u00e4nge anhand von Metadatenfiltern \u2013 so gestaltet sich die inkrementelle Aktualisierung unkompliziert.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Bottom_line\"><\/span>Fazit<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Eine RAG-Pipeline zu bauen, ist 2026 tats\u00e4chlich gut machbar: sechs Phasen, eine Handvoll ausgereifter Tools und rund 40 Codezeilen f\u00fcr einen funktionsf\u00e4higen Prototypen. Die Fallstricke liegen nicht in der Architektur \u2013 sondern in den Standardeinstellungen. Nutzen Sie langweilige 512-Token-Chunks, stellen Sie sicher, dass Ihr Query- und Dokument-Embedder identisch sind, integrieren Sie einen Reranker und optimieren Sie niemals ohne RAGAS in der Schleife. Beginnen Sie lokal und kostenlos mit nomic-embed-text, Chroma und einem 8B-Ollama-Modell; r\u00fcsten Sie einzelne Komponenten \u2013 wie pgvector, Qdrant, Voyage oder eine Spitzen-API \u2013 erst dann nach, wenn Ihre Evaluationszahlen \u2013 und nicht ein Blogeintrag \u2013 dies eindeutig nahelegen. Stimmen Sie die Retrieval-Komponente richtig ab, und schon ein kleines Modell wird Sie \u00fcberraschend weit bringen.<\/p>\n<p><!--related-block--><\/p>\n<div class=\"convly-related\">\n<h2><span class=\"ez-toc-section\" id=\"Related_articles\"><\/span>Verwandte Artikel<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li><a href=\"https:\/\/convly.ai\/de\/how-to-run-llama-3-locally-on-snapdragon-8-gen-4\/\">How to Run Llama 3 Locally on Snapdragon 8 Gen 4 (Step-by-Step, 2026)<\/a><\/li>\n<li><a href=\"https:\/\/convly.ai\/de\/90-day-ai-engineer-path\/\">Von Null zum KI-Ingenieur: Ihr 90-Tage-Lernpfad<\/a><\/li>\n<li><a href=\"https:\/\/convly.ai\/de\/ai-resume-screener-tutorial\/\">Erstellen eines KI-gest\u00fctzten Lebenslauf-Scanners (vollst\u00e4ndiges Tutorial)<\/a><\/li>\n<li><a href=\"https:\/\/convly.ai\/de\/local-llm-ollama-setup\/\">Einrichten Ihres ersten lokalen LLM mit Ollama<\/a><\/li>\n<\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>A practical, code-first walkthrough of building a retrieval-augmented generation pipeline in 2026 \u2014 from embeddings and chunking to vector storage, reranking, and generation, with verified tool versions and honest notes on what actually works.<\/p>","protected":false},"author":1,"featured_media":1115,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[9],"tags":[746,747,442,259,429,748,441],"class_list":["post-1105","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-embeddings","tag-langchain","tag-llm","tag-ollama","tag-rag","tag-tutorial","tag-vector-database"],"_links":{"self":[{"href":"https:\/\/convly.ai\/de\/wp-json\/wp\/v2\/posts\/1105","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/convly.ai\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/convly.ai\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/convly.ai\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/convly.ai\/de\/wp-json\/wp\/v2\/comments?post=1105"}],"version-history":[{"count":1,"href":"https:\/\/convly.ai\/de\/wp-json\/wp\/v2\/posts\/1105\/revisions"}],"predecessor-version":[{"id":1126,"href":"https:\/\/convly.ai\/de\/wp-json\/wp\/v2\/posts\/1105\/revisions\/1126"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/convly.ai\/de\/wp-json\/wp\/v2\/media\/1115"}],"wp:attachment":[{"href":"https:\/\/convly.ai\/de\/wp-json\/wp\/v2\/media?parent=1105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/convly.ai\/de\/wp-json\/wp\/v2\/categories?post=1105"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/convly.ai\/de\/wp-json\/wp\/v2\/tags?post=1105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}