<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/" >

<channel>
	<title>Maryia Shapel &#8211; SaM Solutions</title>
	<atom:link href="https://sam-solutions.de/author/m-shapelsam/feed/" rel="self" type="application/rss+xml" />
	<link>https://sam-solutions.de</link>
	<description></description>
	<lastBuildDate>Tue, 27 Jan 2026 16:22:23 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>
	<item>
		<title>Wie wir eine produktionsreife RAG-Engine für einen Website-KI-Chatbot entwickelt haben</title>
		<link>https://sam-solutions.de/blog/produktionsreife-rag-engine/</link>
					<comments>https://sam-solutions.de/blog/produktionsreife-rag-engine/#respond</comments>
		
		<dc:creator><![CDATA[Maryia Shapel]]></dc:creator>
		<pubDate>Wed, 28 Jan 2026 02:00:00 +0000</pubDate>
				<guid isPermaLink="false">https://sam-solutions.com/?post_type=article&#038;p=32433</guid>

					<description><![CDATA[(Wenn Sie Videoinhalte bevorzugen, sehen Sie sich bitte die kurze Videozusammenfassung dieses Artikels unten an.) Moderne Websites leiden nicht an einem Mangel an Informationen – im Gegenteil: Sie leiden oft unter Informationsüberfluss. Blogs, News, Leistungsseiten, Eventankündigungen, Case Studies … alles ist relevant, alles wächst, und alles ist über Navigationspfade verteilt, die für Besucher wenig Sinn [&#8230;]]]></description>
										<content:encoded><![CDATA[<span id="more-32433"></span>
<!--noteaser-->



<iframe style="margin: 0;" width="100%" height="115" scrolling="no" frameborder="no" allow="autoplay" title="Wie wir eine produktionsreife RAG-Engine für einen Website-KI-Chatbot entwickelt haben" 
src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/soundcloud%253Atracks%253A2255163623&#038;color=%23ff5500&#038;auto_play=false&#038;hide_related=false&#038;show_comments=false&#038;show_user=false&#038;show_reposts=false&#038;show_teaser=false"> </iframe>


<p style="font-size:14px;"> <em>(Wenn Sie Videoinhalte bevorzugen, sehen Sie sich bitte <a href="#video-content">die kurze Videozusammenfassung</a> dieses Artikels unten an.)</em> </p>




<p class="wp-block-paragraph">Moderne Websites leiden nicht an einem Mangel an Informationen – im Gegenteil: Sie leiden oft unter Informationsüberfluss. Blogs, News, Leistungsseiten, Eventankündigungen, Case Studies … alles ist relevant, alles wächst, und alles ist über Navigationspfade verteilt, die für Besucher wenig Sinn ergeben, wenn sie einfach nur eine konkrete Antwort suchen.</p>




 
    
    <div class="editor-content editor-content_style_1 editor-content_index_1">
        
    
    <div class="editor-content__descr">
        <div class="wysiwyg-editor"><h2>Schlüsselfakten</h2>
<ul>
<li>Produktionsreife KI-Chatbots benötigen eine RAG-Architektur, die zunächst die passenden Inhalte abruft, anstatt sich auf übergroße Prompts oder feinjustierte Modelle zu verlassen.</li>
<li>Saubere Inhaltsextraktion, semantische Aufteilung in Abschnitte und hybrides Retrieval (dense + lexikalisches Re-Ranking) sind entscheidend für die Qualität und Relevanz der Antworten.</li>
<li>Lokale, modulare RAG-Komponenten ermöglichen eine bessere Kontrolle über Kosten, Datenschutz und Skalierbarkeit als vollständig verwaltete Cloud-Ingestions-Pipelines.</li>
<li>Hochwertige Chatbot-Antworten sind das Ergebnis einer durchdachten Architektur – geprägt von Entscheidungen bei Ingestion, Retrieval und Ranking – und nicht allein vom LLM.</li>
</ul>
</div>
    </div>
    </div>
    



<p class="wp-block-paragraph">Genau deshalb haben wir ein internes RAG-Projekt (Retrieval-Augmented Generation) gestartet: um einen Website-Chatbot zu betreiben, der Fragen auf Basis unserer tatsächlichen Inhalte beantwortet. Verlässlich, datenschutzkonform und ohne so zu tun, als würde er Dinge „wissen“, die er nie gesehen hat.</p>



<p class="wp-block-paragraph">Entdecken Sie die praktische Geschichte, wie wir das System aufgebaut haben, was zunächst nicht funktioniert hat und was die Antworten schließlich spürbar präziser gemacht hat.</p>




 
    
    <div class="editor-list-cta editor-list-cta_style_1 editor-list-cta_index_2">
        
    <div class="editor-list-cta__items">
                                    
                    			    				<style>
    					.editor-list-cta_index_2 .editor-list-cta__item.editor-list-cta__item_index_1 .editor-list-cta__item-button {
            				            				
            				            				        							    background: linear-gradient(to right, #a067e8, #527eff);
    							            				    					}
    				</style>
    			    			
    			    			    				<style>
    					.editor-list-cta_index_2 .editor-list-cta__item.editor-list-cta__item_index_1 .editor-list-cta__item-left {
    					    padding-left: 10px;
    					}
    					
    					.editor-list-cta_index_2 .editor-list-cta__item.editor-list-cta__item_index_1 .editor-list-cta__item-left:before {
    					    left: 0;
    					    top: 50%;
    					    width: 3px;
    					    content: '';
    					    position: absolute;
    					    margin-left: -10px;
    					    height: calc(100% + 10px);
    					    transform: translateY(-50%);

            				            					    							    background: linear-gradient(45deg, #527eff, #a067e8);
    							            				    					}
    					
    					@media (max-width: 475px) {
    					    .editor-list-cta_index_2 .editor-list-cta__item.editor-list-cta__item_index_1 .editor-list-cta__item-left:before {
    					        width: 2px;
                                margin-left: -3.5px;
    					    }
    					}
    				</style>
    			                
                    			    			        
    			
                    			
                                
                <div class="editor-list-cta__item editor-list-cta__item_index_1">
                    <div class="editor-list-cta__item-inner">
            		                		                                <div class="editor-list-cta__item-left">
                                                                                                    <div class="editor-list-cta__item-title"><p>Mit KI zum Erfolg – erleben Sie Marketing, das sich selbst optimiert.</p>
</div>
                                                	        </div>
            	        
            	                    	            <div class="editor-list-cta__item-right">
            	                                    	                                	                                	            <div class="editor-list-cta__item-event">
                    	                <div class="editor-list-cta__item-button button button_style_1">
                                            <a class="button__inner" href="https://sam-solutions.de/leistungen/ki-software-entwicklung/?utm_source=blog&#038;utm_medium=post_ID_32433&#038;utm_campaign=cta_post_content_23816">                                                <div class="button__name">MEHR ERFAHREN </div>
                                            </a>                                        </div>
                                    </div>    
                                                                        
            	            </div>
            	                	        </div>
                </div>
                        </div>
    </div>
    



<h2 class="wp-block-heading">Business-Anforderung des Kunden</h2>



<p class="wp-block-paragraph">Das Projekt begann mit der Anfrage eines Kunden, eine skalierbare KI-Plattform zu entwerfen und zu implementieren. </p>



<p class="wp-block-paragraph"><strong>Unser übergeordnetes Ziel war es, ein System zu schaffen, das:</strong></p>



<ul class="wp-block-list">
<li>die Registrierung und den Zugriff auf das System ermöglicht,</li>



<li>mehrere unterschiedliche Modelle anbinden kann,</li>



<li>einen KI-Pop-up-Chat auf jeder Website einbettet.</li>
</ul>



<p class="wp-block-paragraph"><strong>Im Rahmen des MCP-Umfangs benötigte der Chatbot einige klar definierte Funktionen:</strong></p>



<ul class="wp-block-list">
<li>Beantwortung von Nutzerfragen mithilfe der Website-Inhalte (Blogs, Artikel, News, Event-Seiten).</li>



<li>Versand von E-Mails direkt aus dem Chat-Flow heraus (damit Besucher Fragen stellen, fehlende Informationen bereitstellen und eine Kontaktaufnahme auslösen können, ohne ein klassisches Kontaktformular ausfüllen zu müssen).</li>
</ul>



<h2 class="wp-block-heading">Das eigentliche Problem verstehen</h2>



<p class="wp-block-paragraph">Ein Website-Chatbot wirkt auf den ersten Blick einfach. Das bleibt jedoch nur so lange so, bis man versucht, ihn wirklich präzise zu machen. Die zentrale Einschränkung war dabei klar:</p>



<ul class="wp-block-list">
<li>Ein allgemeines LLM kennt den aktuellen Stand unserer Website nicht automatisch.</li>



<li>Große, cloudbasierte Sprachmodelle bringen zudem erhebliche Herausforderungen in Bezug auf Kosten, Datenschutz und die Abhängigkeit von externer Infrastruktur mit sich. Das gilt insbesondere dann, wenn sie nicht nur auf öffentliche Webinhalte, sondern auch auf interne oder sensible Informationen angewendet werden.</li>



<li>Infolgedessen entscheiden sich viele Teams für kleinere, lokal betriebene Modelle. Dieser Wechsel legt jedoch einen neuen Engpass offen: begrenzte Kontextfenster. Wenn ganze Dokumente oder Seiten in einen einzigen Prompt geladen werden, skaliert dieser Ansatz nicht mehr – Eingaben werden abgeschnitten, und irrelevante Abschnitte verbrauchen wertvollen Kontext. Der Ansatz mit „einem riesigen Prompt“ wird damit fragil und ineffizient.</li>
</ul>



<p class="wp-block-paragraph">Anstatt dem Modell also alles auf einmal „beizubringen“, haben wir uns für den Ansatz entschieden, der sich in realen Produktionssystemen bewährt hat: Zuerst werden die passenden Inhaltsbausteine abgerufen, und erst danach wird auf deren Basis die Antwort generiert. Genau das ist <a href="https://sam-solutions.de/blog/rag-llm-architektur/">RAG</a>.</p>



<h2 class="wp-block-heading">Lösungen entdecken</h2>



<p class="wp-block-paragraph">Wir haben verschiedene Ansätze untersucht, bevor wir uns festgelegt haben.</p>



<h3 class="wp-block-heading has-medium-font-size">Option 1: Die Seite als Prompt verwenden</h3>



<p class="wp-block-paragraph"><strong>Warum es scheiterte:</strong></p>



<ul class="wp-block-list">
<li>Webseiten enthalten LLM-irrelevantes Rauschen (z. B. Navigation, wiederholte Abschnitte, versteckte Elemente, Cookie-Hinweise), das nichts mit der eigentlichen Anfrage zu tun hat.</li>



<li>Begrenzte Kontextfenster führen dazu, dass das Modell Inhalte sowieso verwirft.</li>



<li>Die Antworten können je nach abgeschnittenen Inhalten stark variieren.</li>
</ul>



<h3 class="wp-block-heading has-medium-font-size"><strong>Option 2: Cloud-Ingestion + verwaltete Suche (z. B. Azure)</strong></h3>



<p class="wp-block-paragraph"><strong>Warum wir uns in dieser Phase dagegen entschieden haben:</strong></p>



<ul class="wp-block-list">
<li>Die Kosten steigen schnell, sobald Inhalte häufig indexiert und die Nutzung skaliert wird.</li>



<li>Datenschutz und Kontrolle werden auf lange Sicht komplexer, insbesondere bei internen Erweiterungen.</li>
</ul>



<h3 class="wp-block-heading has-medium-font-size">Option 3: Fine-Tuning</h3>



<p class="wp-block-paragraph"><strong>Warum es nicht passt:</strong></p>



<ul class="wp-block-list">
<li>Ständige Website-Updates würden ständiges Nachtrainieren oder Modell-Drift erfordern.</li>



<li>Fine-Tuning beantwortet nicht automatisch die Frage: „Woher stammt diese Antwort?“</li>



<li>Zudem ist es rechenintensiv und erfordert tiefgehendes ML-Fachwissen, um Modelle effektiv zu trainieren, zu warten und zu debuggen.</li>
</ul>



<h3 class="wp-block-heading has-medium-font-size">Option 4: RAG mit lokalen Komponenten</h3>



<p class="wp-block-paragraph"><strong>Warum wir uns dafür entschieden haben:</strong></p>



<ul class="wp-block-list">
<li>Wir behalten die volle Kontrolle über Daten und Kosten.</li>



<li>Wir können das Konzept zunächst mit öffentlichen Inhalten testen und später sicher auf internes Wissen ausweiten.</li>



<li>Wir können die Wissensbasis kontinuierlich aktualisieren, indem Inhalte neu indexiert werden.</li>
</ul>




 
    
    <div class="editor-list-articles editor-list-articles_style_1 editor-list-articles_index_3">
        
    <div class="editor-list-articles__items owl-carousel">
                                                                <div class="editor-list-articles__item">
                        <a class="editor-list-articles__item-inner" href="https://sam-solutions.de/blog/rag-llm-architektur/">
                            <div class="editor-list-articles__item-picture">
                                                    					<img fetchpriority="high" decoding="async" class="editor-list-articles__item-img owl-lazy" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="
                							 data-src="https://sam-solutions.de/wp-content/uploads/fly-images/24319/title-10-360x230.webp" data-src-retina="https://sam-solutions.de/wp-content/uploads/fly-images/24319/title-10-720x460.webp"
                							 width="360" height="230"
                							 alt="Was ist Retrieval Augmented Generation (RAG)?">
                					                                                            </div>
                            <div class="editor-list-articles__item-content">
                                                                                                                                        <div class="editor-list-articles__item-cat">    
                                                                            	    KI &amp; Machine Learning                                    	                                    </div>
                                                                <div class="editor-list-articles__item-title">
                                    <div class="h5">Was ist Retrieval Augmented Generation (RAG)?</div>
                                </div>
                            </div>
                        </a>
                    </div>
                                                                            <div class="editor-list-articles__item">
                        <a class="editor-list-articles__item-inner" href="https://sam-solutions.de/blog/ki-entwicklungszyklus/">
                            <div class="editor-list-articles__item-picture">
                                                    					<img decoding="async" class="editor-list-articles__item-img owl-lazy" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="
                							 data-src="https://sam-solutions.de/wp-content/uploads/fly-images/17148/cover@2x-360x230.webp" data-src-retina="https://sam-solutions.de/wp-content/uploads/fly-images/17148/cover@2x-720x460.webp"
                							 width="360" height="230"
                							 alt="KI-Entwicklungszyklus – Ein umfassender Leitfaden">
                					                                                            </div>
                            <div class="editor-list-articles__item-content">
                                                                                                                                        <div class="editor-list-articles__item-cat">    
                                                                            	    KI &amp; Machine Learning,                                     	                                    	    Digitale Transformation                                    	                                    </div>
                                                                <div class="editor-list-articles__item-title">
                                    <div class="h5">KI-Entwicklungszyklus – Ein umfassender Leitfaden</div>
                                </div>
                            </div>
                        </a>
                    </div>
                                                                            <div class="editor-list-articles__item">
                        <a class="editor-list-articles__item-inner" href="https://sam-solutions.de/blog/was-ist-agentic-ai/">
                            <div class="editor-list-articles__item-picture">
                                                    					<img decoding="async" class="editor-list-articles__item-img owl-lazy" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="
                							 data-src="https://sam-solutions.de/wp-content/uploads/fly-images/23820/title@2x-14-360x230.webp" data-src-retina="https://sam-solutions.de/wp-content/uploads/fly-images/23820/title@2x-14-720x460.webp"
                							 width="360" height="230"
                							 alt="Was ist Agentic AI? Der Leitfaden zu agentenbasierter Künstlicher Intelligenz">
                					                                                            </div>
                            <div class="editor-list-articles__item-content">
                                                                                                                                        <div class="editor-list-articles__item-cat">    
                                                                            	    KI &amp; Machine Learning,                                     	                                    	    Softwareentwicklung                                    	                                    </div>
                                                                <div class="editor-list-articles__item-title">
                                    <div class="h5">Was ist Agentic AI? Der Leitfaden zu agentenbasierter Künstlicher Intelligenz</div>
                                </div>
                            </div>
                        </a>
                    </div>
                        </div>
    </div>
    



<h2 class="wp-block-heading">So haben wir den Prozess umgesetzt</h2>



<p class="wp-block-paragraph">Um eine interne RAG-Engine bereitzustellen, die Ingestion, Retrieval, LLM-Orchestrierung und die Einbettung auf der Website abdeckt, haben wir ein funktionsübergreifendes Team zusammengestellt:</p>



<ul class="wp-block-list">
<li><strong>Project Manager (PM)</strong> – koordinierte die Stakeholder, definierte Iterationen und Meilensteine und hielt den Umfang unter Kontrolle, während sich die Anforderungen weiterentwickelten.</li>



<li><strong>Architekt</strong> – verantwortete die Zielarchitektur, den Integrationsansatz und zentrale technische Entscheidungen wie Sicherheit, Skalierbarkeit und Datenfluss.</li>



<li><strong>.NET-Entwickler</strong> – implementierte die RAG-Services, die Retrieval-Pipeline, die Integration der Vektordatenbank und die MCP-Tools (Suche, Aktionen).</li>



<li><strong>Frontend-Entwickler</strong> – entwickelte die Chatbot-Benutzeroberfläche und die Nutzerflows, die notwendig sind, um den Chatbot auf der Website einzubetten und in realen Sessions nutzbar zu machen.</li>



<li><strong>2 Java-Entwickler </strong>– unterstützten Java-basierte Backend-Services und Integrationen; entwickelten die MCP-Plattform sowohl in .NET als auch in Java mit einheitlicher Architektur, wobei die Java-Implementierung für die Produktion ausgewählt wurde; bauten und pflegten CI/CD, Kubernetes, GitOps und überwachten die Stabilität der Plattform.</li>
</ul>




 
    
    <div class="editor-retina-image editor-retina-image_style_1 editor-retina-image_index_4">
        

        
    <img decoding="async" class="editor-retina-image__img" src="https://sam-solutions.de/wp-content/uploads/Team-composition-1.webp"
                
                     srcset="https://sam-solutions.de/wp-content/uploads/Team-composition-1.webp 1x, https://sam-solutions.de/wp-content/uploads/Team-composition@2x-1.webp 2x"
                  
         alt=""
         width="824" height="309">
    </div>
    



<p class="wp-block-paragraph">Dieses Setup ermöglichte es uns, schnell zu iterieren und die endgültige Antwortqualität zu verbessern, während das formalisierten Kommunikationsprotokoll von MCP einem mehrsprachigen, heterogenen Team die Zusammenarbeit erlaubte, ohne von einer einzelnen Expertise abhängig zu sein.</p>



<p class="wp-block-paragraph">Wir haben die Lösung in Iterationen entwickelt – die erste funktionierte „technisch“, aber noch nicht „produktseitig“.</p>



<h3 class="wp-block-heading"><strong>Version 1: Ein schneller Python-Prototyp (funktionierte, aber war chaotisch)</strong></h3>



<p class="wp-block-paragraph"><strong>Wir starteten mit einem Skript, das:</strong></p>



<ul class="wp-block-list">
<li>Seiten crawlte,</li>



<li>Inhalte extrahierte,</li>



<li>JSON-Dateien mit den extrahierten Inhalten erzeugte, die anschließend von einem separaten Tool verarbeitet wurden, um Embeddings zu erstellen und sie in der Vektordatenbank zu speichern.</li>
</ul>



<p class="wp-block-paragraph"><strong>Was schiefging:</strong></p>



<ul class="wp-block-list">
<li>Wir erstellten Embeddings für ganze Seiten inklusive HTML und Tags, was viel irrelevantes „semantisches Rauschen“ erzeugte.</li>



<li>Zudem stießen wir auf praktische Probleme bei der stabilen Text-zu-Embedding-Konvertierung und der Konsistenz.</li>
</ul>



<p class="wp-block-paragraph"><strong>Ergebnis:</strong> Der Chatbot konnte antworten, aber die Antworten wirkten oft unscharf, zu allgemein oder auf dem falschen Textfragment basierend.</p>



<h3 class="wp-block-heading"><strong>Version 2: Eine Microservice-basierte Pipeline (sauberer, skalierbar)</strong></h3>



<p class="wp-block-paragraph">Sobald unser Microservices-Team eingebunden war, haben wir den Ingestion-Ansatz neu gestaltet: Statt sich durch Querverlinkungen zu „hangeln“, nutzte der Service – wo möglich – die Website-APIs. Der Microservice:</p>



<ul class="wp-block-list">
<li>rief Inhalte ab,</li>



<li>bereinigte sie,</li>



<li>teilte sie in Chunks auf,</li>



<li>erstellte Embeddings für diese Chunks</li>



<li>und übertrug sie in die Vektordatenbank.</li>
</ul>



<p class="wp-block-paragraph">Allein dadurch verbesserte sich die Relevanz deutlich, da das Modell aufhörte, Navigationsmenüs und wiederholte UI-Blöcke „mitzulernen“.</p>




 
    
    <div class="editor-cta editor-cta_style_1 editor-cta_index_5">
        
<a class="editor-cta__inner" href="https://sam-solutions.de/blog/rag-llm-architektur/">

                
    <div class="editor-cta__split">
                
                    <div class="editor-cta__right">
                <div class="editor-cta__title">
                    <div class="h5">Alles über RAG in einem Artikel</div>
                </div>
            </div>
            </div>
    
    <div class="editor-cta__event">
        <div class="editor-cta__button">
            <span></span>
            <span></span>
            <span></span>
        </div>    
    </div>
    
</a>    </div>
    



<h2 class="wp-block-heading">Entwurf der RAG-Strategie</h2>



<p class="wp-block-paragraph">Der Erfolg von RAG hängt von zwei Dingen ab:</p>



<ul class="wp-block-list">
<li><strong>wie Inhalte in Chunks aufgeteilt werden</strong>,</li>



<li><strong>wie die abgerufenen Inhalte gerankt werden</strong>.</li>
</ul>



<h3 class="wp-block-heading has-medium-font-size">Getestete Chunking-Experimente</h3>



<p class="wp-block-paragraph">Wir haben mehrere Strategien untersucht, da manuelles, menschlich gesteuertes Aufteilen langsam ist, sich bei Updates nur schwer warten lässt und keinen skalierbaren Ansatz darstellt.</p>



<p class="wp-block-paragraph"><strong>Unsere Untersuchungen umfassten unter anderem:</strong></p>



<ul class="wp-block-list">
<li>Satzfenster-Chunking,</li>



<li>Semantisches Chunking (Split/Merge auf Basis von Embedding-Ähnlichkeit),</li>



<li>Hybride Ansätze, die feste Fenster mit semantischem Zusammenführen kombinierten.</li>
</ul>



<p class="wp-block-paragraph"><strong>Verwendete Bibliotheken und Komponenten:</strong></p>



<ul class="wp-block-list">
<li>TextChunker (Microsoft.SemanticKernel.Text)</li>



<li>drittich.SemanticSlicer</li>



<li>SemanticChunker.NET</li>
</ul>



<p class="wp-block-paragraph"><strong>Eigene Strategien, z. B.:</strong></p>



<ul class="wp-block-list">
<li>SemanticDoubleParseMergeStrategy</li>



<li>WindowChunkStrategy</li>
</ul>



<p class="wp-block-paragraph"><strong>WindowChunkStrategy (Grundidee):</strong></p>



<ul class="wp-block-list">
<li>Ein Fenster aus drei Sätzen bilden</li>



<li>Um einen Satz verschieben → nächstes Fenster</li>



<li>Embeddings benachbarter Fenster vergleichen</li>



<li>Fenster zusammenführen, wenn sie semantisch nah beieinander liegen</li>
</ul>



<p class="wp-block-paragraph">So blieb der inhaltliche Zusammenhang erhalten, ohne riesige Textblöcke zu erzeugen. Am Ende haben wir uns für SemanticSlicer entschieden.</p>



<h3 class="wp-block-heading has-medium-font-size">Finaler Retrieval-Flow (der Teil, der alles verändert hat)</h3>



<p class="wp-block-paragraph">Unsere erste Implementierung setzte auf eine einfache Vektorsuche. Sie funktionierte – aber nicht so gut, wie wir es brauchten. Deshalb haben wir zwei zentrale Schritte ergänzt: Query-Enrichment und Re-Ranking.</p>



<p class="wp-block-paragraph">Vereinfachter Ablauf: Der Nutzer stellt eine Frage im Chat (Beispiel: „Welche Expertise hat Ihr Unternehmen?“)</p>




 
    
    <div class="editor-list-step editor-list-step_style_1 editor-list-step_index_6">
        
    <div class="editor-list-step__items">
                                    <div class="editor-list-step__item">
                                            <div class="editor-list-step__item-title"><div class="h5">Schritt 1 — Query-Enrichment</div>                        </div>
                                                                <div class="editor-list-step__item-descr">
                            <div class="wysiwyg-editor"><p>Bevor die Anfrage eingebettet wird, senden wir sie an das LLM, das sie semantisch erweitert. Beispiel für die Transformation: „die Expertise des Unternehmens“ → „die Expertise des Unternehmens, erfolgreiche Projekte, Kunden, Kompetenzen, Branchen“.</p>
<p>Anschließend führen wir das Retrieval zweimal aus:</p>
<ul>
<li>Vektorsuche für die ursprüngliche Anfrage,</li>
<li>Vektorsuche für die angereicherte Anfrage.</li>
</ul>
</div>
                        </div>
                                    </div>  
                                                <div class="editor-list-step__item">
                                            <div class="editor-list-step__item-title"><div class="h5">Schritt 2 — Re-Ranking (BM25 / lexikalische Relevanz)</div>                        </div>
                                                                <div class="editor-list-step__item-descr">
                            <div class="wysiwyg-editor"><p>Das System ruft 15 Ergebnisse aus der angereicherten Anfrage und 10 aus der ursprünglichen ab, rankt sie anschließend neu und wählt die Top 5 für die Antwortgenerierung aus. Dabei werden Chunks mit starker Keyword-Übereinstimmung sowie seltenen, charakteristischen Begriffen bevorzugt. Da alles als modulare Microservice-Plattform aufgebaut ist, lassen sich sämtliche Retrieval- und Ranking-Parameter zur Laufzeit konfigurieren, um Relevanz, Performance und Skalierbarkeit zu optimieren. Wir wählen die Top-5-Chunks aus. Diese Datensätze bilden den fundierten Kontext für die LLM-Antwort.</p>
</div>
                        </div>
                                    </div>  
                        
    </div>
    </div>
    



<p class="wp-block-paragraph">An diesem Punkt verbesserten sich die Antworten spürbar: präzisere Aussagen, weniger irrelevante Zitate und eine bessere Ausrichtung daran, wie Menschen tatsächlich Fragen stellen.</p>



<h2 class="wp-block-heading">Implementierte Funktionen</h2>



<p class="wp-block-paragraph">Die folgenden Funktionen bilden den Kern des Systems und ermöglichen zuverlässige Aktionen, präzises Retrieval und eine nachvollziehbare Wissensverankerung im realen Produktionseinsatz.</p>




 
    
    <div class="editor-list-step editor-list-step_style_2 editor-list-step_index_7">
        
    <div class="editor-list-step__items">
                                    <div class="editor-list-step__item">
                                            <div class="editor-list-step__item-title"><div class="h5">MCP-Tools für echte Aktionen</div>                        </div>
                                                                <div class="editor-list-step__item-descr">
                            <div class="wysiwyg-editor"><p>Innerhalb von MCP haben wir Tools implementiert, die der Assistent programmgesteuert aufrufen kann: Vektordatenbank-Suche (semantisches Retrieval), E-Mail-Versand (Lead-Erfassung / Follow-up).</p>
</div>
                        </div>
                                    </div>  
                                                <div class="editor-list-step__item">
                                            <div class="editor-list-step__item-title"><div class="h5">Eine Wissensbasis aus realen Website-Inhalten</div>                        </div>
                                                                <div class="editor-list-step__item-descr">
                            <div class="wysiwyg-editor"><p>Jeder Chunk ist bis zur jeweiligen Quellseite rückverfolgbar. Die Neuindexierung läuft zeitgesteuert (anfangs alle paar Stunden, bis zu zweimal täglich – abhängig von der vordefinierten Konfiguration).</p>
</div>
                        </div>
                                    </div>  
                                                <div class="editor-list-step__item">
                                            <div class="editor-list-step__item-title"><div class="h5">Verbesserungen der hybriden Retrieval-Qualität</div>                        </div>
                                                                <div class="editor-list-step__item-descr">
                            <div class="wysiwyg-editor"><p>Wir haben ein Zwei-Pass-Retrieval (ursprüngliche + angereicherte Anfrage), BM25-Re-Ranking und eine Top-K-Auswahl implementiert, um Prompts klein und relevant zu halten – im Wesentlichen beschreibt dies den Kern von RAG, dessen Hauptaufgabe darin besteht, die für eine gegebene Anfrage relevantesten Dokumente zu finden.</p>
</div>
                        </div>
                                    </div>  
                        
    </div>
    </div>
    



<h2 class="wp-block-heading">Überwindung von Herausforderungen</h2>




 
    
    <div class="editor-list-icons editor-list-icons_style_1 editor-list-icons_index_8">
        
    <div class="editor-list-icons__items">
                    <div class="editor-list-icons__item">
                <div class="editor-list-icons__item-inner">
                                            <div class="editor-list-icons__item-title"><div class="h5">Content-Rauschen und „falsche Inhalte einbetten“</div>                        </div>
                                                                <div class="editor-list-icons__item-descr">
                            <div class="wysiwyg-editor"><p>Früh führte das Einbetten von Rohseiteninhalten dazu, dass der Assistent falsche Signale „lernte“. Lösung: sauberere Extraktion + Chunking, fokussiert auf sinnvolle Textblöcke.</p>
</div>
                        </div>
                                                                                                            <div class="editor-list-icons__item-image">
                            <img decoding="async" class="editor-list-icons__item-img" src="https://sam-solutions.de/wp-content/uploads/1-Content-noise.svg"
                                                                                                  alt="1-The content noise"
                                 width="40" height="40">
                        </div>         
                                    </div>
            </div>
                    <div class="editor-list-icons__item">
                <div class="editor-list-icons__item-inner">
                                            <div class="editor-list-icons__item-title"><div class="h5">Namen und mehrsprachige Randfälle</div>                        </div>
                                                                <div class="editor-list-icons__item-descr">
                            <div class="wysiwyg-editor"><p>Einige Nutzerfragen waren nicht auf Englisch (z. B. „Who is the named person?“). Embedding-Modelle, die in den Fremdsprachen nicht stark sind, können fehlerhafte Ergebnisse liefern. So kann das System beispielsweise eine andere Person mit demselben Namen abrufen, nur weil die Vektorähnlichkeit nicht genau genug ist. Untersuchte Lösungsansätze:</p>
<ul>
<li>Hybrides sparse + dense Retrieval,</li>
<li>Zusätzliche Signale zur Erkennung von Personennamen.</li>
</ul>
</div>
                        </div>
                                                                                                            <div class="editor-list-icons__item-image">
                            <img decoding="async" class="editor-list-icons__item-img" src="https://sam-solutions.de/wp-content/uploads/2-Name.svg"
                                                                                                  alt="2-Names"
                                 width="40" height="40">
                        </div>         
                                    </div>
            </div>
                    <div class="editor-list-icons__item">
                <div class="editor-list-icons__item-inner">
                                            <div class="editor-list-icons__item-title"><div class="h5">Evaluation und Testing</div>                        </div>
                                                                <div class="editor-list-icons__item-descr">
                            <div class="wysiwyg-editor"><p>Das RAG-Retrieval selbst ist deterministisch für dieselben Eingaben, seine Nicht-Determinismus-Quellen liegen jedoch in der Generierung der Query-Embeddings und darin, wie das LLM den abgerufenen Kontext verarbeitet und formuliert. Erkenntnis: Der stabilste Testansatz besteht darin, Folgendes zu prüfen:</p>
<ul>
<li>Retrieval-Korrektheit: Wurden die richtigen Chunks abgerufen?</li>
<li>Antwort-Grundlage: Nutzt die Antwort tatsächlich den bereitgestellten Kontext?</li>
</ul>
</div>
                        </div>
                                                                                                            <div class="editor-list-icons__item-image">
                            <img decoding="async" class="editor-list-icons__item-img" src="https://sam-solutions.de/wp-content/uploads/3-Evaluation.svg"
                                                                                                  alt="3-The Evaluation"
                                 width="40" height="40">
                        </div>         
                                    </div>
            </div>
                    <div class="editor-list-icons__item">
                <div class="editor-list-icons__item-inner">
                                            <div class="editor-list-icons__item-title"><div class="h5">Aktualität und Indexierungs-Latenz</div>                        </div>
                                                                <div class="editor-list-icons__item-descr">
                            <div class="wysiwyg-editor"><p>Neue Inhalte werden nicht sofort durchsuchbar – die Ingestion benötigt Zeit. Wir mussten ein Gleichgewicht finden zwischen:</p>
<ul>
<li>Infrastruktur-Last,</li>
<li>Nutzererwartung, dass „der Chatbot wissen sollte, was wir heute veröffentlicht haben“,</li>
<li>Indexierungsfrequenz, die vollständig konfigurierbar war (bis zu alle 15 Minuten).</li>
</ul>
</div>
                        </div>
                                                                                                            <div class="editor-list-icons__item-image">
                            <img decoding="async" class="editor-list-icons__item-img" src="https://sam-solutions.de/wp-content/uploads/4-Freshness.svg"
                                                                                                  alt="4-The freshness"
                                 width="40" height="40">
                        </div>         
                                    </div>
            </div>
            </div>
    </div>
    



<h2 class="wp-block-heading">Ergebnisse und Geschäftlicher Nutzen</h2>



<p class="wp-block-paragraph">Selbst zu diesem Zeitpunkt ist der Nutzen bereits deutlich sichtbar.</p>



<p class="wp-block-paragraph"><strong>Was sich für die Nutzer geändert hat:</strong></p>



<ul class="wp-block-list">
<li>Besucher können Fragen in natürlicher Sprache stellen, statt sich durch Menüs zu kämpfen</li>



<li>Der Chatbot ermöglicht schnellere Auffindbarkeit von Blogs, Artikeln und Updates</li>



<li>Das E-Mail-Tool sorgt für einen reibungsloseren Lead-Flow: Frage stellen → fehlende Details ergänzen → Nachricht senden, ganz ohne das klassische Formular</li>
</ul>



<p class="wp-block-paragraph"><strong>Was sich für das Unternehmen geändert hat:</strong></p>



<ul class="wp-block-list">
<li>Bessere Nutzung von Inhalten: Wertvolle Seiten werden nicht mehr „vergraben“</li>



<li>Skalierbarer Ansatz: Dieselbe Architektur kann über öffentliche Seiten hinaus erweitert werden</li>



<li>Kosten- und Datenschutzkontrolle: Das System ruft nur ab, was benötigt wird, anstatt alles in externe Prompts zu schicken</li>
</ul>



<h2 class="wp-block-heading">Nächste Schritte</h2>



<p class="wp-block-paragraph">Dieses Projekt befindet sich weiterhin in der Entwicklung. Die nächsten Schritte konzentrieren sich auf Zuverlässigkeit und Skalierbarkeit:</p>



<ul class="wp-block-list">
<li>Automatisierte Evaluierung von Retrieval und fundierten Antworten.</li>



<li>Verbesserte Mehrsprachigkeit, insbesondere bei Namen und kurzen Anfragen.</li>



<li>Stärkeres hybrides Retrieval (sparse + dense), um „falsche Treffer“ in den Vektoren zu reduzieren.</li>



<li>Abschluss der Infrastrukturkomponenten (KI-Server und RAG-Collection-Setup).</li>



<li>Überprüfung der Multi-Site-Abdeckung (die US-Website könnte einen eigenen MCP-Server betreiben)</li>
</ul>



<h2 class="wp-block-heading">Summary</h2>



<p class="wp-block-paragraph">Dieses Projekt zeigt, wie eine produktionsreife RAG-Architektur einen KI-Chatbot von einer oberflächlichen Schnittstelle zu einer verlässlichen Wissenszugriffsschicht für eine wachsende Website verwandeln kann. Durch die Kombination von strukturierter Inhaltserfassung, semantischer Aufteilung, hybridem Retrieval und kontrollierter LLM-Orchestrierung haben wir ein System geschaffen, das präzise, fundierte Antworten auf Basis realer Inhalte liefert – und nicht auf Annahmen oder Halluzinationen.</p>



<p class="wp-block-paragraph">Die Lösung verbessert die Auffindbarkeit von Inhalten für Nutzer und legt eine Grundlage, die auf interne Wissensdatenbanken, mehrsprachige Umgebungen und weitere Datenquellen ausgeweitet werden kann. Am wichtigsten ist: Sie zeigt, dass hochwertige KI-Assistenten nicht allein durch Prompts entstehen, sondern durch gezielte architektonische Entscheidungen bei Daten, Retrieval und Infrastruktur.</p>



<div id="video-content" class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Wie wir eine produktionsreife RAG-Engine für einen Website-KI-Chatbot entwickelt haben" width="500" height="281" class="lazyload" referrerpolicy="strict-origin-when-cross-origin" data-src="https://www.youtube.com/embed/PF7vqJTZcJs?feature=oembed"  allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope;  web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>
</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://sam-solutions.de/blog/produktionsreife-rag-engine/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
