<?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/"
	>

<channel>
	<title>Playbooks &#8211; KI Magazin</title>
	<atom:link href="https://www.kimagazin.com/category/playbooks/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.kimagazin.com</link>
	<description>KI verstehen - damit Erfahrung zählt.</description>
	<lastBuildDate>Thu, 11 Jun 2026 20:45:54 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://www.kimagazin.com/wp-content/uploads/2026/03/cropped-favicon-32x32.png</url>
	<title>Playbooks &#8211; KI Magazin</title>
	<link>https://www.kimagazin.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>RAG in der Praxis: KI-gestützte Dokumentennutzung</title>
		<link>https://www.kimagazin.com/rag-praxis-ki-dokumentennutzung/</link>
		
		<dc:creator><![CDATA[Oskar Kohler]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 09:19:25 +0000</pubDate>
				<category><![CDATA[Durchblick]]></category>
		<category><![CDATA[Playbooks]]></category>
		<guid isPermaLink="false">https://www.kimagazin.com/?p=2353</guid>

					<description><![CDATA[Wie kann ich Dokumente intelligent nutzen? Dieses Problem existiert bereits seit vielen Jahren:Unternehmen sitzen auf einem riesigen Berg&#8230;]]></description>
										<content:encoded><![CDATA[
<h2 id="wie-kann-ich-dokumente-intelligent-nutzen" class="wp-block-heading">Wie kann ich Dokumente intelligent nutzen?</h2>



<p class="wp-block-paragraph">Dieses <strong>Problem</strong> existiert bereits seit vielen Jahren:<br>Unternehmen sitzen auf einem <strong>riesigen Berg wertvoller interner Dokumente</strong> in unterschiedlichsten Formaten. <strong>Wissen, Regeln, Anweisungen, Tipps und Erfahrungen</strong> wurden über Jahre hinweg dokumentiert, gesammelt und an den verschiedensten Orten abgelegt.</p>



<p class="wp-block-paragraph">Es ist ein <strong>enormer Schatz an Wissen</strong> – doch sobald man darauf zugreifen möchte, scheint er <strong>unauffindbar</strong> zu sein. Man weiß, dass die Information <strong>irgendwo existiert</strong>, doch <strong>niemand weiß mehr genau, wo</strong> sie abgelegt wurde.</p>



<p class="wp-block-paragraph">Viele Unternehmen kennen dieses Problem nur zu gut. Immer wieder wird versucht, <strong>Ordnung in dieses Dokumentenchaos</strong> zu bringen und eine <strong>sinnvolle Struktur</strong> zu etablieren. Doch das ist in der Praxis oft <strong>schwieriger als gedacht</strong>. Selbst wenn man sich auf eine <strong>einheitliche Struktur</strong> geeinigt hat, bleiben Herausforderungen bestehen: Inhalte sind <strong>doppelt vorhanden</strong>, wurden <strong>mehrfach aktualisiert</strong> oder <strong>widersprechen sich</strong> an einzelnen Stellen.</p>



<p class="wp-block-paragraph">Häufig versucht man, dem Ganzen mit <strong>strikten Ordnerhierarchien</strong>, <strong>Namenskonventionen</strong> und <strong>Volltextsuche</strong> Herr zu werden. Trotzdem kostet die <strong>Suche nach den passenden Dokumenten</strong> viel Zeit – ganz abgesehen davon, dass die gefundenen Dateien erst <strong>mühsam gesichtet</strong> werden müssen, um die <strong>tatsächlich relevante Information</strong> zu finden.</p>



<p class="wp-block-paragraph">Wie praktisch wäre es, stattdessen <strong>einfach Fragen stellen</strong> zu können – und ein <strong>hilfreicher Assistent</strong> beantwortet sie direkt auf Basis der <strong>unternehmenseigenen Dokumente</strong>?<br><strong>Welche Richtlinie gilt in diesem Fall?</strong><br><strong>Was muss ich hier beachten?</strong></p>



<h2 id="grosse-sprachmodelle-als-game-changer" class="wp-block-heading">Große Sprachmodelle als Game Changer</h2>



<p class="wp-block-paragraph">Bis vor <strong>Kurzem</strong> war dies leider noch <strong>Wunschdenken</strong>. Doch dank <strong>aktueller Fortschritte in der KI</strong> – insbesondere durch <strong>große Sprachmodelle</strong> wie <strong>ChatGPT</strong>, <strong>Gemini</strong> oder <strong>Mistral</strong> – ist genau das inzwischen <strong>realistisch umsetzbar</strong>.</p>



<p class="wp-block-paragraph">Diese <strong>Sprachmodelle</strong> sind in der Lage, <strong>Texte semantisch zu verarbeiten</strong> und <strong>Fragen auf Basis vorgegebener Texte</strong> zu beantworten. Dabei geht es nicht um reines <strong>Stichwortsuchen</strong>, sondern um das <strong>Verstehen von Zusammenhängen und Bedeutungen</strong> im Text.</p>



<div class="cnvs-block-alert cnvs-block-alert-1774817401508 is-style-cnvs-block-alert-info" >
	<div class="cnvs-block-alert-inner">
		

<p class="wp-block-paragraph"><strong>Große Sprachmodelle (LLMs – Large Language Models)</strong> sind darauf trainiert, <strong>Wörter und ihre Bedeutung im Kontext</strong> zu erfassen. Ihre technische Grundlage bilden <strong>Transformer-Architekturen</strong>, die die Beziehungen zwischen Wörtern (genauer <strong>Tokens</strong>: Worte, Wortteile oder Satzzeichen) in einem Text abbilden und so die <strong>semantische Struktur</strong> des Inhalts erkennen.<br>Trainiert werden diese Modelle auf <strong>Textvervollständigung</strong>: Sie lernen, auf Basis des bisherigen Kontexts das <strong>wahrscheinlich nächste Token</strong> vorherzusagen und einen Text dadurch schrittweise sinnvoll zu <strong>vervollständigen</strong>.</p>

	</div>
	</div>



<p class="wp-block-paragraph">Wir nutzen <strong>LLMs wie ChatGPT und ähnliche Modelle</strong> heute <strong>praktisch täglich</strong>, und viele können sich ein <strong>Leben ohne sie kaum noch vorstellen</strong>. Die <strong>Handhabung ist dabei erstaunlich einfach</strong>:<br>Wir geben dem LLM <strong>etwas Kontext</strong> in Form eines <strong>Prompts</strong>, und das Modell <strong>vervollständigt</strong> diesen.</p>



<p class="wp-block-paragraph">Stellen wir eine <strong>Frage</strong>, erhalten wir – im Idealfall – eine <strong>passende Antwort</strong>. Dieses Wissen bezieht das LLM aus seinem <strong>Weltwissen</strong>, also aus den <strong>Daten, mit denen es trainiert wurde</strong>.</p>



<p class="wp-block-paragraph"><strong>Fortschrittliche Modelle</strong> nutzen darüber hinaus <strong>Function Calling</strong> oder ähnliche Mechanismen, um sich <strong>zusätzliche Informationen aus externen Quellen</strong>, etwa aus dem <strong>Internet</strong>, zu beschaffen.</p>



<h2 id="wie-bringen-wir-nun-unsere-eigenen-dokumente-ins-spiel" class="wp-block-heading">Wie bringen wir nun unsere eigenen Dokumente ins Spiel?</h2>



<p class="wp-block-paragraph">Für <strong>allgemeines Wissen</strong> funktioniert das bereits sehr gut. Doch wie stellen wir Fragen zu <strong>eigenen Dokumenten</strong> – etwa zu einer <strong>PDF-Datei</strong>?</p>



<p class="wp-block-paragraph">Im Prinzip scheint auch das <strong>ganz einfach</strong> zu sein:<br>Wir <strong>extrahieren den Text</strong> (und gegebenenfalls auch <strong>Bilder und Tabellen</strong>) aus dem Dokument, <strong>kopieren</strong> ihn in das Chatfenster und stellen anschließend unsere <strong>Frage</strong>. Als Antwort erhalten wir – idealerweise – Informationen, die <strong>direkt aus dem Dokument</strong> stammen.</p>



<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">flowchart TD
subgraph A[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c4.png" alt="📄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> PDF-Verarbeitung]
A0[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c4.png" alt="📄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> PDF] --> A1[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f0.png" alt="🧰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Text extrahieren]
end

subgraph B[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2753.png" alt="❓" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Anfrage]
B0[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ac.png" alt="💬" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Nutzerfrage] --> B1[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9fe.png" alt="🧾" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Prompt]
A1 --> B1
end

subgraph C[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2728.png" alt="✨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Generierung]
B1 --> C0[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f916.png" alt="🤖" class="wp-smiley" style="height: 1em; max-height: 1em;" /> LLM]
C0 --> C1[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Antwort]
end</pre></div>



<p class="wp-block-paragraph">So unkompliziert das zunächst klingt, <strong>verbergen sich dahinter jedoch einige grundlegende Probleme</strong>:</p>



<ol class="wp-block-list">
<li>Das <strong>Herauskopieren relevanter Informationen</strong> aus Dokumenten kann bereits beim <strong>Copy-and-Paste</strong> mühsam und fehleranfällig sein.</li>



<li>Wir müssen dem <strong>Modell sehr genau vorgeben</strong>, wie es sich verhalten soll, damit es <strong>kein eigenes Weltwissen beimischt</strong> oder <strong>halluziniert</strong>.</li>



<li>Bei <strong>großen Dokumenten</strong> stoßen wir schnell an die <strong>Grenzen des Kontextfensters</strong> – also an die maximale Textmenge, die ein LLM gleichzeitig verarbeiten kann.</li>



<li>Der Kontext bleibt nur erhalten, weil das Dokument <strong>Teil des Chatverlaufs</strong> ist. Wird es nicht erneut mitgeschickt oder fällt aus dem Kontextfenster, ist es für das LLM <strong>nicht mehr verfügbar</strong>.</li>



<li>Durch die <strong>hohe Anzahl an Tokens</strong> kann dieser Ansatz <strong>sehr schnell teuer</strong> werden.</li>



<li>Zudem können wir auf diese Weise <strong>immer nur einzelne Dokumente</strong> mitgeben – in der Praxis ist relevantes Wissen jedoch häufig auf <strong>Hunderte oder Tausende von Dokumenten</strong> verteilt.</li>
</ol>



<h2 id="retrieval-augmented-generation-rag" class="wp-block-heading">Retrieval-Augmented Generation (RAG)</h2>



<p class="wp-block-paragraph">Die <strong>grundlegende Idee</strong> ist einfach:<br>Zu einer <strong>Frage</strong> werden <strong>relevante Abschnitte aus den vorhandenen Dokumenten</strong> herausgesucht und dem <strong>Prompt als zusätzlicher Kontext</strong> mitgegeben. Das LLM verfügt dadurch über genau die <strong>Informationen</strong>, die es benötigt, um die Frage <strong>dokumentengetreu</strong> zu beantworten.</p>



<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">flowchart TD
subgraph D[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4da.png" alt="📚" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Dokumente vorbereiten]
D0[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c4.png" alt="📄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Dokumente] --> D1[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f0.png" alt="🧰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Inhalte extrahieren]
end

D1 --> K[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4da.png" alt="📚" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Wissensbasis]

Q[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ac.png" alt="💬" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Nutzerfrage] --> R[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50e.png" alt="🔎" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Relevante Inhalte finden]
K --> R
R --> P[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9fe.png" alt="🧾" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Prompt mit Kontext]
P --> L[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f916.png" alt="🤖" class="wp-smiley" style="height: 1em; max-height: 1em;" /> LLM]
L --> A[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Antwort]</pre></div>



<p class="wp-block-paragraph">Wichtig ist dabei: Die Dokumente werden <strong>nicht vollständig</strong>, sondern nur <strong>selektiv</strong> eingebunden – also genau die Textstellen, die für die jeweilige Frage relevant sind.</p>



<p class="wp-block-paragraph">Auf diese Weise lassen sich <strong>mehrere der zuvor beschriebenen Kernprobleme direkt lösen</strong>:<br>Durch die <strong>gezielte Auswahl relevanter Ausschnitte</strong> können Inhalte aus <strong>vielen Dokumenten gleichzeitig</strong> berücksichtigt werden, ohne das <strong>Kontextfenster zu sprengen</strong> oder die <strong>Tokenkosten explodieren</strong> zu lassen.</p>



<h2 id="gute-vorbereitung-ist-alles" class="wp-block-heading">Gute Vorbereitung ist alles</h2>



<p class="wp-block-paragraph">Damit das LLM <strong>schnell und gezielt auf relevante Inhalte</strong> zugreifen kann, müssen die Dokumente <strong>vorab aufbereitet</strong> werden.<br>Zunächst gilt es, die Dokumente in eine <strong>für Maschinen lesbare Form</strong> zu überführen. Anschließend werden die Inhalte in <strong>kleinere Einheiten</strong> aufgeteilt und <strong>indexiert</strong>, sodass ein <strong>schneller Zugriff</strong> möglich ist – vergleichbar mit einer Datenbank.</p>



<h3 id="dokumente-in-eine-lesbare-form-bringen" class="wp-block-heading">Dokumente in eine lesbare Form bringen</h3>



<p class="wp-block-paragraph">Dieser erste Schritt ist <strong>deutlich anspruchsvoller</strong>, als es auf den ersten Blick scheint. Dokumente liegen in der Praxis in den <strong>unterschiedlichsten Formaten</strong> vor: einfache Textdateien, Word-Dokumente, E-Mails, PDFs, Webseiten und vieles mehr.</p>



<p class="wp-block-paragraph">Bei <strong>einfachen Texten, Word-Dateien oder E-Mails</strong> ist die Extraktion meist unproblematisch. Anders sieht es bei <strong>PDFs oder Webseiten</strong> aus. Diese enthalten oft <strong>komplexe Formatierungen</strong>, <strong>Tabellen</strong>, <strong>Bilder</strong>, <strong>Layouts</strong> oder sogar <strong>interaktive Elemente</strong>.</p>



<p class="wp-block-paragraph">Im Idealfall werden <strong>alle relevanten Inhalte vollständig extrahiert</strong>, die <strong>inhaltliche Hierarchie beibehalten</strong> und <strong>Bilder sowie Tabellen</strong> dem jeweils passenden Text zugeordnet. Gerade bei <strong>Webseiten, E-Mails oder PDFs</strong> stellt das jedoch häufig eine <strong>große Herausforderung</strong> dar.</p>



<p class="wp-block-paragraph">Für diese Konvertierung kommen unterschiedliche Ansätze zum Einsatz: von <strong>selbstgebauten Extraktionspipelines</strong> über <strong>Dokumentenkonvertierungslösungen</strong> bis hin zu spezialisierten <strong>Parsern wie Docling</strong>. Je nach Aufbau und Qualität der Quelldokumente kann dieser Schritt <strong>relativ einfach</strong> – oder nahezu ein <strong>unlösbares Problem</strong> sein.</p>



<p class="wp-block-paragraph">Das Ziel ist im optimalen Fall eine <strong>strukturierte, hierarchische Repräsentation der Inhalte</strong>, die als Grundlage für alle weiteren Verarbeitungsschritte dient.</p>



<h3 id="dokumente-in-kleinere-happen-aufteilen" class="wp-block-heading">Dokumente in kleinere Happen aufteilen</h3>



<p class="wp-block-paragraph">Nachdem wir die <strong>Daten in eine einheitliche, lesbare Form</strong> gebracht haben, werden die Dokumente in <strong>kleinere Einheiten</strong> zerlegt – sogenannte <strong>Chunks</strong>.<br>Diese Aufgabe übernimmt ein <strong>Splitter</strong>.</p>



<p class="wp-block-paragraph">Je nach <strong>Art und Struktur des Dokuments</strong> kommen dabei unterschiedliche Strategien zum Einsatz:<br>vom <strong>einfachen Längenschnitt</strong>, über <strong>rekursive Splitter</strong>, bis hin zu Verfahren, die Inhalte <strong>hierarchisch</strong> entlang von Überschriften, Absätzen oder Abschnitten aufteilen.</p>



<p class="wp-block-paragraph">Damit die einzelnen Chunks ihren <strong>inhaltlichen Zusammenhang</strong> nicht verlieren, wird in der Praxis meist ein <strong>Overlap</strong> verwendet. Dabei wird ein <strong>Teil des vorherigen und nachfolgenden Inhalts</strong> in jeden Chunk übernommen, um Kontext zu erhalten.</p>



<p class="wp-block-paragraph">Dieser Schritt ist ein <strong>essenzieller Bestandteil der RAG-Pipeline</strong>, denn die <strong>Chunk-Größe</strong> hat einen maßgeblichen Einfluss auf die <strong>Qualität der Ergebnisse</strong>:</p>



<ul class="wp-block-list">
<li><strong>Zu kleine Chunks</strong> trennen Informationen, die eigentlich zusammengehören.</li>



<li><strong>Zu große Chunks</strong> packen zu viel auf einmal hinein, sodass das Wichtige untergeht.</li>
</ul>



<p class="wp-block-paragraph">Auch der <strong>Overlap</strong> spielt dabei eine entscheidende Rolle. Häufig werden Faustregeln wie <strong>200–800 Tokens Chunk-Größe</strong> bei etwa <strong>10–20 % Overlap</strong> genannt. Diese Werte sind jedoch <strong>keine festen Vorgaben</strong>, sondern hängen stark vom <strong>Dokumenttyp und dem konkreten Anwendungsfall</strong> ab.</p>



<p class="wp-block-paragraph">Bewährt haben sich <strong>Stichproben</strong>, um zu prüfen, ob einzelne Chunks <strong>für sich verständlich</strong> und sinnvoll <strong>in den Gesamtkontext einzuordnen</strong> sind. Diese Prüfung kann <strong>manuell</strong> erfolgen, lässt sich in vielen Fällen aber auch <strong>automatisiert</strong> unterstützen.</p>



<h3 id="bedeutung-statt-woerter-speichern" class="wp-block-heading">Bedeutung statt Wörter speichern</h3>



<p class="wp-block-paragraph">Nun haben wir unsere <strong>lesbaren Häppchen</strong> – diese möchten wir so abspeichern, dass wir sie <strong>später schnell und gezielt wiederfinden</strong> können.<br>Das Ziel ist, zu einem <strong>großen Dokumentenpool Fragen zu stellen</strong> und dabei genau die <strong>relevanten Chunks</strong> zu erhalten.</p>



<p class="wp-block-paragraph">Früher hätte man diese Chunks einfach in einer <strong>klassischen Datenbank</strong> gespeichert und über eine <strong>Volltextsuche</strong> abgefragt – mit, wie wir wissen, oft <strong>mäßigen Ergebnissen</strong>. Die Suche bleibt dabei stark <strong>wortbasiert</strong> und berücksichtigt dabei kaum Bedeutung oder inhaltliche Nähe.</p>



<h4 id="embedding-die-bedeutung-eines-worts" class="wp-block-heading">Embedding &#8211; die Bedeutung eines Worts</h4>



<p class="wp-block-paragraph">Dank moderner <strong>Transformer-Modelle</strong> können wir heute einen <strong>deutlich effektiveren Ansatz</strong> verfolgen:<br>Statt nur den Text zu speichern, speichern wir dessen <strong>Bedeutung</strong>. Dieser Vorgang wird als <strong>Embedding</strong> bezeichnet.</p>



<div class="cnvs-block-alert cnvs-block-alert-1774818349443 is-style-cnvs-block-alert-info" >
	<div class="cnvs-block-alert-inner">
		

<p class="wp-block-paragraph"><strong>LLMs und Embedding-Modelle</strong> basieren beide auf der <strong>Transformer-Technologie</strong>, verfolgen jedoch <strong>unterschiedliche Ziele</strong>.<br>LLMs werden auf <strong>Textvervollständigung</strong> (Next-Token-Prediction) trainiert.<br><strong>Embedding-Modelle</strong> hingegen werden darauf optimiert, <strong>semantische Ähnlichkeit</strong> abzubilden.<br>Typischerweise geschieht dies mithilfe von <strong>Textpaaren</strong> (z. B. Frage/Antwort oder thematisch verwandte Texte). Das Ziel ist, <strong>inhaltlich ähnliche Texte im Embedding-Space nahe beieinander</strong> zu platzieren.</p>

	</div>
	</div>



<p class="wp-block-paragraph">In den <strong>Grundlagen</strong> auf dieser Webseite beschreibe ich die <strong>Technologie hinter Embeddings</strong> ausführlicher. An dieser Stelle fasse ich das <strong>Prinzip bewusst vereinfacht</strong> noch einmal zusammen.</p>



<p class="wp-block-paragraph">Wem das Thema Embeddings geläufig ist, kann diesen Absatz überspringen.</p>



<p class="wp-block-paragraph">Einzelne <strong>Wörter – genauer gesagt Tokens –</strong> werden anhand einer Vielzahl von <strong>Merkmalen</strong> (man könnte auch von <strong>Eigenschaften</strong> sprechen) beschrieben und als <strong>Punkte in einem mehrdimensionalen Raum</strong> abgelegt.</p>



<p class="wp-block-paragraph">Nehmen wir als vereinfachtes Beispiel eine <strong>Katze</strong>. Mit drei Eigenschaften – etwa <em>flauschige Ohren</em>, <em>Fellnase</em> und <em>große Augen</em> – ließe sich eine Katze in einem <strong>dreidimensionalen Raum</strong> darstellen: <strong>eine Dimension pro Eigenschaft</strong>.</p>



<p class="wp-block-paragraph">Erhöhen wir die Anzahl der Dimensionen, können entsprechend <strong>mehr Eigenschaften gleichzeitig</strong> berücksichtigt werden. Mit acht Dimensionen wären es acht Eigenschaften, mit sechzehn entsprechend sechzehn. <strong>Moderne Embedding-Modelle</strong> arbeiten jedoch mit <strong>sehr viel höheren Dimensionalitäten</strong>, zum Beispiel <strong>1.536 Dimensionen</strong>, und können damit eine entsprechend <strong>feingranulare Beschreibung</strong> der Bedeutung eines Tokens abbilden.</p>


	<img
		class="kim-dark-image aligncenter"
		src="https://www.kimagazin.com/wp-content/uploads/8d_light.webp"
		data-light="https://www.kimagazin.com/wp-content/uploads/8d_light.webp"
		data-dark="https://www.kimagazin.com/wp-content/uploads/8d_dark.webp"
		data-height="350"		alt=""
		loading="lazy"
		decoding="async"
	>
	



<div class="cnvs-block-alert cnvs-block-alert-1774818544474 is-style-cnvs-block-alert-info" >
	<div class="cnvs-block-alert-inner">
		

<p class="wp-block-paragraph">Dies ist nicht nur eine Metapher zur besseren visuellen Vorstellung – der Merkmalsraum wird <strong>mathematisch tatsächlich als geometrischer Raum</strong> modelliert, in dem Abstände und Richtungen berechnet werden können.</p>

	</div>
	</div>



<p class="wp-block-paragraph">Wichtig dabei: Die Eigenschaften einzelner Wörter oder Begriffe werden <strong>nicht manuell festgelegt oder beschriftet</strong>. Stattdessen lernt das Modell diese Merkmale <strong>automatisch während des Trainings</strong> auf großen Textmengen. Man spricht hierbei von <strong>latenten Merkmalen</strong>, da sie zwar wirksam sind, für uns Menschen jedoch <strong>nicht direkt interpretierbar</strong>.</p>



<p class="wp-block-paragraph">Das Ziel ist es, <strong>Begriffe mit ähnlicher Bedeutung</strong> im Raum <strong>nahe beieinander</strong> abzubilden.<br>Der <strong>Abstand zwischen ihnen</strong> drückt dabei die <strong>semantische Nähe</strong> aus.</p>



<p class="wp-block-paragraph"><strong>Worte mit ähnlichen Merkmalen</strong> – etwa <strong>Katze</strong>, <strong>Hund</strong> oder <strong>Haustier</strong> – gruppieren sich in einer Region des <strong>Merkmalsraums</strong>, während Begriffe wie <strong>Auto</strong>, <strong>Fahrrad</strong> oder <strong>Lkw</strong> sich in einer anderen Region konzentrieren.</p>


<script src="https://www.kimagazin.com/wp-content/plugins/kimagazin/js/plotly.min.js"></script><div class="plotly-container-full">  <div class="plot-wrapper"><div style="border:2px solid #bbb;padding:.5rem;border-radius:8px;max-width:1280px;margin:2rem auto">
<div id=plotly-embed style=width:100%;height:600px></div>
</div>
<script>document.addEventListener("DOMContentLoaded",(function(){Plotly.newPlot("plotly-embed",[{type:"scatter3d",mode:"markers+text",x:[-3.3,-3,-2.3,-2,0,2,2.3,3,3.3],y:[1,1.2,1.1,1.4,2.2,2,2.3,3,3.3],z:[1,1.1,1.2,1.5,2.3,2,2.2,3,3.2],text:["Hund","Kaninchen","Meerschweinchen","Katze","Transportbox","Fahrrad","Motorrad","Auto","LKW"],textposition:"top center",textfont:{size:16,color:"#999"},marker:{size:12,color:["#e74c3c","#d35400","#f39c12","#c0392b","#7f8c8d","#2ecc71","#1abc9c","#27ae60","#16a085"],opacity:.9,line:{width:1.5,color:"#33333388"}}}],{title:{text:"Embeddings in 3D<br><span style='font-size:14px; color:#999999;'>Bewege die Maus und beobachte wie Merkmale sich im Raum gruppieren!</span>",font:{size:20,color:"#999999"},x:.5,xanchor:"center"},paper_bgcolor:"rgba(0,0,0,0)",plot_bgcolor:"rgba(0,0,0,0)",margin:{l:0,r:0,t:70,b:0},scene:{aspectmode:"data",camera:{eye:{x:-1.6,y:-1.6,z:.8}},xaxis:{title:"",showticklabels:!1,showspikes:!0,color:"#888",gridcolor:"#444",zeroline:!0},yaxis:{title:"",showticklabels:!1,showspikes:!0,color:"#888",gridcolor:"#444",zeroline:!0},zaxis:{title:"",showticklabels:!1,showspikes:!0,color:"#888",gridcolor:"#444",zeroline:!0}}},{responsive:!0,displayModeBar:!1,scrollZoom:!1})}))</script>  </div></div>



<p class="wp-block-paragraph">Alle <strong>Wörter (Tokens)</strong> eines Chunks werden nun <strong>embedded</strong> – das heißt, sie werden in eine <strong>Position in einem mehrdimensionalen Vektorraum</strong> überführt.<br>Das Ergebnis ist ein <strong>numerischer Vektor</strong>, zum Beispiel <em>(0.1, 0.23, …)</em>, mit <strong>einem Zahlenwert pro Dimension</strong>.</p>



<p class="wp-block-paragraph">Verschiedene <strong>Anbieter</strong> stellen heute <strong>unterschiedliche Embedding-Modelle</strong> zur Verfügung, darunter zum Beispiel <strong>E5</strong>, <strong>OpenAI</strong> oder <strong>Cohere</strong>.</p>



<p class="wp-block-paragraph">Betrachten wir einen Chunk mit beispielsweise <strong>500 Tokens</strong>. Würde man jedes Token einzeln als Vektor mit <strong>1.536 Dimensionen</strong> darstellen, ergäbe das pro Chunk <strong>768.000 Zahlenwerte</strong>. Das ist <strong>unhandlich</strong> und lässt sich später nur schwer effizient vergleichen.</p>



<p class="wp-block-paragraph">Deshalb verfolgen wir einen anderen Ansatz:<br><strong>Jeder Chunk wird als Ganzes durch einen einzigen Vektor beschrieben</strong>. Dieser Vektor dient als eine Art <strong>kompakter Fingerabdruck</strong> für den gesamten Inhalt des Chunks.</p>



<h4 id="pooling" class="wp-block-heading">Pooling</h4>



<p class="wp-block-paragraph">Das Verfahren, aus vielen Token-Vektoren einen <strong>einzigen Fingerabdruck für den gesamten Chunk</strong> zu berechnen, nennt man <strong>Pooling</strong>.<br>Dabei gibt es verschiedene Pooling-Strategien, zum Beispiel <strong>Mean Pooling</strong>, <strong>Max Pooling</strong>, <strong>CLS-Token</strong> oder <strong>Weighted Pooling</strong>.</p>



<p class="wp-block-paragraph">Für <strong>RAG-Anwendungen</strong> wird in der Praxis <strong>häufig Mean Pooling</strong> eingesetzt. Dabei wird für jede Dimension der <strong>arithmetische Mittelwert</strong> über alle Token-Vektoren eines Chunks berechnet. Konkret bedeutet das:<br>Jede einzelne Dimension aller Token wird aufsummiert und anschließend durch die <strong>Anzahl der Tokens</strong> geteilt – eine klassische <strong>Mittelwertberechnung</strong>.</p>



<p class="wp-block-paragraph">Durch dieses Verfahren werden die <strong>semantischen Merkmale aller Tokens</strong> eines Chunks zusammengeführt.<br>Erstaunlicherweise liefert diese <strong>einfache Methode</strong> in vielen Anwendungsfällen <strong>stabile und gut vergleichbare Ergebnisse</strong>.</p>



<p class="wp-block-paragraph">Je nach Embedding-Modell ist dieser Pooling-Schritt intern umgesetzt oder explizit auswählbar.</p>



<h4 id="speichern-in-der-datenbank" class="wp-block-heading">Speichern in der Datenbank</h4>



<p class="wp-block-paragraph">Nun können wir den <strong>Chunk-Vektor</strong> gemeinsam mit dem zugehörigen <strong>Text</strong> in einer <strong>Vektordatenbank</strong> speichern.<br>Dadurch lassen sich die Inhalte später <strong>schnell, zuverlässig und semantisch</strong> wiederfinden.</p>



<p class="wp-block-paragraph">Zur Auswahl stehen <strong>verschiedene Vektordatenbanken</strong>, die jeweils ihre <strong>eigenen Vor- und Nachteile</strong> haben. Dazu zählen zum Beispiel <strong>Pinecone</strong>, <strong>Weaviate</strong>, <strong>Qdrant</strong>, <strong>Milvus</strong> oder <strong>ChromaDB</strong>.</p>



<p class="wp-block-paragraph">Für <strong>Tests und Prototypen (MVPs)</strong> eignet sich <strong>ChromaDB</strong> besonders gut, da es <strong>leichtgewichtig</strong>, <strong>einfach aufzusetzen</strong> und lokal nutzbar ist.<br>Für den <strong>produktiven Einsatz</strong> greifen Unternehmen hingegen häufiger zu <strong>Pinecone</strong>, <strong>Weaviate</strong> oder <strong>Qdrant</strong>, da diese Lösungen besser auf <strong>Skalierbarkeit</strong>, <strong>Stabilität</strong> und <strong>Betrieb in Produktionsumgebungen</strong> ausgelegt sind.</p>



<h2 id="frage-deine-ki" class="wp-block-heading">Frage deine KI</h2>



<p class="wp-block-paragraph"><strong>RAG-Systeme</strong> sind in Unternehmen oft der <strong>erste Berührungspunkt mit KI</strong>. Sie lassen sich <strong>vergleichsweise einfach implementieren</strong> und liefern schnell einen <strong>konkreten, messbaren Mehrwert</strong>.</p>



<p class="wp-block-paragraph">Für <strong>Mitarbeitende</strong> ist das besonders praktisch, um Fragen zu <strong>internen Richtlinien</strong>, <strong>Prozessen</strong> oder dem <strong>unternehmensweiten Wissenspool</strong> zu stellen. Gleichzeitig profitieren auch <strong>Kundinnen und Kunden</strong>, etwa bei Fragen zu <strong>Öffnungszeiten</strong>, <strong>Produkten</strong> oder <strong>Services</strong>.</p>



<p class="wp-block-paragraph">In der Praxis erfolgt die Interaktion häufig über eine <strong>Chatoberfläche</strong>, die an bekannte KI-Systeme erinnert. Alternativ wird das System direkt in eine <strong>bestehende Infrastruktur</strong> integriert, zum Beispiel in <strong>Microsoft Teams</strong> oder ähnliche Kollaborationstools.</p>



<p class="wp-block-paragraph">Dabei gilt: <strong>Je unauffälliger und natürlicher die Integration</strong>, desto <strong>besser wird KI von den Menschen angenommen</strong>.</p>



<h3 id="wie-findet-rag-die-relevanten-chunks" class="wp-block-heading">Wie findet RAG die relevanten Chunks?</h3>



<p class="wp-block-paragraph">In der Praxis stellt ein <strong>Nutzer</strong> eine Frage, zum Beispiel: <em>„Wie sind die Öffnungszeiten?“</em><br>Nun ist es Aufgabe des <strong>RAG-Systems</strong>, auf Basis dieser Anfrage die <strong>relevanten Chunks</strong> zu finden und daraus eine <strong>möglichst passende Antwort</strong> zu generieren.</p>



<p class="wp-block-paragraph">Der Ablauf ist dabei sehr ähnlich zu dem Prozess, den wir bereits beim <strong>Embedding der Dokumente</strong> kennengelernt haben:</p>



<ol class="wp-block-list">
<li>Die <strong>Frage des Nutzers</strong> wird zunächst in <strong>Tokens</strong> zerlegt.</li>



<li>Anschließend wird die <strong>gesamte Frage embedded</strong> und – je nach Modell – <strong>gepoolt</strong>. Dadurch erhält sie eine <strong>Position im Embedding Space</strong>, also im <strong>mehrdimensionalen latenten Vektorraum</strong>.</li>



<li>Die <strong>Chunks, die im Vektorraum am nächsten</strong> zu dieser Frage liegen, sind diejenigen, die uns interessieren.</li>
</ol>



<p class="wp-block-paragraph">Ganz wichtig dabei ist, dass für das <strong>Embedding der Chunks</strong> und für das <strong>Embedding der Nutzerfrage</strong> <strong>dasselbe Embedding-Modell</strong> und <strong>dieselben Parameter</strong> verwendet werden.</p>



<p class="wp-block-paragraph">Andernfalls liegen Frage und Dokumente <strong>in unterschiedlichen Vektorräumen</strong> – sie „sprechen“ dann <strong>nicht dieselbe Sprache</strong> und lassen sich <strong>nicht sinnvoll miteinander vergleichen</strong>.</p>



<h4 id="wie-finden-wir-heraus-welche-chunks-am-naechsten-zu-unserer-frage-sind" class="wp-block-heading">Wie finden wir heraus, welche Chunks am nächsten zu unserer Frage sind?</h4>



<p class="wp-block-paragraph">Dazu messen wir die <strong>räumliche Distanz</strong> zwischen dem <strong>Vektor der Nutzerfrage</strong> und den <strong>Vektoren der gespeicherten Chunks</strong>.<br>Chunks mit dem <strong>geringsten Abstand</strong> gelten als <strong>semantisch am ähnlichsten</strong> und werden für die Beantwortung der Frage herangezogen.</p>



<p class="wp-block-paragraph">Wie man den <strong>geometrischen Abstand</strong> zwischen Vektoren misst, habe ich in den <strong>Grundlagen</strong> auf dieser Webseite bereits ausführlich erklärt.<br>Ich greife den Punkt hier <strong>noch einmal kurz auf</strong>, um den Zusammenhang klarzumachen.</p>



<h4 id="geometrische-naehe-im-embedding-raum" class="wp-block-heading">Geometrische Nähe im Embedding-Raum</h4>



<p class="wp-block-paragraph">Grundlegend gibt es drei Möglichkeiten, die räumliche Nähe zu messen:</p>



<p class="wp-block-paragraph">1) <strong>Euklidische Distanz</strong><br>Dabei wird der geometrische Abstand zwischen zwei Vektoren über alle Dimensionen berechnet.<br>Anschaulich entspricht das der „geraden Linie“ zwischen zwei Punkten im Vektorraum.</p>



<div class="cnvs-block-alert cnvs-block-alert-1774818817945 is-style-cnvs-block-alert-info" >
	<div class="cnvs-block-alert-inner">
		

<p class="wp-block-paragraph">Für alle, die es mathematisch mögen:</p>



<p class="wp-block-paragraph">Die euklidische Distanz ist einfach die Länge der Geraden zwischen zwei Punkten, berechnet nach dem Satz des Pythagoras.</p>



<p class="wp-block-paragraph">Als Beispiel gilt für 3 Dimensionen:</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>d(\mathbf{x}, \mathbf{y}) = \sqrt{(x_1 - y_1)^2 + (x_2 - y_2)^2 + (x_3 - y_3)^2}</pre></div>



<p class="wp-block-paragraph">In der allgemeinen Form für (n) Dimensionen schreibt man kompakter:</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>d(\mathbf{x}, \mathbf{y}) = \sqrt{\sum_{i=1}^{n} (x_i - y_i)^2}</pre></div>

	</div>
	</div>



<p class="wp-block-paragraph">2) <strong>Skalares Produkt (Dot-Produkt)</strong><br>Die Ähnlichkeit von Wörtern lässt sich auch über den Winkel und die Länge der Vektoren ihrer Embeddings verstehen.<br>Man kann sich das so vorstellen: Je kleiner der Winkel zwischen den Vektoren zweier Wörter ist, desto ähnlicher sind ihre Bedeutungen.</p>



<div class="cnvs-block-alert cnvs-block-alert-1774819249018 is-style-cnvs-block-alert-info" >
	<div class="cnvs-block-alert-inner">
		

<p class="wp-block-paragraph">Für alle, die es wieder mathematisch mögen:</p>



<p class="wp-block-paragraph">Man multipliziert die einzelnen Komponenten (Hadamard-Produkt) und summiert anschließend die Ergebnisse.<br>So entsteht ein einzelner Wert, der die semantische Ähnlichkeit ausdrückt.</p>



<p class="wp-block-paragraph"><strong>negativ</strong> → eher gegensätzlich</p>



<p class="wp-block-paragraph">nahe <strong>0</strong> → kaum Ähnlichkeit</p>



<p class="wp-block-paragraph"><strong>positiv</strong> → semantisch ähnlich</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\mathbf{x} \cdot \mathbf{y} = \sum_{i=1}^{n} x_i , y_i</pre></div>

	</div>
	</div>



<p class="wp-block-paragraph">3) <strong>Kosinus-Ähnlichkeit</strong></p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img  fetchpriority="high"  decoding="async"  width="1024"  height="483"  src="https://www.kimagazin.com/wp-content/uploads/cos_light-1024x483.webp"  alt=""  class="wp-image-2443"  style="width:auto;height:200px"  srcset="https://www.kimagazin.com/wp-content/uploads/cos_light-1024x483.webp 1024w, https://www.kimagazin.com/wp-content/uploads/cos_light-300x141.webp 300w, https://www.kimagazin.com/wp-content/uploads/cos_light-768x362.webp 768w, https://www.kimagazin.com/wp-content/uploads/cos_light-380x179.webp 380w, https://www.kimagazin.com/wp-content/uploads/cos_light-550x259.webp 550w, https://www.kimagazin.com/wp-content/uploads/cos_light-800x377.webp 800w, https://www.kimagazin.com/wp-content/uploads/cos_light-1160x547.webp 1160w, https://www.kimagazin.com/wp-content/uploads/cos_light-80x38.webp 80w, https://www.kimagazin.com/wp-content/uploads/cos_light.webp 1536w"  sizes="(max-width: 1024px) 100vw, 1024px" ></figure>
</div>


<p class="wp-block-paragraph">Die Kosinus-Ähnlichkeit geht noch einen Schritt weiter und ist ein <strong>normalisiertes Skalarprodukt</strong>.<br>Das bedeutet: Es wird nur der <strong>Winkel</strong> zwischen den Vektoren betrachtet, unabhängig von ihrer Länge.<br>Das Ergebnis liegt immer zwischen <strong>–1</strong> und <strong>1</strong>.<br>Wie auch bei den anderen Verfahren fließen alle Dimensionen der Embeddings in die Berechnung ein.</p>



<div class="cnvs-block-alert cnvs-block-alert-1774819583988 is-style-cnvs-block-alert-info" >
	<div class="cnvs-block-alert-inner">
		

<p class="wp-block-paragraph">Für alle Matheliebhaber:</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>cos(\theta) = \frac{ \vec{A} \cdot \vec{B} }{ | \vec{A} | \cdot | \vec{B} | }</pre></div>



<p class="wp-block-paragraph">Die Formel misst, wie ähnlich zwei <strong>Wort-Embeddings</strong> im semantischen Raum ausgerichtet sind.</p>



<ul class="wp-block-list">
<li>Im Zähler steht ihr <strong>Skalarprodukt</strong> – also wie stark sie in die gleiche Richtung zeigen.</li>



<li>Im Nenner das Produkt ihrer <strong>Längen</strong> – wodurch die Werte normiert werden.</li>
</ul>



<p class="wp-block-paragraph">Das Ergebnis liegt zwischen <strong>–1</strong> und <strong>1</strong>:</p>

	</div>
	</div>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Verfahren</th><th>Idee</th><th>Wertebereich</th><th>Typischer Einsatz</th></tr></thead><tbody><tr><td><strong>Euklidische Distanz</strong></td><td>Geometrischer Abstand im Raum</td><td>0 → ∞</td><td>Clustering, Abstandsmaße</td></tr><tr><td><strong>Skalares Produkt</strong></td><td>Berücksichtigt Winkel und Vektorlängen</td><td>–∞ → +∞</td><td>Attention, Ranking, Scores</td></tr><tr><td><strong>Kosinus-Ähnlichkeit</strong></td><td>Winkel zwischen Vektoren (normiert)</td><td>–1 → +1</td><td>Semantische Suche, Retrieval</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">In vielen RAG-Systemen lässt sich eines dieser Distanz- bzw. Ähnlichkeitsverfahren konfigurieren.</p>



<p class="wp-block-paragraph">In der Praxis werden Embedding-Vektoren oft normalisiert, sodass ihre Länge keine Rolle mehr spielt und beim Vergleich nur noch die inhaltliche Richtung zählt.</p>



<h3 id="nur-die-besten-kommen-in-die-auswahl" class="wp-block-heading">Nur die besten kommen in die Auswahl</h3>



<p class="wp-block-paragraph">In der Praxis übergeben wir der <strong>Vektordatenbank</strong> die <strong>Nutzerfrage</strong> (als Embedding) sowie die <strong>gewünschte Anzahl an Treffern</strong> (<em>k</em>).</p>



<p class="wp-block-paragraph">Die Vektordatenbank berechnet daraufhin, welche <strong>Chunks der Anfrage semantisch am nächsten</strong> liegen, sortiert sie nach <strong>Ähnlichkeit</strong> und liefert die <strong>Top-k relevantesten Chunks</strong> zurück.</p>



<h3 id="anfrage-an-das-llm" class="wp-block-heading">Anfrage an das LLM</h3>



<p class="wp-block-paragraph">Die Anfrage an das LLM erfolgt in Form eines <strong>Prompts</strong>. Dabei werden die <strong>System-Anweisung</strong>, die <strong>relevanten Chunks</strong> sowie die <strong>Nutzeranfrage</strong> zu einem gemeinsamen Kontext zusammengeführt und in <strong>einer Anfrage</strong> an das LLM gesendet.</p>



<p class="wp-block-paragraph">In der Praxis wird die <strong>System-Anweisung</strong> häufig <strong>auf Englisch</strong> formuliert – selbst dann, wenn der eigentliche Kontext und die Nutzerfrage <strong>deutsch</strong> sind. Der Grund dafür ist, dass die <strong>Stabilität und Zuverlässigkeit von Instruktionen</strong> bei den meisten LLMs in <strong>englischer Sprache</strong> höher ist.</p>



<pre class="wp-block-code"><code>{
  "messages": &#091;
    {
      "role": "system",
      "content": "You are a helpful assistant. Answer only based on the provided context. If the answer is not contained in the context, say that you do not know."
    },
    {
      "role": "user",
      "content": "Context:\n---\n&#091;Chunk 1]\n&#091;Chunk 2]\n&#091;Chunk N]\n---\n\nQuestion:\nWie sind die Öffnungszeiten?"
    }
  ]
}</code></pre>



<p class="wp-block-paragraph">Mit dieser Anweisung vervollständigt das LLM die <strong>Nutzeranfrage</strong> gemeinsam mit dem bereitgestellten <strong>Kontext</strong> zu einer <strong>sinnvollen, zusammenhängenden Antwort</strong>.</p>



<pre class="wp-block-code"><code>{
  "role": "assistant",
  "content": "Unsere Öffnungszeiten sind Montag bis Freitag von 08:00 bis 17:00 Uhr."
}</code></pre>



<p class="wp-block-paragraph">In vielen Systemen werden zusätzlich die verwendeten Textstellen referenziert oder mitgeliefert, um Antworten nachvollziehbar zu machen.</p>



<p class="wp-block-paragraph">Am Ende dieses Prozesses steht ein <strong>funktionsfähiges RAG-System</strong>, das Antworten auf Grundlage der hochgeladenen Dokumente generiert.</p>



<h3 id="die-rag-pipeline-im-ueberblick" class="wp-block-heading">Die RAG-Pipeline im Überblick</h3>



<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">flowchart TD

%% INDEXING
subgraph A[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4da.png" alt="📚" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Indexing]
A0[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c4.png" alt="📄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Dokumente] --> A1[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2702.png" alt="✂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Chunking]
A1 --> A2[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f524.png" alt="🔤" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Tokenisierung]
A2 --> A3[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Transformer Encoder]
A3 --> A4[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e9.png" alt="🧩" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Token Vektoren]
A4 --> A5[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ca.png" alt="📊" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Pooling z.B.: Mean]
A5 --> A6[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4d0.png" alt="📐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Chunk Vektor]
A6 --> A7[(<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f5c4.png" alt="🗄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> VectorDB)]
end

%% QUERY
subgraph B[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2753.png" alt="❓" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Query]
B0[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ac.png" alt="💬" class="wp-smiley" style="height: 1em; max-height: 1em;" /> User Query] --> B1[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f524.png" alt="🔤" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Tokenisierung]
B1 --> B2[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Transformer Encoder]
B2 --> B3[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e9.png" alt="🧩" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Token Vektoren]
B3 --> B4[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ca.png" alt="📊" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Pooling z.B.: Mean]
B4 --> B5[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4d0.png" alt="📐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Query Vektor]
end

%% RETRIEVAL
subgraph C[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50d.png" alt="🔍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Retrieval]
B5 --> C1[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50e.png" alt="🔎" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Similarity Search]
A7 --> C1
C1 --> C2[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4cc.png" alt="📌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Top-k Chunks]
end

%% GENERATION
subgraph D[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2728.png" alt="✨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Generation]
D0[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9fe.png" alt="🧾" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Prompt + Kontext + Frage] --> D1[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f916.png" alt="🤖" class="wp-smiley" style="height: 1em; max-height: 1em;" /> LLM]
D1 --> D2[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Antwort]
end

C2 --> D0</pre></div>



<p class="wp-block-paragraph">Unsere <strong>RAG-Pipeline</strong> ist bereits <strong>voll funktionsfähig</strong> – dennoch lässt sie sich weiter <strong>verbessern</strong>.</p>



<p class="wp-block-paragraph">Die Antworten basieren primär auf <strong>semantischer Ähnlichkeit</strong>. Das ist der große Fortschritt – und in den meisten Fällen genau richtig. Manchmal möchte man jedoch ganz gezielt <strong>exakte Details</strong> finden, zum Beispiel <strong>Nummern</strong>, <strong>IDs</strong> oder <strong>konkrete Fehlermeldungen</strong>. In solchen Fällen ist ein rein semantischer Ansatz nicht immer die beste Wahl.</p>



<h3 id="gespuer-fuer-details-bm25" class="wp-block-heading">Gespür für Details &#8211; BM25</h3>



<p class="wp-block-paragraph">Hier kann ein <strong>klassisches Retrieval-Verfahren</strong> helfen: <strong>BM25</strong> (<em>Best Matching 25</em>).<br>BM25 basiert auf <strong>Wortstatistiken</strong> und kommt <strong>ohne KI</strong> aus. Die Grundidee ist einfach: <strong>Seltene Wörter</strong> sind oft besonders aussagekräftig – vor allem dann, wenn sie in wenigen, aber relevanten Textstellen auftauchen (z. B. eine eindeutige Fehlermeldung oder ein spezieller Fachbegriff).</p>



<p class="wp-block-paragraph">BM25 nutzt dabei unter anderem folgende Größen:</p>



<ul class="wp-block-list">
<li><strong>Term Frequency (TF)</strong>: Wie oft kommt ein Wort in einem Chunk vor?</li>



<li><strong>Document Frequency (DF)</strong>: In wie vielen Chunks kommt dieses Wort insgesamt vor?</li>



<li><strong>Dokumentlänge</strong>: Wie lang ist der Chunk im Vergleich zu anderen?</li>
</ul>



<p class="wp-block-paragraph">In Kombination mit <strong>Embeddings</strong> entsteht so ein <strong>robustes Hybrid-Retrieval</strong>:<br>Embeddings liefern <strong>Textverständnis</strong> und finden auch ähnliche Formulierungen, während BM25 besonders gut bei <strong>exakten Begriffen</strong>, <strong>Fehlercodes</strong> und <strong>Fachtermini</strong> ist.</p>



<p class="wp-block-paragraph">Beim Chunking der Dokumente werden die Chunks sowohl in einen BM25-Textindex aufgenommen als auch parallel als Embeddings in der Vektordatenbank gespeichert.</p>



<h3 id="hybrid-rag" class="wp-block-heading">Hybrid RAG</h3>



<p class="wp-block-paragraph">Beim <strong>hybriden RAG</strong> werden für eine Nutzeranfrage <strong>zwei Suchen parallel</strong> ausgeführt: eine <strong>semantische Vektorsuche</strong> auf Basis von <strong>Embeddings</strong> und eine <strong>statistische, wortbasierte Suche</strong> mit <strong>BM25</strong>.<br>Beide Verfahren liefern jeweils ihre <strong>Top-k Chunks</strong>, die anschließend zusammengeführt und weiterverarbeitet werden.</p>



<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">flowchart TD

%% INDEXING
subgraph A[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4da.png" alt="📚" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Indexing]
A0[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c4.png" alt="📄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Dokumente] --> A1[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2702.png" alt="✂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Chunking]
A1 --> A2[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Embedding Model]
A2 --> A3[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4d0.png" alt="📐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Chunk Embeddings]
A3 --> A4[(<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f5c4.png" alt="🗄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Vector Database)]
A1 --> A5[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f524.png" alt="🔤" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Tokenization]
A5 --> A6[(<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f5c2.png" alt="🗂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> BM25 Text Index)]
end

%% QUERY
subgraph B[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2753.png" alt="❓" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Query]
B0[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ac.png" alt="💬" class="wp-smiley" style="height: 1em; max-height: 1em;" /> User Query] --> B1[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Embedding Model]
B1 --> B2[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4d0.png" alt="📐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Query Embedding]
B0 --> B3[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f524.png" alt="🔤" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Tokenization]
end

%% RETRIEVAL
subgraph C[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50d.png" alt="🔍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Retrieval]
B2 --> C1[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50e.png" alt="🔎" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Vector Search]
A4 --> C1
C1 --> C2[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4cc.png" alt="📌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Top-k Vector]

B3 --> C3[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50e.png" alt="🔎" class="wp-smiley" style="height: 1em; max-height: 1em;" /> BM25 Retrieval]
A6 --> C3
C3 --> C4[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4cc.png" alt="📌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Top-k BM25]

C2 --> C5[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f500.png" alt="🔀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Merge / Re-ranking]
C4 --> C5
C5 --> C6[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4cc.png" alt="📌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Final Top-k Chunks]

end

%% GENERATION
subgraph D[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2728.png" alt="✨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Generation]
C6 --> D0[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9fe.png" alt="🧾" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Prompt: Context + Question]
D0 --> D1[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f916.png" alt="🤖" class="wp-smiley" style="height: 1em; max-height: 1em;" /> LLM]
D1 --> D2[<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Answer]
end</pre></div>



<p class="wp-block-paragraph">Hier kommt im <strong>Retriever</strong> eine zusätzliche Komponente ins Spiel: <strong>Merge / Re-Ranking</strong>.<br>Denn wir erhalten zwei getrennte Ergebnislisten – einmal aus der <strong>Vektorsuche</strong> und einmal aus <strong>BM25</strong>. Diese Kandidaten müssen wir <strong>zusammenführen</strong>, nach <strong>Relevanz sortieren</strong> und anschließend auf ein <strong>finales Top-k</strong> begrenzen.</p>



<p class="wp-block-paragraph">Dafür gibt es unterschiedliche Strategien, zum Beispiel:</p>



<ul class="wp-block-list">
<li><strong>score-basiert</strong> (Scores werden normalisiert und kombiniert)</li>



<li><strong>ranking-basiert</strong> (Ränge werden zusammengeführt, z. B. über Rank-Fusion)</li>
</ul>



<p class="wp-block-paragraph">Besonders gute Ergebnisse liefern <strong>Transformer-Modelle</strong> als Re-Ranker. In der Praxis sind zwei Ansätze verbreitet:</p>



<ol class="wp-block-list">
<li><strong>Cross-Encoder Re-Ranker</strong><br>Ein Modell, das <strong>Query und Chunk gemeinsam</strong> bewertet und daraus einen <strong>Relevanzscore</strong> ableitet. Solche Modelle sind typischerweise <strong>für Relevanzbewertung</strong> (Ranking) optimiert.</li>



<li><strong>LLM Re-Ranking</strong> (z. B. per GPT)<br>Ein klassisches LLM, das per Prompt dazu angeleitet wird, die Kandidaten-Chunks nach <strong>Passgenauigkeit zur Frage</strong> zu sortieren oder die <strong>besten k</strong> auszuwählen.</li>
</ol>



<p class="wp-block-paragraph">Anschließend gehen die <strong>Nutzeranfrage</strong> und die <strong>passendsten Chunks</strong> in die <strong>Generation-Pipeline</strong>, wo das LLM daraus eine <strong>möglichst passende und informative Antwort</strong> auf die Frage des Nutzers erzeugt.</p>



<h3 id="millionen-von-vektoren-hierarchical-navigable-small-world-hnsw" class="wp-block-heading">Millionen von Vektoren? – Hierarchical Navigable Small World (HNSW)</h3>



<p class="wp-block-paragraph">Spätestens bei großen RAG-Systemen stellt sich die Frage, wie sich <strong>Millionen multidimensionaler Vektoren</strong> in akzeptabler Zeit durchsuchen lassen. Ein exakter Vergleich aller Vektoren wäre hier zu langsam.</p>



<p class="wp-block-paragraph">In der Praxis kommen daher <strong>approximative Ähnlichkeitssuchen</strong> zum Einsatz – Verfahren, die sich schrittweise an die relevantesten Vektoren annähern.<br>Ein häufig verwendeter Ansatz ist <strong>HNSW (Hierarchical Navigable Small World)</strong>, der von vielen Vektordatenbanken eingesetzt wird.</p>



<p class="wp-block-paragraph">Das Prinzip lässt sich gut mit einem <strong>Straßennetz</strong> vergleichen:<br>Vektoren werden in mehreren <strong>Hierarchieebenen</strong> organisiert. Die obersten Ebenen sind sehr <strong>dünn besetzt</strong> und entsprechen gewissermaßen <strong>Autobahnen</strong>, über die man schnell große Distanzen zurücklegt. Die darunterliegenden Ebenen werden zunehmend <strong>dichter</strong> und bilden feinere lokale Verbindungen ab – vergleichbar mit Landstraßen und Nebenstraßen.</p>



<p class="wp-block-paragraph">Die Suche beginnt immer in der <strong>obersten Ebene</strong>. Dort wird der Vektor gesucht, der der Anfrage am ähnlichsten erscheint. Von diesem Punkt aus wechselt der Algorithmus in die nächsttiefere, dichter vernetzte Ebene und setzt die Suche fort. Dieser Vorgang wiederholt sich Ebene für Ebene, bis die unterste und detaillierteste Ebene erreicht ist.</p>



<p class="wp-block-paragraph">Auf diese Weise nähert sich die Suche gezielt dem Zielvektor, ohne alle Vektoren vergleichen zu müssen.<br>Das ermöglicht eine <strong>sehr schnelle Ähnlichkeitssuche</strong>, insbesondere bei großen Vektormengen, bei gleichzeitig <strong>hoher Trefferqualität</strong>.</p>



<h2 id="grenzen-von-rag" class="wp-block-heading">Grenzen von RAG</h2>



<p class="wp-block-paragraph">Moderne LLMs machen es erstmals möglich, <strong>intelligente Frage-Antwort-Systeme</strong> auf Basis bestehender Dokumente zu realisieren. Dennoch sollten bei RAG-Systemen einige <strong>grundlegende Einschränkungen</strong> berücksichtigt werden.</p>



<ol class="wp-block-list">
<li><strong>Datenqualität ist entscheidend</strong><br>RAG kann nur mit den Informationen arbeiten, die tatsächlich extrahiert wurden. Gerade bei komplexen Formaten wie <strong>PDFs, Webseiten oder E-Mails</strong> ist die zuverlässige Extraktion von Text, Struktur und Kontext häufig eine große Herausforderung.</li>



<li><strong>Verlust von Kontext durch Chunking</strong><br>Durch die Aufteilung von Dokumenten in einzelne Chunks können <strong>Zusammenhänge verloren gehen</strong>. Aufgaben, die ein <strong>globales Verständnis</strong> erfordern – etwa vollständige Zusammenfassungen oder Querverweise über mehrere Abschnitte hinweg – sind dadurch nur eingeschränkt möglich.</li>



<li><strong>Halluzinationen sind nicht vollständig ausgeschlossen</strong><br>RAG reduziert Halluzinationen deutlich, verhindert sie jedoch nicht vollständig. Findet das System keine passenden Inhalte zur Anfrage oder sind die bereitgestellten Chunks unklar, kann das LLM weiterhin <strong>plausibel klingende, aber falsche Antworten</strong> erzeugen.</li>



<li><strong>Begrenzte Nachvollziehbarkeit</strong><br>Ohne zusätzliche Maßnahmen ist oft nicht transparent, <strong>auf welchen Textstellen</strong> eine Antwort basiert. In der Praxis ist es daher sinnvoll, <strong>Quellen, Textausschnitte oder Positionsangaben</strong> mitzuliefern, um Ergebnisse überprüfbar zu machen.</li>
</ol>
<ul class="shariff-buttons theme-round orientation-horizontal buttonsize-medium"><li class="shariff-button facebook shariff-nocustomcolor" style="background-color:#4273c8"><a href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.kimagazin.com%2Frag-praxis-ki-dokumentennutzung%2F" title="Bei Facebook teilen" aria-label="Bei Facebook teilen" role="button" rel="nofollow" class="shariff-link" style="; background-color:#3b5998; color:#fff" target="_blank"><span class="shariff-icon" style=""><svg width="32px" height="20px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 32"><path fill="#3b5998" d="M17.1 0.2v4.7h-2.8q-1.5 0-2.1 0.6t-0.5 1.9v3.4h5.2l-0.7 5.3h-4.5v13.6h-5.5v-13.6h-4.5v-5.3h4.5v-3.9q0-3.3 1.9-5.2t5-1.8q2.6 0 4.1 0.2z"/></svg></span></a></li><li class="shariff-button twitter shariff-nocustomcolor" style="background-color:#595959"><a href="https://twitter.com/share?url=https%3A%2F%2Fwww.kimagazin.com%2Frag-praxis-ki-dokumentennutzung%2F&text=RAG%20in%20der%20Praxis%3A%20KI-gest%C3%BCtzte%20Dokumentennutzung" title="Bei X teilen" aria-label="Bei X teilen" role="button" rel="noopener nofollow" class="shariff-link" style="; background-color:#000; color:#fff" target="_blank"><span class="shariff-icon" style=""><svg width="32px" height="20px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#000" d="M14.258 10.152L23.176 0h-2.113l-7.747 8.813L7.133 0H0l9.352 13.328L0 23.973h2.113l8.176-9.309 6.531 9.309h7.133zm-2.895 3.293l-.949-1.328L2.875 1.56h3.246l6.086 8.523.945 1.328 7.91 11.078h-3.246zm0 0"/></svg></span></a></li><li class="shariff-button linkedin shariff-nocustomcolor" style="background-color:#1488bf"><a href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fwww.kimagazin.com%2Frag-praxis-ki-dokumentennutzung%2F" title="Bei LinkedIn teilen" aria-label="Bei LinkedIn teilen" role="button" rel="noopener nofollow" class="shariff-link" style="; background-color:#0077b5; color:#fff" target="_blank"><span class="shariff-icon" style=""><svg width="32px" height="20px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 27 32"><path fill="#0077b5" d="M6.2 11.2v17.7h-5.9v-17.7h5.9zM6.6 5.7q0 1.3-0.9 2.2t-2.4 0.9h0q-1.5 0-2.4-0.9t-0.9-2.2 0.9-2.2 2.4-0.9 2.4 0.9 0.9 2.2zM27.4 18.7v10.1h-5.9v-9.5q0-1.9-0.7-2.9t-2.3-1.1q-1.1 0-1.9 0.6t-1.2 1.5q-0.2 0.5-0.2 1.4v9.9h-5.9q0-7.1 0-11.6t0-5.3l0-0.9h5.9v2.6h0q0.4-0.6 0.7-1t1-0.9 1.6-0.8 2-0.3q3 0 4.9 2t1.9 6z"/></svg></span></a></li><li class="shariff-button whatsapp shariff-nocustomcolor" style="background-color:#5cbe4a"><a href="https://api.whatsapp.com/send?text=https%3A%2F%2Fwww.kimagazin.com%2Frag-praxis-ki-dokumentennutzung%2F%20RAG%20in%20der%20Praxis%3A%20KI-gest%C3%BCtzte%20Dokumentennutzung" title="Bei Whatsapp teilen" aria-label="Bei Whatsapp teilen" role="button" rel="noopener nofollow" class="shariff-link" style="; background-color:#34af23; color:#fff" target="_blank"><span class="shariff-icon" style=""><svg width="32px" height="20px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path fill="#34af23" d="M17.6 17.4q0.2 0 1.7 0.8t1.6 0.9q0 0.1 0 0.3 0 0.6-0.3 1.4-0.3 0.7-1.3 1.2t-1.8 0.5q-1 0-3.4-1.1-1.7-0.8-3-2.1t-2.6-3.3q-1.3-1.9-1.3-3.5v-0.1q0.1-1.6 1.3-2.8 0.4-0.4 0.9-0.4 0.1 0 0.3 0t0.3 0q0.3 0 0.5 0.1t0.3 0.5q0.1 0.4 0.6 1.6t0.4 1.3q0 0.4-0.6 1t-0.6 0.8q0 0.1 0.1 0.3 0.6 1.3 1.8 2.4 1 0.9 2.7 1.8 0.2 0.1 0.4 0.1 0.3 0 1-0.9t0.9-0.9zM14 26.9q2.3 0 4.3-0.9t3.6-2.4 2.4-3.6 0.9-4.3-0.9-4.3-2.4-3.6-3.6-2.4-4.3-0.9-4.3 0.9-3.6 2.4-2.4 3.6-0.9 4.3q0 3.6 2.1 6.6l-1.4 4.2 4.3-1.4q2.8 1.9 6.2 1.9zM14 2.2q2.7 0 5.2 1.1t4.3 2.9 2.9 4.3 1.1 5.2-1.1 5.2-2.9 4.3-4.3 2.9-5.2 1.1q-3.5 0-6.5-1.7l-7.4 2.4 2.4-7.2q-1.9-3.2-1.9-6.9 0-2.7 1.1-5.2t2.9-4.3 4.3-2.9 5.2-1.1z"/></svg></span></a></li><li class="shariff-button mailto shariff-nocustomcolor" style="background-color:#a8a8a8"><a href="mailto:?body=https%3A%2F%2Fwww.kimagazin.com%2Frag-praxis-ki-dokumentennutzung%2F&subject=RAG%20in%20der%20Praxis%3A%20KI-gest%C3%BCtzte%20Dokumentennutzung" title="Per E-Mail versenden" aria-label="Per E-Mail versenden" role="button" rel="noopener nofollow" class="shariff-link" style="; background-color:#999; color:#fff"><span class="shariff-icon" style=""><svg width="32px" height="20px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path fill="#999" d="M32 12.7v14.2q0 1.2-0.8 2t-2 0.9h-26.3q-1.2 0-2-0.9t-0.8-2v-14.2q0.8 0.9 1.8 1.6 6.5 4.4 8.9 6.1 1 0.8 1.6 1.2t1.7 0.9 2 0.4h0.1q0.9 0 2-0.4t1.7-0.9 1.6-1.2q3-2.2 8.9-6.1 1-0.7 1.8-1.6zM32 7.4q0 1.4-0.9 2.7t-2.2 2.2q-6.7 4.7-8.4 5.8-0.2 0.1-0.7 0.5t-1 0.7-0.9 0.6-1.1 0.5-0.9 0.2h-0.1q-0.4 0-0.9-0.2t-1.1-0.5-0.9-0.6-1-0.7-0.7-0.5q-1.6-1.1-4.7-3.2t-3.6-2.6q-1.1-0.7-2.1-2t-1-2.5q0-1.4 0.7-2.3t2.1-0.9h26.3q1.2 0 2 0.8t0.9 2z"/></svg></span></a></li></ul></div>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>KI lokal betreiben: Multimodale Sprach- und Bildmodelle auf eigener Hardware</title>
		<link>https://www.kimagazin.com/lokale-ki-modelle-multimodal/</link>
		
		<dc:creator><![CDATA[Oskar Kohler]]></dc:creator>
		<pubDate>Fri, 20 Mar 2026 09:14:04 +0000</pubDate>
				<category><![CDATA[Durchblick]]></category>
		<category><![CDATA[Playbooks]]></category>
		<guid isPermaLink="false">https://www.kimagazin.com/?p=2325</guid>

					<description><![CDATA[Künstliche Intelligenz (KI) – mehr als nur ein Hype? Alle reden über Künstliche Intelligenz – ein Hype, der&#8230;]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Künstliche Intelligenz (KI) – mehr als nur ein Hype?</p>



<p class="wp-block-paragraph">Alle reden über Künstliche Intelligenz – ein Hype, der in aller Munde ist. Täglich hört man von den erstaunlichen Fähigkeiten moderner Sprachmodelle wie ChatGPT, Gemini, Granite und vielen anderen.</p>



<figure class="wp-block-image size-full"><img  decoding="async"  width="384"  height="96"  src="https://www.kimagazin.com/wp-content/uploads/2026/03/classic.svg"  alt=""  class="wp-image-2327" ></figure>



<p class="wp-block-paragraph">Obwohl es <strong>Künstliche Intelligenz (KI)</strong> und <strong>Neuronale Netze</strong> schon seit Jahrzehnten gibt – etwa für</p>



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



<li><strong>Produktvorschläge</strong></li>



<li><strong>Werbeoptimierung</strong></li>



<li><strong>Bonitätsprüfungen</strong></li>
</ul>



<p class="wp-block-paragraph">löste <strong>ChatGPT</strong> Ende 2022 einen weltweiten Hype aus.</p>



<h3 id="warum-war-das-so" class="wp-block-heading">Warum war das so?</h3>



<p class="wp-block-paragraph">KI war zuvor meist <strong>unsichtbar im Hintergrund</strong> aktiv: Sie unterstützte Geschäftsprozesse, half bei Analysen oder steuerte Personalisierungen, ohne dass Endnutzer sie direkt wahrnahmen.</p>



<figure class="wp-block-image size-full"><img  decoding="async"  width="480"  height="96"  src="https://www.kimagazin.com/wp-content/uploads/2026/03/tasks.svg"  alt=""  class="wp-image-2329" ></figure>



<p class="wp-block-paragraph">Erst mit der Veröffentlichung des <strong>großen Sprachmodells (LLM) ChatGPT durch OpenAI</strong> konnten plötzlich Millionen Menschen <strong>selbst erleben</strong>, wie leistungsfähig moderne KI-Systeme sind:</p>



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



<li>Erklären</li>



<li>Zusammenfassen</li>



<li>Ideen liefern</li>



<li>Programmieren</li>
</ul>



<p class="wp-block-paragraph">Und das alles in natürlicher Sprache – scheinbar mühelos. Damit rückt die KI in Bereiche vor, die lange als <strong>kreative Domäne des Menschen</strong> galten: Sprache verstehen, Wissen verknüpfen, neue Ideen hervorbringen.</p>



<p class="wp-block-paragraph">Innerhalb von nur <strong>2 Monaten</strong> erreichte ChatGPT bereits <strong>über 100 Millionen Nutzer</strong> – ein Rekord, der es zum am schnellsten wachsenden digitalen Produkt der Geschichte machte.</p>



<p class="wp-block-paragraph">Damit wurde KI zum ersten Mal <strong>unmittelbar erfahrbar für jedermann</strong>, nicht nur für Experten oder Unternehmen. Dieser direkte Zugang erklärt den enormen Hype – und markiert einen Wendepunkt in der öffentlichen Wahrnehmung von Künstlicher Intelligenz.</p>



<h2 id="ki-sicher-mehr-als-nur-ein-hype" class="wp-block-heading">KI – sicher mehr als nur ein Hype</h2>



<p class="wp-block-paragraph">Ist das alles nur heiße Luft? <strong>Meiner Meinung nach nicht.</strong> Vielmehr stehen wir wahrscheinlich mitten in einer der größten technologischen Revolutionen unserer Zeit – mit Auswirkungen, die weit über einzelne Branchen hinausgehen werden.</p>



<p class="wp-block-paragraph">Heute gibt es nicht nur <strong>ChatGPT</strong>, sondern viele weitere Mitbewerber wie <strong>Gemini</strong> (Google), <strong>Granite</strong> (IBM), <strong>LLaMA</strong> (Meta), <strong>Mistral</strong>, <strong>DeepSeek</strong> und zahlreiche andere.<br>Die rasanten Entwicklungen und Erfolge sind inzwischen kaum mehr vollständig zu überblicken.</p>



<p class="wp-block-paragraph">Doch gerade deshalb stellt sich die spannende Frage:<br><strong>Warum überhaupt eine KI auf der eigenen Hardware betreiben, wenn es so viele leistungsstarke Modelle in der Cloud gibt?</strong></p>



<h2 id="warum-eine-eigene-ki-betreiben" class="wp-block-heading">Warum eine eigene KI betreiben?</h2>



<p class="wp-block-paragraph">Stellen wir uns vor, wir könnten Sprachmodelle lokal installieren – welche Vorteile würde das mit sich bringen?</p>



<ul class="wp-block-list">
<li><strong>Spezialisierung</strong> – Lokale Modelle können gezielt auf eigene Daten oder Fachgebiete zugeschnitten werden.</li>



<li><strong>Kosten</strong> – Nach der Einrichtung entstehen keine laufenden API- oder Abo-Kosten, nur Strom- und Hardwareaufwand.</li>



<li><strong>Performance</strong> – Für viele Anwendungen reicht die Geschwindigkeit lokaler Modelle aus, besonders mit optimierten Versionen.</li>



<li><strong>Latenz</strong> – Abfragen laufen direkt auf der eigenen Hardware, ohne Umweg über die Cloud.</li>



<li><strong>Sicherheit &amp; Datenschutz</strong> – Alle Daten bleiben lokal, nichts verlässt den eigenen Rechner oder das Unternehmensnetzwerk.</li>



<li><strong>Flexibilität</strong> – Nutzer entscheiden selbst, welche Modelle und Tools sie einsetzen.</li>



<li><strong>Finetuning</strong> – Modelle lassen sich mit eigenen Daten nachtrainieren und damit optimal anpassen.</li>



<li><strong>Vielfalt der Modelle</strong> – Es gibt viele offene Modelle (z. B. LLaMA, Mistral, Falcon, DeepSeek), die je nach Bedarf eingesetzt werden können.</li>



<li><strong>Offline-Nutzung</strong> – Auch ohne Internetzugang bleibt die KI einsatzfähig.</li>



<li><strong>Keine externen Beschränkungen</strong> – Keine Limits bei Abfragen oder Abhängigkeit von Nutzungsbedingungen Dritter.</li>



<li><strong>Individuelle Sicherheitseinstellungen</strong> – Man kann selbst entscheiden, welche „Guardrails“ oder Sicherheitsfilter aktiv sein sollen – oder eben nicht.</li>
</ul>



<p class="wp-block-paragraph">Die nächste spannende Frage lautet: <strong>Ist es überhaupt möglich, so große Sprachmodelle lokal zu betreiben?</strong></p>



<p class="wp-block-paragraph">Die ganz großen Modelle – etwa GPT-5 (OpenAI), Gemini 2.5 Pro (Google) oder Claude Opus 4 (Anthropic) – werden weder <strong>Privatnutzer</strong> noch die meisten <strong>Unternehmen</strong> lokal installieren können. Sie laufen in riesigen Rechenzentren mit <strong>Millionen spezialisierter Recheneinheiten (GPUs/TPUs/NPUs)</strong> und erfordern eine Infrastruktur, die außerhalb von Hyperscalern (Google, Microsoft, Meta, Amazon usw.) nicht realistisch ist.</p>



<div class="cnvs-block-alert cnvs-block-alert-1781209519236 is-style-cnvs-block-alert-info" >
	<div class="cnvs-block-alert-inner">
		

<ul class="wp-block-list">
<li><strong>GPU:</strong> Grafikprozessor, heute auch für parallele KI-Berechnungen.</li>



<li><strong>TPU:</strong> Spezialisierte Google-Hardware für effiziente Tensor-Operationen.</li>



<li><strong>NPU:</strong> Energiesparender KI-Beschleuniger für mobile und Edge-Geräte.</li>
</ul>

	</div>
	</div>



<h2 id="ja-es-gibt-sie-wirklich-grosse-sprachmodelle-fuer-den-lokalen-einsatz" class="wp-block-heading">Ja, es gibt sie wirklich: große Sprachmodelle für den lokalen Einsatz</h2>



<figure class="wp-block-image size-full"><img  loading="lazy"  decoding="async"  width="512"  height="220"  src="https://www.kimagazin.com/wp-content/uploads/2026/03/laptop_bubble.svg"  alt=""  class="wp-image-2330" ></figure>



<p class="wp-block-paragraph">Aber: Es ist durchaus möglich, <strong>leistungsstarke offene Sprachmodelle lokal</strong> auf der eigenen Hardware zu betreiben. Projekte wie <strong>LLaMA (Meta)</strong>, <strong>Mistral</strong>, <strong>Falcon</strong>, <strong>DeepSeek</strong> oder <strong>Mixtral</strong> sind so optimiert, dass sie auch auf <strong>normaler Consumer-Hardware</strong> (starke CPU, moderne GPU, ausreichend RAM) lauffähig sind.</p>



<p class="wp-block-paragraph">Und das Erstaunliche: Manche dieser lokalen Modelle kommen in einzelnen Disziplinen – etwa beim Textverständnis, Programmieren oder in Benchmarks – den großen Cloud-Modellen <strong>beeindruckend nahe</strong>. Damit eröffnen sich für Forschung, Unternehmen und Privatpersonen völlig neue Möglichkeiten: von <strong>Datenschutz und Kostenkontrolle</strong> bis hin zu <strong>individuellen Anpassungen</strong>.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Wir sprechen hier meist von <strong>Sprachmodellen</strong>, doch aktuelle Systeme können längst viel mehr.<br>Sie verstehen nicht nur Text, sondern sind in der Lage, auch <strong>Bilder, Audio und sogar Video zu verarbeiten und zu erzeugen</strong>.</p>



<p class="wp-block-paragraph">Deshalb spricht man heute nicht mehr ausschließlich von Sprachmodellen, sondern von <strong>multimodalen Foundation Modellen</strong> (kurz <strong>MFM</strong>).<br>Diese Modelle verknüpfen verschiedene Eingabe- und Ausgabeformen und eröffnen dadurch völlig neue Anwendungsmöglichkeiten – etwa Bildbeschreibung, Spracherkennung, Code-Generierung oder Videoanalyse.</p>
</blockquote>



<p class="wp-block-paragraph">Auch wenn einige Vorteile vielleicht dafürsprechen, es lokal zu versuchen – welche Nachteile gibt es?<br>Klar ist: Man benötigt auf jeden Fall leistungsstarke Hardware und ein gewisses Maß an technischem Know-how.</p>



<h2 id="neuronale-netze" class="wp-block-heading">Neuronale Netze</h2>



<figure class="wp-block-image size-full"><img  loading="lazy"  decoding="async"  width="868"  height="703"  src="https://www.kimagazin.com/wp-content/uploads/2026/03/ffn.webp"  alt=""  class="wp-image-2331"  srcset="https://www.kimagazin.com/wp-content/uploads/2026/03/ffn.webp 868w, https://www.kimagazin.com/wp-content/uploads/2026/03/ffn-300x243.webp 300w, https://www.kimagazin.com/wp-content/uploads/2026/03/ffn-768x622.webp 768w, https://www.kimagazin.com/wp-content/uploads/2026/03/ffn-380x308.webp 380w, https://www.kimagazin.com/wp-content/uploads/2026/03/ffn-550x445.webp 550w, https://www.kimagazin.com/wp-content/uploads/2026/03/ffn-800x648.webp 800w, https://www.kimagazin.com/wp-content/uploads/2026/03/ffn-80x65.webp 80w"  sizes="auto, (max-width: 868px) 100vw, 868px" ></figure>



<p class="wp-block-paragraph">Sprachmodelle – oder allgemeiner <strong>Multimodale Foundation Models (MFM)</strong> – basieren auf <strong>künstlichen neuronalen Netzen</strong>.<br>Diese sind von der Funktionsweise des Gehirns inspiriert und bestehen aus Millionen künstlicher Neuronen sowie Milliarden von <strong>Parametern</strong>.<br>Parameter sind die <strong>Gewichte und Bias-Werte</strong>, mit denen das Netzwerk während des Trainings Muster erkennt und z.B. Vorhersagen trifft.</p>



<p class="wp-block-paragraph">Dass hierfür enorme Rechenleistung nötig ist, liegt auf der Hand.<br>Ein einzelner Prozessor (CPU) stößt hier ganz schnell an seine Grenzen – moderne <strong>Grafikkarten (GPUs)</strong> sind dagegen bestens geeignet.</p>



<h2 id="grafikkarten-treiben-lokale-ki-an" class="wp-block-heading">Grafikkarten treiben lokale KI an</h2>



<p class="wp-block-paragraph">Warum? Neuronale Netze benötigen vor allem extrem viele <strong>Matrix-Multiplikationen</strong>.<br>Genau diese Art von Berechnungen sind seit jeher das Herzstück der <strong>3D-Grafik</strong>:<br>Schon seit Jahrzehnten nutzen Computerspiele GPUs, um komplexe 3D-Spielwelten in Echtzeit zu berechnen.<br>Mit dem steigenden Anspruch an Grafikqualität haben sich Grafikkarten zu wahren <strong>Rechenmonstern</strong> entwickelt.</p>



<p class="wp-block-paragraph">Heute profitiert die KI davon: Dieselbe Hardware, die für 3D-Spiele gedacht war, eignet sich auch hervorragend für das Training und den Betrieb neuronaler Netze.<br>(Zudem gibt es heute auch spezialisierte Chips wie <strong>TPUs</strong> von Google oder die <strong>Tensor Cores</strong> in NVIDIA-GPUs sowie andere dedizierte AI-Chips, die speziell für KI-Berechnungen entwickelt wurden.)</p>



<h3 id="wichtiger-faktor-geschwindigkeit" class="wp-block-heading">Wichtiger Faktor: Geschwindigkeit</h3>



<p class="wp-block-paragraph">Um möglichst viele Matrizen berechnen zu können, braucht es vor allem eine hohe <strong>Parallelität</strong>.<br>Das bedeutet: Viele Recheneinheiten („Shaderkerne“) und eine solide Taktfrequenz.</p>



<p class="wp-block-paragraph"><strong>Was sind Shaderkerne?</strong><br>Shaderkerne sind kleine Recheneinheiten innerhalb der GPU, die ursprünglich für die Berechnung von 3D-Grafik gedacht waren,</p>



<ul class="wp-block-list">
<li>Geometrie zu berechnen (<strong>Vertex-Shader</strong>)</li>



<li>Farben und Pixel zu berechnen (<strong>Fragment-Shader</strong>)</li>
</ul>



<p class="wp-block-paragraph">Mit dem Aufkommen von KI kam eine weitere Nutzung hinzu: <strong>Compute-Shader</strong>.<br>Dabei handelt es sich um Programme, die auf Shaderkernen laufen und speziell für <strong>mathematische Operationen</strong> (z. B. Matrixmultiplikationen) entwickelt wurden.<br>(NVIDIA nennt sie daher <strong>CUDA-Kerne</strong>)</p>



<p class="wp-block-paragraph">Im KI-Bereich spricht man deshalb oft von <strong>Kernels</strong> – hochoptimierten Routinen, die die eigentlichen Berechnungen übernehmen.</p>



<p class="wp-block-paragraph"><strong>Warum ist das wichtig?</strong></p>



<ul class="wp-block-list">
<li>Shaderkerne / CUDA-Kerne sind <strong>extrem zahlreich</strong> – bei aktuellen Karten wie der RTX 4090 über <strong>16.000 Stück</strong>.</li>



<li>Sie können gleichzeitig (parallel) rechnen, wodurch enorme Geschwindigkeiten erreicht werden.</li>



<li>Für die Leistung sind daher sowohl die <strong>Taktfrequenz</strong> als auch vor allem die <strong>Anzahl der Kerne</strong> entscheidend.</li>
</ul>



<h3 id="ausschlaggebend-speicher" class="wp-block-heading">Ausschlaggebend: Speicher</h3>



<p class="wp-block-paragraph">Noch wichtiger als die reine Rechengeschwindigkeit ist der <strong>Speicher</strong> – und zwar nicht der Hauptspeicher (RAM), sondern das <strong>VRAM (Video RAM)</strong> direkt auf der Grafikkarte.<br>Die Recheneinheiten der GPU (CUDA-/Shaderkerne) können ausschließlich auf diesen Grafikspeicher zugreifen.</p>



<p class="wp-block-paragraph"><strong>Foundation Models</strong> sind riesig: Sie enthalten Milliarden von Parametern und benötigen daher enorme Mengen an Speicherplatz. Zusätzlich fällt während der Berechnung weiterer Speicherbedarf für Zwischenergebnisse (z.B. KV-Cache) an.<br>Das macht den Grafikspeicher zum eigentlichen <strong>Flaschenhals</strong>.</p>



<ul class="wp-block-list">
<li>Mit <strong>8 GB VRAM</strong> lassen sich nur kleine Modelle (z. B. 7B-Modelle in starker Quantisierung) nutzen.</li>



<li><strong>16 GB</strong> ermöglichen schon komfortableres Arbeiten und den Einsatz mittelgroßer Modelle.</li>



<li>Ab <strong>24 GB VRAM</strong> lassen sich auch größere Sprachmodelle lokal laden und sinnvoll betreiben.</li>
</ul>



<p class="wp-block-paragraph">Zwar ist es technisch möglich, den <strong>Hauptspeicher (RAM)</strong> einzubinden, wenn der VRAM nicht ausreicht – doch dann müssen Daten ständig zwischen Hauptspeicher und VRAM hin- und her kopiert werden.<br>Das verlangsamt die Berechnungen drastisch und macht eine sinnvolle Nutzung praktisch unmöglich.</p>



<h2 id="das-modell" class="wp-block-heading">Das Modell</h2>



<p class="wp-block-paragraph">Wir haben nun schon einige Male den Begriff <strong>Modell</strong> verwendet – aber was genau bedeutet das eigentlich?</p>



<p class="wp-block-paragraph">Ein <strong>Modell</strong> ist das Ergebnis des Trainings eines neuronalen Netzes.<br>Es umfasst:</p>



<ul class="wp-block-list">
<li>die <strong>Parameter</strong> des Netzes (vor allem Gewichte und Bias-Werte),</li>



<li>die <strong>Architektur</strong> des Netzwerks, also die Beschreibung der Schichten und ihrer Verbindungen (oft als Rechengraph dargestellt).</li>
</ul>



<p class="wp-block-paragraph">All diese Informationen werden in einer oder mehreren <strong>Dateien gespeichert</strong> und können später wieder geladen werden.<br>So wird aus dem trainierten Modell ein Werkzeug, das für die <strong>Inferenz</strong> – also die praktische Anwendung – genutzt werden kann.</p>



<p class="wp-block-paragraph">Das sind letztlich die <strong>Rohdaten</strong> des Modells, die von einer passenden <strong>Runtime</strong> oder einem Framework geladen und ausgeführt werden können.<br>Ähnlich wie bei <strong>Bildern</strong> – die je nach Format (z. B. JPG, PNG, TIFF) unterschiedliche Eigenschaften haben – gibt es auch für <strong>Modelle</strong> verschiedene Speicherformate.<br>Nur wenn das richtige Format verwendet wird, kann ein Modell korrekt geladen und für die Inferenz ausgeführt werden.</p>



<h2 id="sprach-und-foundation-modelle-wahre-giganten" class="wp-block-heading">Sprach- und Foundation-Modelle – wahre Giganten</h2>



<p class="wp-block-paragraph">Wir haben bereits erwähnt, dass Foundation Models extrem groß sein können. Aber wie groß ist „groß“?<br>Bei aktuellen Modellen geben die Betreiber – vermutlich aus Konkurrenzgründen – kaum noch Details wie Architektur oder genaue Parameterzahlen preis.<br>Es gibt jedoch Leaks und fundierte Schätzungen.</p>



<p class="wp-block-paragraph">Demnach arbeiten diese Netzwerke mit bis zu <strong>Billionen von Parametern</strong>.<br>Allerdings werden je nach Architektur (z. B. <em>Mixture of Experts</em>, kurz MoE) nicht alle Parameter gleichzeitig genutzt.<br>Um Rechenzeit und Speicher zu sparen, werden pro Anfrage („Prompt“) nur bestimmte Experten-Teile des Netzes aktiviert.<br>Bei <strong>GPT-4</strong> bedeutet das nach Schätzungen trotzdem immer noch rund <strong>300 Milliarden aktive Parameter pro Inferenz</strong>.</p>



<p class="wp-block-paragraph">Die Parameter liegen in der Regel als <strong>Fließkommazahlen im FP16-Format</strong> vor, also <strong>2 Byte pro Parameter</strong> (seltener auch als <strong>BF16</strong>).<br>Allein das Modell würde damit schon <strong>300 Milliarden × 2 Byte ≈ 600 GB VRAM</strong> belegen –<br>und das ohne zusätzliche Zwischenspeicherungen wie den <strong>KV-Cache</strong>, der bei langen Kontexten nochmals hunderte Gigabyte beanspruchen kann.</p>



<p class="wp-block-paragraph">Alles in allem also: <strong>riesig und viel zu groß für den lokalen Einsatz</strong>.<br>Deshalb werden für den Betrieb auf normaler Hardware <strong>kleinere Modelle</strong> entwickelt und optimiert – die aber trotzdem eine erstaunliche Leistung erreichen.</p>



<h3 id="aktuelle-open-weight-modelle-fuer-lokale-nutzung" class="wp-block-heading">Aktuelle Open-Weight-Modelle für lokale Nutzung</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Familie / Modell</th><th>Verfügbare Größen (Parameter)</th><th>Aktiv pro Inferenz</th><th>Multimodal?</th></tr></thead><tbody><tr><td><strong>LLaMA 2</strong> (Meta, 2023)</td><td>7B, 13B, 70B</td><td>alle aktiv</td><td>Nein</td></tr><tr><td><strong>LLaMA 3</strong> (Meta, 2024)</td><td>8B, 70B, 405B</td><td>alle aktiv</td><td>Bild-Funktionen</td></tr><tr><td><strong>LLaMA 4</strong> (Meta, 2025)</td><td>109B gesamt</td><td>17B aktiv (MoE)</td><td>Text + Bild</td></tr><tr><td><strong>Mistral 7B</strong> (2023)</td><td>7.3B</td><td>7.3B</td><td>Nein</td></tr><tr><td><strong>Mixtral 8×7B</strong> (2023)</td><td>46.7B gesamt</td><td>12.9B aktiv</td><td>Nein</td></tr><tr><td><strong>Phi-3</strong> (Microsoft, 2024)</td><td>3.8B, 7B, 14B</td><td>alle aktiv</td><td>Nein</td></tr><tr><td><strong>Phi-4</strong> (Microsoft, 2025)</td><td>3.8B (Mini), 14B</td><td>alle aktiv</td><td>Text + Bild</td></tr><tr><td><strong>Granite Language</strong> (IBM, 2024/25)</td><td>3B, 8B, 20B, 34B</td><td>alle aktiv</td><td>Nein</td></tr><tr><td><strong>Granite Vision</strong> (IBM, 2024/25)</td><td>verschiedene Größen</td><td>alle aktiv</td><td>Text + Bild</td></tr><tr><td><strong>Falcon</strong> (TII, 2023)</td><td>7B, 40B</td><td>alle aktiv</td><td>Nein</td></tr><tr><td><strong>Gemma 1</strong> (Google, 2024)</td><td>2B, 7B</td><td>alle aktiv</td><td>Nein</td></tr><tr><td><strong>Gemma 2</strong> (Google, 2025)</td><td>9B, 27B</td><td>alle aktiv</td><td>Nein</td></tr><tr><td><strong>DeepSeek-V2</strong> (2024)</td><td>236B gesamt</td><td>21B aktiv (MoE)</td><td>Nein</td></tr><tr><td><strong>DeepSeek-V3</strong> (2024/25)</td><td>671B gesamt</td><td>37B aktiv (MoE)</td><td>experimentell</td></tr><tr><td><strong>DeepSeek-R1 Distills</strong> (2025)</td><td>1.5B – 70B</td><td>alle aktiv</td><td>Nein &#8211; Reasoning</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Die Größe der Modelle wird meist mit <strong>B</strong> angegeben – das steht im Englischen für „Billion“ (US-Zählweise) und entspricht <strong>Milliarden Parametern</strong> auf Deutsch.<br>Beispiel: <strong>LLaMA-3 8B</strong> bedeutet, dass das Modell etwa <strong>8 Milliarden Parameter</strong> hat.</p>



<div class="cnvs-block-alert cnvs-block-alert-1781209644346 is-style-cnvs-block-alert-info" >
	<div class="cnvs-block-alert-inner">
		

<p class="wp-block-paragraph">Die Größe von großen Sprachmodellen bzw. Foundation Models wird in der Anzahl der <strong>Parameter</strong> angegeben.<br>Die Einheit ist das amerikanische <strong>B</strong> für „Billion“ (US), was im Deutschen <strong>einer Milliarde</strong> entspricht.<br>In der Regel werden die Parameter als <strong>16-Bit-Fließkommazahlen</strong> gespeichert – meist im Format <strong>FP16</strong> oder <strong>BF16</strong>.<br>Das entspricht <strong>2 Bytes pro Parameter</strong>.</p>

	</div>
	</div>



<p class="wp-block-paragraph">Rechnen wir kurz: Das kleinste Modell der Reihe, <strong>LLaMA-3 8B</strong>, hat rund <strong>8 Milliarden Parameter</strong>.</p>



<p class="wp-block-paragraph">Bei <strong>FP16/BF16</strong> (16 Bit) entspricht das <strong>2 Byte pro Parameter</strong> → <strong>8B × 2 Byte ≈ 16 GB VRAM</strong> nur für die Modellgewichte.</p>



<p class="wp-block-paragraph">Dazu kommt der <strong>KV-Cache</strong> für die Attention, dessen Größe linear mit der Kontextlänge wächst.<br>Als &#8222;sehr grobe&#8220; Faustregel (bei 16 Bit):</p>



<ul class="wp-block-list">
<li>kleine Modelle bis ~10B Parameter → ca. <strong>0,5 MB pro Token</strong></li>



<li>mittlere Modelle (~10–30B Parameter) → ca. <strong>1 MB pro Token</strong></li>



<li>große Modelle (70B+) → ca. <strong>3–4 MB pro Token</strong></li>
</ul>



<p class="wp-block-paragraph"><strong>Praxisbeispiel (8k Kontext):</strong></p>



<ul class="wp-block-list">
<li>16 GB (Gewichte) + ~4 GB (KV-Cache) + Overhead ⇒ <strong>&gt; 20 GB Gesamtbedarf</strong></li>
</ul>



<p class="wp-block-paragraph">Selbst eine hochwertige Grafikkarte mit <strong>16 GB VRAM reicht für LLaMA-3 8B in FP16 nicht mehr aus</strong>.</p>



<h3 id="trotzdem-zu-gross-speicher-weiter-reduzieren" class="wp-block-heading">Trotzdem zu groß – Speicher weiter reduzieren</h3>



<p class="wp-block-paragraph">Drücken wir den Speicherbedarf einmal gedanklich herunter:</p>



<p class="wp-block-paragraph">Modelle werden meist im Format <strong>FP16</strong> ausgeliefert.</p>



<p class="wp-block-paragraph">In FP16 besteht eine Zahl aus:</p>



<p class="wp-block-paragraph"><strong>V EEEEE MMMMMMMMMM</strong></p>



<ul class="wp-block-list">
<li><strong>v</strong> = 1 Bit Vorzeichen</li>



<li><strong>e</strong> = 5 Bit Exponent (legt den Wertebereich fest)</li>



<li><strong>m</strong> = 10 Bit Mantisse (legt die Genauigkeit fest)</li>
</ul>



<p class="wp-block-paragraph">Damit lässt sich ein Bereich von rund <strong>−65.504 bis +65.504</strong> abdecken.</p>



<p class="wp-block-paragraph">Für viele KI-Modelle sind die Gewichte jedoch bereits <strong>auf den Bereich −1 bis +1 normalisiert</strong>.<br>Der große Exponentenbereich wird also kaum genutzt – die 5 Exponenten-Bits sind in diesem Fall überflüssig.</p>



<p class="wp-block-paragraph">Theoretisch würden also <strong>11 Bit (1+10)</strong> genügen, um Modellgewichte in diesem Bereich ohne Präzisionsverlust darzustellen.<br>Das entspräche einer Ersparnis von rund <strong>31 % Speicher</strong> – allerdings nur als Gedankenmodell, da es kein echtes 11-Bit-Format gibt.</p>



<p class="wp-block-paragraph">Wie kann man diese Modelle doch noch in den Griff bekommen?</p>



<h3 id="quantisierung-das-wunder-der-fast-verlustfreien-komprimierung" class="wp-block-heading">Quantisierung &#8211; das Wunder der (fast) verlustfreien Komprimierung</h3>



<p class="wp-block-paragraph">Genau hier setzt <strong>Quantisierung</strong> an:<br>Sie reduziert die Bitbreite noch weiter – typischerweise auf <strong>8 Bit oder sogar 4 Bit</strong> –<br>und erzielt dadurch enorme Einsparungen bei Speicher und Rechenaufwand, bei meist nur geringem Qualitätsverlust.</p>



<p class="wp-block-paragraph">In unseren einfachen Rechnungen konnten wir bereits <strong>5 Bit einsparen</strong>, ohne Genauigkeitsverluste.<br>In der Praxis lässt sich der Wertebereich jedoch nicht immer exakt auf <strong>–1 bis +1</strong> begrenzen. Manchmal reicht er weiter, manchmal liegt er nur zwischen <strong>–0.2 und +0.2</strong>.<br>Daher arbeitet man nicht mit fixen Grenzen, sondern bestimmt den tatsächlichen <strong>Minimal- und Maximalwert</strong> der Parameter.<br>Die so entstehende <strong>Range zwischen Min und Max</strong> wird anschließend <strong>quantisiert</strong>, indem man sie in gleichmäßige (lineare) Abstände aufteilt.</p>



<figure class="wp-block-image size-large"><img  loading="lazy"  decoding="async"  width="1024"  height="363"  src="https://www.kimagazin.com/wp-content/uploads/2026/03/quantisierung-1024x363.webp"  alt=""  class="wp-image-2332"  srcset="https://www.kimagazin.com/wp-content/uploads/2026/03/quantisierung-1024x363.webp 1024w, https://www.kimagazin.com/wp-content/uploads/2026/03/quantisierung-300x106.webp 300w, https://www.kimagazin.com/wp-content/uploads/2026/03/quantisierung-768x272.webp 768w, https://www.kimagazin.com/wp-content/uploads/2026/03/quantisierung-380x135.webp 380w, https://www.kimagazin.com/wp-content/uploads/2026/03/quantisierung-550x195.webp 550w, https://www.kimagazin.com/wp-content/uploads/2026/03/quantisierung-800x283.webp 800w, https://www.kimagazin.com/wp-content/uploads/2026/03/quantisierung-1160x411.webp 1160w, https://www.kimagazin.com/wp-content/uploads/2026/03/quantisierung-80x28.webp 80w, https://www.kimagazin.com/wp-content/uploads/2026/03/quantisierung.webp 1296w"  sizes="auto, (max-width: 1024px) 100vw, 1024px" ></figure>



<p class="wp-block-paragraph">Die Quantisierung wird in <strong>Bit</strong> angegeben, z. B. <strong>8 Bit</strong>, <strong>4 Bit</strong> oder sogar nur <strong>2 Bit</strong>.</p>



<ul class="wp-block-list">
<li><strong>8 Bit = 256 Stufen</strong></li>



<li><strong>4 Bit = 16 Stufen</strong></li>



<li>Ganzzahlen: <strong>8 Bit = 1 Byte</strong></li>
</ul>



<p class="wp-block-paragraph">Beispiel:<br>Bei einem Range von <strong>–1 bis +1</strong> (Breite = 2.0) und <strong>8 Bit</strong> teilen wir diesen Bereich in <strong>256 Stufen</strong> auf = 1 Byte</p>



<p class="wp-block-paragraph">Teilen wir den Wertebereich 2.0 durch 256 Stufen, ergibt sich ein <strong>Skalierungswert von 0.0078125</strong>.<br>Das ist der Abstand von einer Stufe zur nächsten und bestimmt die <strong>Genauigkeit</strong>:</p>



<ul class="wp-block-list">
<li>Weniger Bits → größere Abstände → geringere Genauigkeit.</li>
</ul>



<p class="wp-block-paragraph">In der Praxis:</p>



<ul class="wp-block-list">
<li>Für jeden Parameter wird eine <strong>Stufe</strong> gespeichert (als Byte).</li>



<li>Zusätzlich gibt es den <strong>Skalierungsfaktor</strong>.</li>



<li>Diese Quantisierung passiert <strong>nach dem Training</strong>, aber <strong>vor der Nutzung</strong> des Modells.</li>
</ul>



<p class="wp-block-paragraph"><strong>Symmetrische Quantisierung</strong></p>



<figure class="wp-block-image size-large"><img  loading="lazy"  decoding="async"  width="1024"  height="139"  src="https://www.kimagazin.com/wp-content/uploads/2026/03/sym_quant-1024x139.webp"  alt=""  class="wp-image-2333"  srcset="https://www.kimagazin.com/wp-content/uploads/2026/03/sym_quant-1024x139.webp 1024w, https://www.kimagazin.com/wp-content/uploads/2026/03/sym_quant-300x41.webp 300w, https://www.kimagazin.com/wp-content/uploads/2026/03/sym_quant-768x104.webp 768w, https://www.kimagazin.com/wp-content/uploads/2026/03/sym_quant-1536x209.webp 1536w, https://www.kimagazin.com/wp-content/uploads/2026/03/sym_quant-380x52.webp 380w, https://www.kimagazin.com/wp-content/uploads/2026/03/sym_quant-550x75.webp 550w, https://www.kimagazin.com/wp-content/uploads/2026/03/sym_quant-800x109.webp 800w, https://www.kimagazin.com/wp-content/uploads/2026/03/sym_quant-1160x158.webp 1160w, https://www.kimagazin.com/wp-content/uploads/2026/03/sym_quant-80x11.webp 80w, https://www.kimagazin.com/wp-content/uploads/2026/03/sym_quant.webp 1993w"  sizes="auto, (max-width: 1024px) 100vw, 1024px" ></figure>



<ul class="wp-block-list">
<li>Range ist um <strong>0</strong> symmetrisch (z. B. –1 bis +1).</li>



<li>Nur ein <strong>Skalierungsfaktor</strong> wird gespeichert.</li>



<li>Einfach, aber bei asymmetrischen Daten geht Präzision verloren.</li>
</ul>



<p class="wp-block-paragraph"><strong>Asymmetrische Quantisierung</strong></p>



<figure class="wp-block-image size-large"><img  loading="lazy"  decoding="async"  width="1024"  height="128"  src="https://www.kimagazin.com/wp-content/uploads/2026/03/asym_quant-1024x128.webp"  alt=""  class="wp-image-2334"  srcset="https://www.kimagazin.com/wp-content/uploads/2026/03/asym_quant-1024x128.webp 1024w, https://www.kimagazin.com/wp-content/uploads/2026/03/asym_quant-300x38.webp 300w, https://www.kimagazin.com/wp-content/uploads/2026/03/asym_quant-768x96.webp 768w, https://www.kimagazin.com/wp-content/uploads/2026/03/asym_quant-1536x192.webp 1536w, https://www.kimagazin.com/wp-content/uploads/2026/03/asym_quant-2048x256.webp 2048w, https://www.kimagazin.com/wp-content/uploads/2026/03/asym_quant-380x48.webp 380w, https://www.kimagazin.com/wp-content/uploads/2026/03/asym_quant-550x69.webp 550w, https://www.kimagazin.com/wp-content/uploads/2026/03/asym_quant-800x100.webp 800w, https://www.kimagazin.com/wp-content/uploads/2026/03/asym_quant-1160x145.webp 1160w, https://www.kimagazin.com/wp-content/uploads/2026/03/asym_quant-80x10.webp 80w, https://www.kimagazin.com/wp-content/uploads/2026/03/asym_quant.webp 2232w"  sizes="auto, (max-width: 1024px) 100vw, 1024px" ></figure>



<ul class="wp-block-list">
<li>Range ist verschoben (z. B. –1 bis +0.2).</li>



<li>Zusätzlich zum <strong>Skalierungsfaktor</strong> wird ein <strong>Nullpunkt (Zero Point)</strong> gespeichert.</li>



<li>Der Zero Point legt fest, welche Ganzzahl genau den Wert <strong>0</strong> repräsentiert.</li>



<li>Vorteil: Der verfügbare Wertebereich wird optimal genutzt.</li>
</ul>



<h3 id="dequantisierung" class="wp-block-heading">Dequantisierung</h3>



<p class="wp-block-paragraph">Bei der <strong>Inferenz</strong> (Anwendung des Modells) liegen die Parameter nicht mehr als <strong>FP16-Werte</strong> vor, sondern z. B. nur noch als <strong>Ganzzahlenwerte</strong> (z. B. 1 Byte pro Gewicht).</p>



<figure class="wp-block-image size-large"><img  loading="lazy"  decoding="async"  width="1024"  height="269"  src="https://www.kimagazin.com/wp-content/uploads/2026/03/dequantisierung-1024x269.png"  alt=""  class="wp-image-2335"  srcset="https://www.kimagazin.com/wp-content/uploads/2026/03/dequantisierung-1024x269.png 1024w, https://www.kimagazin.com/wp-content/uploads/2026/03/dequantisierung-300x79.png 300w, https://www.kimagazin.com/wp-content/uploads/2026/03/dequantisierung-768x202.png 768w, https://www.kimagazin.com/wp-content/uploads/2026/03/dequantisierung-1536x403.png 1536w, https://www.kimagazin.com/wp-content/uploads/2026/03/dequantisierung-380x100.png 380w, https://www.kimagazin.com/wp-content/uploads/2026/03/dequantisierung-550x144.png 550w, https://www.kimagazin.com/wp-content/uploads/2026/03/dequantisierung-800x210.png 800w, https://www.kimagazin.com/wp-content/uploads/2026/03/dequantisierung-1160x305.png 1160w, https://www.kimagazin.com/wp-content/uploads/2026/03/dequantisierung-80x21.png 80w, https://www.kimagazin.com/wp-content/uploads/2026/03/dequantisierung.png 1622w"  sizes="auto, (max-width: 1024px) 100vw, 1024px" ></figure>



<p class="wp-block-paragraph">Für die Berechnung müssen diese Ganzzahlen wieder in <strong>FP16</strong> konvertiert werden:<br>Dies geschieht, indem man die Ganzzahl mit dem <strong>Skalierungsfaktor</strong> multipliziert.<br>Bei <strong>asymmetrischer Quantisierung</strong> wird zusätzlich der <strong>Nullpunkt (Zero Point)</strong> berücksichtigt.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Parameter_fp = (Stufe × Skalierungsfaktor) [+ Nullpunkt bei asymmetrisch]
</blockquote>



<p class="wp-block-paragraph">Durch die Quantisierung können <strong>Fehler</strong> entstehen, wenn der rekonstruierte Wert vom ursprünglichen Wert abweicht.<br>Je weniger Bits verwendet werden, desto höher die mögliche Abweichung.</p>



<ul class="wp-block-list">
<li>Mit <strong>8 Bit</strong> spart man bereits rund <strong>50 % Speicherplatz</strong>, in der Praxis meist mit kaum messbaren Verlusten.</li>



<li>Mit <strong>4 Bit</strong> lassen sich sogar <strong>75 %</strong> einsparen, allerdings steigt die Wahrscheinlichkeit von Genauigkeitsverlusten.</li>
</ul>



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



<ul class="wp-block-list">
<li><strong>FP16:</strong> Originalpräzision → hohe Qualität, viel Speicherbedarf</li>



<li><strong>INT8:</strong> Standard für Inferenz → kaum Qualitätsverlust, große Ersparnis</li>



<li><strong>INT4:</strong> weitere starke Ersparnis → meist noch gute Qualität (mit spezieller Quantisierung)</li>



<li><strong>INT2:</strong> extreme Kompression → Qualität stark eingeschränkt, oft kaum brauchbar</li>
</ul>



<h4 id="bedeutet-das-nicht-grossen-rechenaufwand" class="wp-block-heading">Bedeutet das nicht großen Rechenaufwand?</h4>



<p class="wp-block-paragraph">Ja, für jeden Parameter ist eine <strong>Multiplikation</strong> und ggf. eine <strong>Addition</strong> (bei asymmetrischer Quantisierung) nötig.<br>Der <strong>VRAM-Gewinn</strong> gleicht diesen Mehraufwand aber meist aus.<br>Außerdem unterstützen moderne <strong>GPUs, TPUs und NPUs</strong> bereits spezielle <strong>Quantisierungs-Operatoren</strong>, die diese Schritte sehr effizient ausführen.</p>



<h4 id="bekommt-das-ganze-netzwerk-die-gleiche-skalierung" class="wp-block-heading">Bekommt das ganze Netzwerk die gleiche Skalierung?</h4>



<p class="wp-block-paragraph">Nicht unbedingt &#8230;<br>In der Praxis teilt man die Parameter oft in <strong>Spalten (Channels)</strong> oder <strong>Gruppen</strong> auf und vergibt dafür getrennte Skalierungsfaktoren.<br>Das verbessert die Genauigkeit deutlich gegenüber einer einzigen globalen Skalierung.</p>



<h4 id="werden-alle-parameter-des-modells-quantisiert" class="wp-block-heading">Werden alle Parameter des Modells quantisiert?</h4>



<p class="wp-block-paragraph">Grundsätzlich ja – aber die größten Einsparungen erzielt man bei den Hauptblöcken:</p>



<ol class="wp-block-list">
<li><strong>Attention (Q, K, V, O Projektionen):</strong><br>Belegen je nach Architektur rund <strong>20–30 %</strong> der Parameter.</li>



<li><strong>Feed Forward Network (FFN / MLP):</strong><br>Macht rund <strong>60–70 %</strong> der Parameter aus.</li>
</ol>



<p class="wp-block-paragraph">Kleinere Teile wie Embeddings oder LayerNorms sind vergleichsweise unbedeutend. Die <strong>meisten Einsparungen</strong> durch Quantisierung entstehen also im FFN und im Attention-Block.</p>



<h4 id="gptq-gradient-post-training-quantization" class="wp-block-heading">GPTQ (Gradient Post-Training Quantization)</h4>



<p class="wp-block-paragraph"><strong>GPTQ</strong> ist ein Verfahren, das <strong>nach dem Training</strong> angewendet wird und die Qualität der Quantisierung deutlich verbessert.</p>



<p class="wp-block-paragraph">Dabei werden die <strong>Parameter nicht alle gleich behandelt</strong>, sondern nach ihrer <strong>Wichtigkeit</strong> unterschieden.<br>Mit Hilfe der <strong>Hessian-Matrix</strong> (eine Ableitungsmatrix, die Sensitivität und Krümmung beschreibt) wird abgeschätzt, wie stark sich ein Quantisierungsfehler bei einem bestimmten Parameter auf die Modellqualität auswirkt.</p>



<p class="wp-block-paragraph">So erhalten wichtige Parameter feinere <strong>Skalierungen</strong>, während weniger wichtige Parameter gröber quantisiert werden können.<br>Das ermöglicht eine <strong>effizientere Kompression</strong>, bei gleichzeitig <strong>geringerem Qualitätsverlust</strong>.</p>



<p class="wp-block-paragraph"><strong>Vorteil</strong>: GPTQ erlaubt oft Quantisierungen bis <strong>4 Bit</strong> mit nur minimalen Genauigkeitseinbußen, wodurch große Modelle auf deutlich kleineren Geräten lauffähig werden.</p>



<h2 id="der-player-fuer-dein-ki-modell-die-runtime" class="wp-block-heading">Der Player für dein KI-Modell: die Runtime</h2>



<figure class="wp-block-image size-full"><img  loading="lazy"  decoding="async"  width="512"  height="220"  src="https://www.kimagazin.com/wp-content/uploads/2026/03/play.svg"  alt=""  class="wp-image-2336" ></figure>



<p class="wp-block-paragraph">Jetzt haben wir den etwas trockenen Teil hinter uns und wissen, worauf es ankommt und worauf wir achten müssen.<br>Einen passenden Computer mit starker Grafikkarte und ausreichend VRAM haben wir uns bereits besorgt.</p>



<p class="wp-block-paragraph">Nun geht es in die Praxis: <strong>Wie lassen sich multimodale Foundation Models auf Consumer-Hardware nutzen?</strong></p>



<p class="wp-block-paragraph">Bei Modellen ist es ähnlich wie bei Videos: Mit der Datei allein kann der Computer wenig anfangen – er braucht einen Player, damit etwas passiert.<br>Was bei Videos der <strong>Videoplayer</strong> ist, ist bei Foundation Models die <strong>LLM-Runtime</strong>.<br>Sie lädt das Modell und bietet uns die Schnittstelle, um damit zu interagieren – zum Beispiel in Form eines Chats.</p>



<h3 id="wie-ki-software-auf-die-grafikkarte-zugreift" class="wp-block-heading">Wie KI-Software auf die Grafikkarte zugreift</h3>



<p class="wp-block-paragraph">Der Zugriff einer Runtime – oder allgemein von KI-Software – auf die GPU erfolgt in mehreren Ebenen.</p>



<figure class="wp-block-image size-full"><img  loading="lazy"  decoding="async"  width="586"  height="266"  src="https://www.kimagazin.com/wp-content/uploads/2026/03/gpu_flowchart.svg"  alt=""  class="wp-image-2337" ></figure>



<ul class="wp-block-list">
<li><strong>Unterste Ebene:</strong> die eigentliche <strong>Hardware</strong> (GPU).<br>Dafür stellt der jeweilige Hersteller passende <strong>Treiber</strong> bereit.<br>Diese Treiber sind nötig, damit das Betriebssystem und die Software überhaupt mit der GPU kommunizieren können.</li>



<li><strong>Darüber:</strong> der Zugriff auf die Hardware geschieht über eine <strong>Programmierschnittstelle (API)</strong>.<br>Diese kann entweder
<ul class="wp-block-list">
<li><strong>herstellerspezifisch</strong> sein (z. B. CUDA von NVIDIA)</li>



<li>oder auf einem <strong>offenen Standard</strong> basieren (z. B. DirectML)</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph">Diese Schnittstellen bilden die Grundlage, auf der KI-Frameworks wie PyTorch, TensorFlow oder KI Applikationen arbeiten.</p>



<h4 id="herstellerspezifische-schnittstellen" class="wp-block-heading">Herstellerspezifische Schnittstellen</h4>



<p class="wp-block-paragraph">Diese Schnittstellen sind speziell für eine bestimmte Hardware-Familie optimiert (z. B. nur für NVIDIA).<br>Sie funktionieren ausschließlich auf den GPUs dieses Herstellers.</p>



<ul class="wp-block-list">
<li><strong>Vorteil:</strong><br>Die besonderen Fähigkeiten und Funktionen der Hardware können gezielt und sehr performant genutzt werden.</li>



<li><strong>Nachteil:</strong><br>Für jede andere Hardware-Familie muss separat programmiert werden – ein Wechsel des Herstellers ist damit schwierig.</li>
</ul>



<p class="wp-block-paragraph">Beispiele:</p>



<ul class="wp-block-list">
<li><strong>NVIDIA:</strong> CUDA</li>



<li><strong>AMD:</strong> ROCm</li>



<li><strong>Intel:</strong> oneAPI</li>



<li><strong>Apple:</strong> Metal (MPS)</li>
</ul>



<h4 id="universelle-schnittstellen" class="wp-block-heading">Universelle Schnittstellen</h4>



<p class="wp-block-paragraph">Hier stellen Konsortien oder Standardisierungsorganisationen eine gemeinsame Schnittstelle bereit, die auf Hardware vieler Hersteller lauffähig ist.</p>



<ul class="wp-block-list">
<li><strong>Vorteil:</strong><br>Eine Schnittstelle funktioniert mit GPUs verschiedener Anbieter – weniger Abhängigkeit vom Hersteller.</li>



<li><strong>Nachteil:</strong><br>Spezielle Funktionen einzelner GPUs können nicht ausgereizt werden, außerdem ist der Zugriff in der Regel etwas langsamer.</li>
</ul>



<p class="wp-block-paragraph">Beispiele:</p>



<ul class="wp-block-list">
<li><strong>OpenCL:</strong> – Khronos Group</li>



<li><strong>Vulkan Compute:</strong> – Khronos Group</li>



<li><strong>DirectML:</strong> – Microsoft</li>
</ul>



<h3 id="runtimes-fuer-lokale-und-skalierte-nutzung" class="wp-block-heading">Runtimes für lokale und skalierte Nutzung</h3>



<p class="wp-block-paragraph">Für die verschiedenen Betriebssysteme – Linux, Windows und macOS – stehen unterschiedliche Runtimes zur Verfügung.<br>Aktuell sind <strong>Linux-Nutzer etwas im Vorteil</strong>, da viele Tools zuerst für Linux entwickelt und optimiert werden.<br>Unter <strong>Windows</strong> lassen sich viele davon jedoch ebenfalls nutzen, z. B. über das <strong>Windows Subsystem for Linux (WSL)</strong>.<br>Auch <strong>macOS</strong> wird inzwischen gut unterstützt, insbesondere seit es Apple Silicon (M1/M2/M3) mit eigener GPU-Beschleunigung gibt.</p>



<p class="wp-block-paragraph">Wichtig ist die <strong>Unterscheidung nach dem Einsatzzweck</strong>:</p>



<ul class="wp-block-list">
<li><strong>Lokale Runtimes</strong> für Einzelrechner (z. B. llama.cpp)</li>



<li><strong>Server- oder Cluster-Runtimes</strong> für skalierte Nutzung (z. B. vLLM)</li>
</ul>



<h4 id="lokale-runtimes" class="wp-block-heading">Lokale Runtimes</h4>



<p class="wp-block-paragraph">Eine <strong>lokale Runtime</strong> ist in der Regel schnell installiert und eingerichtet.<br>Sie ist für den <strong>Betrieb auf einem einzelnen Rechner</strong> gedacht und eignet sich besonders für kleinere Workflows, die direkt auf dieser Maschine laufen oder sich gezielt mit genau diesem Rechner verbinden.</p>



<p class="wp-block-paragraph">Typische Vertreter:</p>



<ul class="wp-block-list">
<li><strong>llama.cpp</strong> – leichtgewichtig, sehr portabel, läuft auf fast allen Plattformen</li>



<li><strong>Ollama</strong> – CLI-/API-orientiert, einfach in eigene Anwendungen integrierbar</li>



<li><strong>LM Studio</strong> – benutzerfreundliche Desktop-App mit GUI und Modellverwaltung</li>
</ul>



<h4 id="server-oder-cluster-runtimes-inference-engines" class="wp-block-heading">Server- oder Cluster-Runtimes (Inference Engines)</h4>



<p class="wp-block-paragraph">Diese Runtimes sind deutlich komplexer in der Installation und richten sich an <strong>professionelle Anwendungen</strong> mit vielen gleichzeitigen Anfragen.<br>Sie sind für den Einsatz auf <strong>leistungsstarker Server-Hardware</strong> gedacht, oft mit mehreren GPUs, und lassen sich sehr gut skalieren – von einzelnen Servern bis hin zu großen Clustern.<br>Typischerweise werden dafür <strong>Datacenter-GPUs</strong> wie die NVIDIA A100 oder H100 genutzt.</p>



<p class="wp-block-paragraph">Typische Vertreter:</p>



<ul class="wp-block-list">
<li><strong>vLLM (UC Berkeley)</strong> – hochoptimierte Inference Engine, u. a. mit <em>PagedAttention</em></li>



<li><strong>Text Generation Inference (TGI, Hugging Face)</strong> – Serving-Framework für Produktionsumgebungen</li>



<li><strong>TensorRT-LLM (NVIDIA)</strong> – maximal optimierte Inferenz auf NVIDIA-GPUs mit Tensor Cores</li>
</ul>



<h3 id="fuer-kleinere-anwendungen-bieten-sich-lokale-runtimes-an" class="wp-block-heading">Für kleinere Anwendungen bieten sich lokale Runtimes an</h3>



<p class="wp-block-paragraph">Grundsätzlich brauchen wir einen <strong>Motor unter der Haube</strong>, der Modelle laden und ausführen kann.<br>Bei den lokalen Runtimes kommt sehr häufig <strong>llama.cpp</strong> zum Einsatz.</p>



<h4 id="llama-cpp" class="wp-block-heading">llama.cpp</h4>



<p class="wp-block-paragraph"><strong>llama.cpp</strong> ist eine extrem schnelle, hardwarenahe Bibliothek, die in <strong>C/C++</strong> mit teils <strong>Assembler-Optimierungen</strong> entwickelt wurde.<br>Sie ermöglicht es, große Sprachmodelle effizient auch auf Consumer-Hardware laufen zu lassen.</p>



<ul class="wp-block-list">
<li>Bietet <strong>Bindings</strong> für viele Programmiersprachen (z. B. Python, Go, Rust), sodass andere KI-Programme unter verschiedenen Betriebssystemen die Funktionen der Bibliothek nutzen können.</li>



<li>Dieser Zugriff erfolgt über eine <strong>API (Application Programming Interface)</strong>.</li>



<li>Zusätzlich gibt es ein <strong>Command Line Interface (CLI)</strong>, über das man direkt mit der Bibliothek arbeiten kann.</li>
</ul>



<p class="wp-block-paragraph">llama.cpp kann <strong>GGUF-Modelle (Generalized GGML Unified Format)</strong> laden und ausführen – auch in <strong>quantisierter Form</strong>, um Speicher und Rechenleistung zu sparen.</p>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://github.com/ggml-org/llama.cpp">llama.cpp auf GitHub</a></p>



<p class="wp-block-paragraph">Da die direkte Nutzung von <strong>llama.cpp</strong> eher technisch und für Entwickler gedacht ist, greifen viele Nutzer auf eine <strong>höhere Abstraktionsebene</strong> zurück – also auf Runtimes oder Tools, die auf llama.cpp aufbauen und eine benutzerfreundlichere Oberfläche bieten.</p>



<h4 id="lm-studio" class="wp-block-heading">LM Studio</h4>



<p class="wp-block-paragraph"><strong>LM Studio</strong> ist eine komfortable <strong>Runtime</strong> mit klarer <strong>GUI-Ausrichtung</strong> und richtet sich vor allem an <strong>Endanwender</strong>.<br>Es bietet eine integrierte <strong>Modell-Liste</strong> („Model Catalog“), über die man Modelle direkt auswählen und herunterladen kann.</p>



<p class="wp-block-paragraph">Inzwischen legt das Projekt auch mehr Fokus auf <strong>Entwickler</strong>:</p>



<ul class="wp-block-list">
<li>Es gibt ein eigenes <strong>Command Line Tool (<code>lms</code>)</strong>, mit dem sich Modelle laden, verwalten und der API-Server steuern lassen.</li>



<li>Zusätzlich stellt LM Studio eine <strong>OpenAI-kompatible REST-Schnittstelle</strong> bereit, sodass es problemlos von anderen Programmen angesteuert werden kann.</li>
</ul>



<p class="wp-block-paragraph"><strong>Unterstützte Formate:</strong></p>



<ul class="wp-block-list">
<li><strong>GGUF</strong> (Standard für llama.cpp-basierte Runtimes)</li>



<li><strong>MLX</strong> (speziell für Apple über die MLX-Schnittstelle)</li>
</ul>



<p class="wp-block-paragraph"><strong>Basis:</strong> LM Studio baut intern auf <strong>llama.cpp</strong> auf, erweitert dies aber um GUI, API und Komfortfunktionen.</p>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://lmstudio.ai/">LM Studio Website</a><br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://lmstudio.ai/models">LM Studio Model Catalog</a></p>



<h4 id="ollama" class="wp-block-heading">Ollama</h4>



<p class="wp-block-paragraph"><strong>Ollama</strong> ist stärker auf <strong>Developer</strong> ausgerichtet und bietet umfangreiche Steuerungsmöglichkeiten:</p>



<ul class="wp-block-list">
<li><strong>Command Line Interface (CLI)</strong> für direkte Kontrolle</li>



<li><strong>OpenAI-kompatible REST-API</strong> für die Integration in eigene Anwendungen</li>



<li><strong>SDKs</strong> (z. B. für Python, JavaScript), um Ollama von außen programmatisch zu steuern</li>
</ul>



<p class="wp-block-paragraph">Inzwischen richtet sich Ollama aber auch zunehmend an <strong>Endanwender</strong> – dafür gibt es z. B. einen integrierten <strong>UI-Chat-Client</strong>.</p>



<p class="wp-block-paragraph"><strong>Basis:</strong> Auch Ollama nutzt unter der Haube <strong>llama.cpp</strong> als Runtime.</p>



<p class="wp-block-paragraph"><strong>Unterstützte Formate:</strong></p>



<ul class="wp-block-list">
<li><strong>Eigenes Ollama-Format</strong> (<code>Modelfile</code>), vergleichbar mit einem <em>Dockerfile für Modelle</em>.</li>



<li><strong>GGUF</strong> (Standard für llama.cpp-basierte Runtimes) – kann in ein Ollama-Format „importiert“ werden.</li>



<li><strong>PyTorch (.pt / .pth)</strong> – nach Konvertierung.</li>



<li><strong>Safetensors (.safetensors)</strong> – nach Konvertierung.</li>
</ul>



<p class="wp-block-paragraph"><strong>Modellbibliothek:</strong><br>Ollama stellt eine eigene offizielle <strong>Modellbibliothek</strong> bereit, aus der Modelle direkt per CLI heruntergeladen und gestartet werden können:</p>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://ollama.com/library">Ollama Model Library</a></p>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://ollama.com">Ollama Website</a><br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://github.com/ollama/ollama">Ollama GitHub</a></p>



<div class="cnvs-block-alert cnvs-block-alert-1781209805317 is-style-cnvs-block-alert-info" >
	<div class="cnvs-block-alert-inner">
		

<p class="wp-block-paragraph">Was ist eigentlich &#8230;</p>



<ul class="wp-block-list">
<li><strong>API (Application Programming Interface):</strong><br>Schnittstelle, über die Programme Funktionen einer Bibliothek aufrufen können.</li>



<li><strong>Library (Bibliothek):</strong><br>Sammlung von wiederverwendbaren Funktionen, die in eigenen Programmen genutzt werden können.</li>



<li><strong>SDK (Software Development Kit):</strong><br>Werkzeugkasten für Entwickler, der eine Bibliothek, Dokumentation, Beispiele und Tools enthält.</li>



<li><strong>REST API:</strong><br>Eine Web-API, die über das HTTP-Protokoll funktioniert und nach REST-Schema aufgebaut ist. Wird genutzt um Dienste über das Netzwerk anzusprechen.</li>
</ul>

	</div>
	</div>



<h3 id="gaengige-formate-fuer-foundation-models" class="wp-block-heading">Gängige Formate für Foundation Models</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Format / Suffix</th><th>Firma/Organisation</th><th>Kurzbeschreibung</th><th>Typische Anwendung</th></tr></thead><tbody><tr><td><strong>PyTorch (.pt, .pth, .bin, .safetensors)</strong></td><td>Meta / Open-Source</td><td>Standard für Training</td><td>Viele Open-Source-Modelle</td></tr><tr><td><strong>GGUF / GGML (.gguf, .ggml)</strong></td><td>Community (llama.cpp)</td><td>Optimiert für lokale Nutzung</td><td>Ollama, LM Studio, llama.cpp</td></tr><tr><td><strong>ONNX (.onnx)</strong></td><td>Microsoft / Open-Source</td><td>Austauschformat</td><td>Deployment auf Servern/Edge</td></tr><tr><td><strong>TensorRT (.engine)</strong></td><td>NVIDIA</td><td>GPU-optimiertes Format</td><td>Inferenz auf NVIDIA-GPUs</td></tr><tr><td><strong>CoreML (.mlmodel)</strong></td><td>Apple</td><td>Apple-spezifisches Format</td><td>KI auf iPhone, iPad, Mac</td></tr></tbody></table></figure>



<h4 id="welche-runtime-passt-am-besten" class="wp-block-heading">Welche Runtime passt am besten?</h4>



<p class="wp-block-paragraph">Die drei Runtimes unterscheiden sich zunehmend weniger in ihrem Funktionsumfang.<br>Am Ende ist es vor allem <strong>eine Frage der persönlichen Vorlieben</strong>:</p>



<ul class="wp-block-list">
<li>Wie schnell möchte ich starten?</li>



<li>Wie viel Zeit und Energie will ich in Konfiguration und Feinschliff investieren?</li>
</ul>



<p class="wp-block-paragraph">Im nächsten Abschnitt werfen wir einen praktischen Blick auf die <strong>Ollama Runtime</strong>.</p>



<h3 id="ollama-in-der-praxis" class="wp-block-heading">Ollama in der Praxis</h3>



<p class="wp-block-paragraph">In diesem Tutorial zeige ich dir die Installation und Nutzung von Ollama unter Windows.</p>



<h4 id="ollama-herunterladen" class="wp-block-heading">Ollama herunterladen</h4>



<p class="wp-block-paragraph">Rufe die offizielle Download-Seite auf:</p>



<p class="wp-block-paragraph"><a href="https://ollama.com/download">https://ollama.com/download</a></p>



<p class="wp-block-paragraph">Dort wählst du dein Betriebssystem aus.</p>



<figure class="wp-block-image size-full"><img  loading="lazy"  decoding="async"  width="422"  height="208"  src="https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_download.png"  alt=""  class="wp-image-2338"  srcset="https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_download.png 422w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_download-300x148.png 300w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_download-380x187.png 380w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_download-80x39.png 80w"  sizes="auto, (max-width: 422px) 100vw, 422px" ></figure>



<h4 id="installation" class="wp-block-heading">Installation</h4>



<p class="wp-block-paragraph">Nachdem der Download abgeschlossen ist, startest du die Installation.</p>



<ul class="wp-block-list">
<li><strong>Standardinstallation</strong> (Ollama wird in den Standardordner installiert): <code>OllamaSetup.exe</code></li>



<li><strong>Eigener Installationspfad</strong> (Beispiel): <code>OllamaSetup.exe /DIR="D:DeinPfad"</code></li>
</ul>



<h4 id="ollama-starten" class="wp-block-heading">Ollama starten</h4>



<p class="wp-block-paragraph">Die Installation ist abgeschlossen – jetzt können wir Ollama starten.<br>Da Ollama <strong>Command-Line-first</strong> ist, öffnen wir eine Eingabeaufforderung oder PowerShell und starten es dort:</p>



<figure class="wp-block-image size-full"><img  loading="lazy"  decoding="async"  width="812"  height="566"  src="https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_commandline1.png"  alt=""  class="wp-image-2339"  srcset="https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_commandline1.png 812w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_commandline1-300x209.png 300w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_commandline1-768x535.png 768w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_commandline1-380x265.png 380w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_commandline1-550x383.png 550w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_commandline1-800x558.png 800w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_commandline1-80x56.png 80w"  sizes="auto, (max-width: 812px) 100vw, 812px" ></figure>



<h4 id="architektur-von-ollama" class="wp-block-heading">Architektur von Ollama</h4>



<p class="wp-block-paragraph">Ollama hat einen <strong>hierarchischen Aufbau</strong>:</p>



<ul class="wp-block-list">
<li>Es basiert auf <strong>llama.cpp</strong></li>



<li>Beim Start öffnet es einen Port unter<br><a href="http://localhost:11434">http://localhost:11434</a></li>



<li>Darüber stellt es eine <strong>OpenAPI-kompatible REST-API</strong> bereit</li>
</ul>



<figure class="wp-block-image size-full"><img  loading="lazy"  decoding="async"  width="1024"  height="1024"  src="https://www.kimagazin.com/wp-content/uploads/2026/03/ollama.webp"  alt=""  class="wp-image-2340"  srcset="https://www.kimagazin.com/wp-content/uploads/2026/03/ollama.webp 1024w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama-300x300.webp 300w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama-150x150.webp 150w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama-768x768.webp 768w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama-80x80.webp 80w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama-110x110.webp 110w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama-380x380.webp 380w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama-550x550.webp 550w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama-800x800.webp 800w"  sizes="auto, (max-width: 1024px) 100vw, 1024px" ></figure>



<p class="wp-block-paragraph">Auf dieser Grundlage können verschiedene Clients mit Ollama kommunizieren – zum Beispiel:</p>



<ul class="wp-block-list">
<li>die <strong>Kommandozeile</strong></li>



<li>die <strong>Chat-Oberfläche</strong></li>



<li>externe <strong>AI-Programme oder Skripte</strong></li>
</ul>



<h4 id="ollama-modell-laden" class="wp-block-heading">Ollama Modell laden</h4>



<p class="wp-block-paragraph">Nachdem Ollama läuft, wollen wir natürlich ein Modell starten, mit dem wir chatten können.</p>



<p class="wp-block-paragraph"><strong>Modelle finden</strong></p>



<p class="wp-block-paragraph">Eine Übersicht verfügbarer Modelle findest du in der <strong>Ollama Library</strong>:<br><a href="https://ollama.com/library">https://ollama.com/library</a></p>



<p class="wp-block-paragraph"><strong>Modell herunterladen</strong></p>



<p class="wp-block-paragraph">Hast du ein Modell gefunden, kannst du es mit <code>ollama pull</code> in dein lokales Modellverzeichnis laden.<br>Beispiel:</p>



<pre class="wp-block-code"><code>ollama pull llama3.2-vision:11b-instruct-q4_K_M</code></pre>



<figure class="wp-block-image size-large"><img  loading="lazy"  decoding="async"  width="1024"  height="234"  src="https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_pull-1024x234.png"  alt=""  class="wp-image-2341"  srcset="https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_pull-1024x234.png 1024w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_pull-300x68.png 300w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_pull-768x175.png 768w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_pull-380x87.png 380w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_pull-550x126.png 550w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_pull-800x183.png 800w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_pull-80x18.png 80w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_pull.png 1148w"  sizes="auto, (max-width: 1024px) 100vw, 1024px" ></figure>



<p class="wp-block-paragraph"><strong>Modell starten</strong></p>



<p class="wp-block-paragraph">Um mit dem Modell zu chatten, starten wir es mit <code>ollama run</code>:</p>



<pre class="wp-block-code"><code>ollama run llama3.2-vision:11b-instruct-q4_K_M</code></pre>



<figure class="wp-block-image size-full"><img  loading="lazy"  decoding="async"  width="732"  height="82"  src="https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_run.png"  alt=""  class="wp-image-2342"  srcset="https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_run.png 732w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_run-300x34.png 300w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_run-380x43.png 380w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_run-550x62.png 550w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_run-80x9.png 80w"  sizes="auto, (max-width: 732px) 100vw, 732px" ></figure>



<p class="wp-block-paragraph">In diesem Beispiel verwende ich ein <strong>multimodales Vision-/Text-Modell</strong> (4-Bit quantisiert).<br>Das bedeutet: es kann sowohl <strong>Texteingaben</strong> als auch <strong>Bilder</strong> verarbeiten. Und obwohl es sich um ein sehr kleines, hochquantisiertes Modell handelt – und als <strong>Text-Vision-Modell</strong> im reinen Textverständnis nicht ganz so stark ist – liefert es bereits in deutscher Sprache beeindruckend gute Antworten.</p>



<p class="wp-block-paragraph"><strong>Laufzeit-Parameter</strong></p>



<p class="wp-block-paragraph">Beim Start lassen sich zusätzliche Optionen setzen, um das Verhalten des Modells zu steuern.<br>Beispiel:</p>



<pre class="wp-block-code"><code>ollama run granite3.2-vision:latest -o temperature=0.2 -o num_ctx=4096</code></pre>



<p class="wp-block-paragraph">Hiermit werden die Parameter <strong>temperature</strong> und <strong>Kontextlänge (num_ctx)</strong> überschrieben.</p>



<p class="wp-block-paragraph"><strong>Nützliche Befehle zur Modellverwaltung</strong></p>



<ul class="wp-block-list">
<li><code>ollama list</code> → installierte Modelle auflisten</li>



<li><code>ollama show &lt;modell&gt;</code> → Infos &amp; Fähigkeiten eines Modells anzeigen</li>



<li><code>ollama pull &lt;modell&gt;</code> → Modell herunterladen</li>



<li><code>ollama push &lt;modell&gt;</code> → Modell hochladen</li>



<li><code>ollama create &lt;modell&gt;</code> → neues Modell anlegen</li>



<li><code>ollama cp &lt;quelle&gt; &lt;ziel&gt;</code> → Modell kopieren</li>



<li><code>ollama rm &lt;modell&gt;</code> → Modell löschen</li>
</ul>



<p class="wp-block-paragraph"><strong>Runtime-Befehle von Ollama</strong></p>



<p class="wp-block-paragraph">Neben den Modell-Management-Befehlen gibt es auch <strong>Runtime-Befehle</strong>, mit denen laufende Modelle gesteuert werden können:</p>



<ul class="wp-block-list">
<li><code>ollama stop &lt;modell&gt;</code> → laufendes Modell stoppen</li>



<li><code>ollama ps</code> → aktuell laufende Modelle auflisten</li>



<li><code>ollama serve</code> → Ollama-Server ohne Modell starten</li>
</ul>



<p class="wp-block-paragraph"><strong>Modellquellen &amp; Vertrauenswürdigkeit</strong></p>



<p class="wp-block-paragraph">Alle registrierten Modelle findest du hier:<br><a href="https://ollama.com/library">https://ollama.com/library</a></p>



<p class="wp-block-paragraph"><strong>Wichtig:</strong> Eine „echte“ zentrale Qualitätskontrolle gibt es nicht. Ollama ist eher ein <strong>Community-getriebenes Projekt</strong>.<br>Daher solltest du beim Download darauf achten, dass die Modelle von <strong>seriösen Uploadern</strong> stammen (z. B. direkt von <em>Ollama</em> selbst) und ein Modell <strong>validieren</strong>, bevor du es produktiv einsetzt.</p>



<h4 id="herkunft-der-modelle" class="wp-block-heading">Herkunft der Modelle</h4>



<p class="wp-block-paragraph">Viele Modelle werden von den Anbietern (Vendors) zunächst auf <strong>Hugging Face</strong> veröffentlicht:<br><a href="https://huggingface.co/">https://huggingface.co/</a></p>



<p class="wp-block-paragraph">Erst danach werden sie von der Community in die Ollama-Bibliothek übernommen.<br>Daher kann es manchmal etwas dauern, bis <strong>neue Modelle</strong> auch über Ollama verfügbar sind.</p>



<h4 id="modelle-anpassen-customizing" class="wp-block-heading">Modelle anpassen (Customizing)</h4>



<p class="wp-block-paragraph">Ollama erlaubt es, ein Modell zu <strong>customizen</strong>, sodass bestimmte Parameter oder Systemeinstellungen direkt ins Modell „eingebrannt“ werden.<br>Beispiel:</p>



<pre class="wp-block-code"><code>PARAMETER temperature 0.2
SYSTEM "Du bist ein hilfsbereiter Assistent"</code></pre>



<p class="wp-block-paragraph">Damit kannst du z. B. die <strong>Temperatur</strong> dauerhaft setzen oder ein globales <strong>System-Prompt</strong> definieren.</p>



<h4 id="openai-kompatible-rest-api" class="wp-block-heading">OpenAI-kompatible REST-API</h4>



<p class="wp-block-paragraph">Ollama bietet eine <strong>OpenAI-kompatible REST-API</strong>, über die sich Anfragen senden lassen – z. B. mit <code>curl</code> oder in einem <strong>Python-Skript</strong>.</p>



<p class="wp-block-paragraph">Diese API hat sich inzwischen <strong>faktisch als Standard-Schnittstelle</strong> etabliert, um verschiedenste Sprach- und Foundation-Modelle anzusprechen.<br>Das bedeutet: Viele vorhandene Tools und Bibliotheken, die eigentlich für die OpenAI-API gedacht sind, lassen sich direkt mit Ollama nutzen.</p>



<p class="wp-block-paragraph"><strong>API-Nutzung mit curl</strong></p>



<p class="wp-block-paragraph">Über die REST-API von Ollama lassen sich Modelle direkt ansprechen – zum Beispiel mit <code>curl</code>:</p>



<pre class="wp-block-code"><code>curl http://localhost:11434/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer ollama" -d "{"model":"llama3.2-vision:11b-instruct-q4_K_M","messages":&#091;{"role":"user","content":"Welche Stadt ist die Landeshauptstadt von Vorarlberg?"}]}"</code></pre>



<p class="wp-block-paragraph"><strong>API-Nutzung mit python</strong></p>



<pre class="wp-block-code"><code>#pip install openai

from openai import OpenAI

client = OpenAI(
    api_key="dummy",
    base_url="http://localhost:11434/v1"
)

resp = client.chat.completions.create(
    model="llama3.2-vision:11b-instruct-q4_K_M",
    messages=&#091;{"role": "user", "content": "Welche Stadt ist die Landeshauptstadt von Vorarlberg?"}]
)

print(resp.choices&#091;0].message.content)</code></pre>



<pre class="wp-block-code"><code>... und wir erhalten jeweils das richige Ergebnis als json reponse: Bregenz</code></pre>



<h4 id="environment-variablen-in-ollama" class="wp-block-heading">Environment-Variablen in Ollama</h4>



<p class="wp-block-paragraph">Ollama unterstützt verschiedene <strong>Environment-Variablen</strong>, mit denen sich Verhalten und Speicherorte anpassen lassen.<br>Hier eine kleine Auswahl (die vollständige Liste findest du in der offiziellen Dokumentation):</p>



<ul class="wp-block-list">
<li><code>OLLAMA_HOST</code> → Server-Adresse &amp; Port festlegen (z. B. <code>127.0.0.1:0815</code>)</li>



<li><code>OLLAMA_MODELS</code> → Speicherort für Modell-Dateien überschreiben</li>



<li><code>OLLAMA_DEBUG</code> → auf <code>1</code> setzen, um zusätzliche Debug-Ausgaben zu aktivieren</li>
</ul>



<p class="wp-block-paragraph">Damit kannst du Ollama an deine lokale Umgebung und Workflows anpassen.</p>



<h4 id="dokumentation" class="wp-block-heading">Dokumentation</h4>



<p class="wp-block-paragraph">Ollama ist gut dokumentiert – mit vielen Beispielen und Code-Snippets.<br><a href="https://ollama.readthedocs.io/en/">https://ollama.readthedocs.io/en/</a></p>



<h4 id="ollama-gui" class="wp-block-heading">Ollama GUI</h4>



<p class="wp-block-paragraph">Obwohl Ollama ursprünglich <strong>Command-Line-first</strong> entwickelt wurde, gibt es mittlerweile auch eine <strong>grafische Benutzeroberfläche (GUI)</strong>.</p>



<p class="wp-block-paragraph">Du kannst das GUI mit folgendem Befehl starten:</p>



<pre class="wp-block-code"><code>"ollama app.exe"</code></pre>



<p class="wp-block-paragraph"><strong>Frage im GUI:</strong> „Welche Stadt ist die Landeshauptstadt von Vorarlberg?“</p>



<figure class="wp-block-image size-full"><img  loading="lazy"  decoding="async"  width="957"  height="577"  src="https://www.kimagazin.com/wp-content/uploads/2026/03/ollama-gui-text.png"  alt=""  class="wp-image-2343"  srcset="https://www.kimagazin.com/wp-content/uploads/2026/03/ollama-gui-text.png 957w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama-gui-text-300x181.png 300w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama-gui-text-768x463.png 768w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama-gui-text-380x229.png 380w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama-gui-text-550x332.png 550w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama-gui-text-800x482.png 800w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama-gui-text-80x48.png 80w"  sizes="auto, (max-width: 957px) 100vw, 957px" ></figure>



<p class="wp-block-paragraph">Wenn du ein <strong>multimodales Modell</strong> (z. B. <code>llama3.2-vision</code>) verwendest, kannst du im GUI nicht nur Texteingaben machen, sondern auch <strong>Bilder hochladen</strong>.</p>



<p class="wp-block-paragraph">So kannst du direkt Fragen zu einem Bild stellen – das Modell kombiniert dann <strong>Text- und Bildinformationen</strong> in seiner Antwort.</p>



<figure class="wp-block-image size-full"><img  loading="lazy"  decoding="async"  width="845"  height="647"  src="https://www.kimagazin.com/wp-content/uploads/2026/03/cert.webp"  alt=""  class="wp-image-2344"  srcset="https://www.kimagazin.com/wp-content/uploads/2026/03/cert.webp 845w, https://www.kimagazin.com/wp-content/uploads/2026/03/cert-300x230.webp 300w, https://www.kimagazin.com/wp-content/uploads/2026/03/cert-768x588.webp 768w, https://www.kimagazin.com/wp-content/uploads/2026/03/cert-380x291.webp 380w, https://www.kimagazin.com/wp-content/uploads/2026/03/cert-550x421.webp 550w, https://www.kimagazin.com/wp-content/uploads/2026/03/cert-800x613.webp 800w, https://www.kimagazin.com/wp-content/uploads/2026/03/cert-80x60.webp 80w"  sizes="auto, (max-width: 845px) 100vw, 845px" ></figure>



<p class="wp-block-paragraph">Nachdem wir ein Bild hochgeladen und eine Frage gestellt haben, liefert uns das <strong>multimodale Modell</strong> die passende Antwort.</p>



<figure class="wp-block-image size-full"><img  loading="lazy"  decoding="async"  width="958"  height="576"  src="https://www.kimagazin.com/wp-content/uploads/2026/03/vision.png"  alt=""  class="wp-image-2345"  srcset="https://www.kimagazin.com/wp-content/uploads/2026/03/vision.png 958w, https://www.kimagazin.com/wp-content/uploads/2026/03/vision-300x180.png 300w, https://www.kimagazin.com/wp-content/uploads/2026/03/vision-768x462.png 768w, https://www.kimagazin.com/wp-content/uploads/2026/03/vision-380x228.png 380w, https://www.kimagazin.com/wp-content/uploads/2026/03/vision-550x331.png 550w, https://www.kimagazin.com/wp-content/uploads/2026/03/vision-800x481.png 800w, https://www.kimagazin.com/wp-content/uploads/2026/03/vision-80x48.png 80w"  sizes="auto, (max-width: 958px) 100vw, 958px" ></figure>



<h4 id="ollama-im-system-tray" class="wp-block-heading">Ollama im System-Tray</h4>



<p class="wp-block-paragraph">Neben der Kommandozeile und dem GUI ist Ollama nach der Installation auch im <strong>System-Tray</strong> verfügbar (Taskleiste unten rechts in Windows).</p>



<figure class="wp-block-image size-full"><img  loading="lazy"  decoding="async"  width="248"  height="182"  src="https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_systray.png"  alt=""  class="wp-image-2346"  srcset="https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_systray.png 248w, https://www.kimagazin.com/wp-content/uploads/2026/03/ollama_systray-80x60.png 80w"  sizes="auto, (max-width: 248px) 100vw, 248px" ></figure>



<h4 id="einstellungen-in-ollama" class="wp-block-heading">Einstellungen in Ollama</h4>



<p class="wp-block-paragraph">Über die <strong>Einstellungen</strong> in der Ollama-App lassen sich verschiedene Optionen anpassen.<br>Besonders interessant sind dabei:</p>



<ul class="wp-block-list">
<li><strong>Model Location</strong> → legt fest, in welchem Verzeichnis die Modelle gespeichert werden.</li>



<li><strong>Context Length</strong> → bestimmt die Länge des Kontextfensters.
<ul class="wp-block-list">
<li>Je größer das Kontextfenster, desto mehr Text (oder Bildinformationen) kann das Modell gleichzeitig berücksichtigen.</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Achtung: Ein größeres Kontextfenster benötigt auch mehr Grafikspeicher (VRAM).</li>
</ul>
</li>
</ul>



<h2 id="fazit" class="wp-block-heading">Fazit</h2>



<p class="wp-block-paragraph">Lokale Foundation-Modelle sind längst kein Spielzeug mehr. Mit der richtigen Hardware und Runtime lassen sie sich heute effizient einsetzen – privat wie auch im Unternehmen. Sie bringen <strong>Datenschutz, Kontrolle und Kostenersparnis</strong>, erfordern aber auch technisches Know-how und klare Verantwortung.</p>
<ul class="shariff-buttons theme-round orientation-horizontal buttonsize-medium"><li class="shariff-button facebook shariff-nocustomcolor" style="background-color:#4273c8"><a href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.kimagazin.com%2Flokale-ki-modelle-multimodal%2F" title="Bei Facebook teilen" aria-label="Bei Facebook teilen" role="button" rel="nofollow" class="shariff-link" style="; background-color:#3b5998; color:#fff" target="_blank"><span class="shariff-icon" style=""><svg width="32px" height="20px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 32"><path fill="#3b5998" d="M17.1 0.2v4.7h-2.8q-1.5 0-2.1 0.6t-0.5 1.9v3.4h5.2l-0.7 5.3h-4.5v13.6h-5.5v-13.6h-4.5v-5.3h4.5v-3.9q0-3.3 1.9-5.2t5-1.8q2.6 0 4.1 0.2z"/></svg></span></a></li><li class="shariff-button twitter shariff-nocustomcolor" style="background-color:#595959"><a href="https://twitter.com/share?url=https%3A%2F%2Fwww.kimagazin.com%2Flokale-ki-modelle-multimodal%2F&text=KI%20lokal%20betreiben%3A%20Multimodale%20Sprach-%20und%20Bildmodelle%20auf%20eigener%20Hardware" title="Bei X teilen" aria-label="Bei X teilen" role="button" rel="noopener nofollow" class="shariff-link" style="; background-color:#000; color:#fff" target="_blank"><span class="shariff-icon" style=""><svg width="32px" height="20px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#000" d="M14.258 10.152L23.176 0h-2.113l-7.747 8.813L7.133 0H0l9.352 13.328L0 23.973h2.113l8.176-9.309 6.531 9.309h7.133zm-2.895 3.293l-.949-1.328L2.875 1.56h3.246l6.086 8.523.945 1.328 7.91 11.078h-3.246zm0 0"/></svg></span></a></li><li class="shariff-button linkedin shariff-nocustomcolor" style="background-color:#1488bf"><a href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fwww.kimagazin.com%2Flokale-ki-modelle-multimodal%2F" title="Bei LinkedIn teilen" aria-label="Bei LinkedIn teilen" role="button" rel="noopener nofollow" class="shariff-link" style="; background-color:#0077b5; color:#fff" target="_blank"><span class="shariff-icon" style=""><svg width="32px" height="20px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 27 32"><path fill="#0077b5" d="M6.2 11.2v17.7h-5.9v-17.7h5.9zM6.6 5.7q0 1.3-0.9 2.2t-2.4 0.9h0q-1.5 0-2.4-0.9t-0.9-2.2 0.9-2.2 2.4-0.9 2.4 0.9 0.9 2.2zM27.4 18.7v10.1h-5.9v-9.5q0-1.9-0.7-2.9t-2.3-1.1q-1.1 0-1.9 0.6t-1.2 1.5q-0.2 0.5-0.2 1.4v9.9h-5.9q0-7.1 0-11.6t0-5.3l0-0.9h5.9v2.6h0q0.4-0.6 0.7-1t1-0.9 1.6-0.8 2-0.3q3 0 4.9 2t1.9 6z"/></svg></span></a></li><li class="shariff-button whatsapp shariff-nocustomcolor" style="background-color:#5cbe4a"><a href="https://api.whatsapp.com/send?text=https%3A%2F%2Fwww.kimagazin.com%2Flokale-ki-modelle-multimodal%2F%20KI%20lokal%20betreiben%3A%20Multimodale%20Sprach-%20und%20Bildmodelle%20auf%20eigener%20Hardware" title="Bei Whatsapp teilen" aria-label="Bei Whatsapp teilen" role="button" rel="noopener nofollow" class="shariff-link" style="; background-color:#34af23; color:#fff" target="_blank"><span class="shariff-icon" style=""><svg width="32px" height="20px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path fill="#34af23" d="M17.6 17.4q0.2 0 1.7 0.8t1.6 0.9q0 0.1 0 0.3 0 0.6-0.3 1.4-0.3 0.7-1.3 1.2t-1.8 0.5q-1 0-3.4-1.1-1.7-0.8-3-2.1t-2.6-3.3q-1.3-1.9-1.3-3.5v-0.1q0.1-1.6 1.3-2.8 0.4-0.4 0.9-0.4 0.1 0 0.3 0t0.3 0q0.3 0 0.5 0.1t0.3 0.5q0.1 0.4 0.6 1.6t0.4 1.3q0 0.4-0.6 1t-0.6 0.8q0 0.1 0.1 0.3 0.6 1.3 1.8 2.4 1 0.9 2.7 1.8 0.2 0.1 0.4 0.1 0.3 0 1-0.9t0.9-0.9zM14 26.9q2.3 0 4.3-0.9t3.6-2.4 2.4-3.6 0.9-4.3-0.9-4.3-2.4-3.6-3.6-2.4-4.3-0.9-4.3 0.9-3.6 2.4-2.4 3.6-0.9 4.3q0 3.6 2.1 6.6l-1.4 4.2 4.3-1.4q2.8 1.9 6.2 1.9zM14 2.2q2.7 0 5.2 1.1t4.3 2.9 2.9 4.3 1.1 5.2-1.1 5.2-2.9 4.3-4.3 2.9-5.2 1.1q-3.5 0-6.5-1.7l-7.4 2.4 2.4-7.2q-1.9-3.2-1.9-6.9 0-2.7 1.1-5.2t2.9-4.3 4.3-2.9 5.2-1.1z"/></svg></span></a></li><li class="shariff-button mailto shariff-nocustomcolor" style="background-color:#a8a8a8"><a href="mailto:?body=https%3A%2F%2Fwww.kimagazin.com%2Flokale-ki-modelle-multimodal%2F&subject=KI%20lokal%20betreiben%3A%20Multimodale%20Sprach-%20und%20Bildmodelle%20auf%20eigener%20Hardware" title="Per E-Mail versenden" aria-label="Per E-Mail versenden" role="button" rel="noopener nofollow" class="shariff-link" style="; background-color:#999; color:#fff"><span class="shariff-icon" style=""><svg width="32px" height="20px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path fill="#999" d="M32 12.7v14.2q0 1.2-0.8 2t-2 0.9h-26.3q-1.2 0-2-0.9t-0.8-2v-14.2q0.8 0.9 1.8 1.6 6.5 4.4 8.9 6.1 1 0.8 1.6 1.2t1.7 0.9 2 0.4h0.1q0.9 0 2-0.4t1.7-0.9 1.6-1.2q3-2.2 8.9-6.1 1-0.7 1.8-1.6zM32 7.4q0 1.4-0.9 2.7t-2.2 2.2q-6.7 4.7-8.4 5.8-0.2 0.1-0.7 0.5t-1 0.7-0.9 0.6-1.1 0.5-0.9 0.2h-0.1q-0.4 0-0.9-0.2t-1.1-0.5-0.9-0.6-1-0.7-0.7-0.5q-1.6-1.1-4.7-3.2t-3.6-2.6q-1.1-0.7-2.1-2t-1-2.5q0-1.4 0.7-2.3t2.1-0.9h26.3q1.2 0 2 0.8t0.9 2z"/></svg></span></a></li></ul></div>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
