~/tools / Embeddings und Suche (RAG) / RAG Text Chunker

RAG Text Chunker — Text in überlappende Chunks teilen und eine Ollama-Anfrage an /api/embed für RAG erstellen

Teilen Sie ein langes Dokument in Chunks mit einer maximalen Länge und einer Überlappung auf, bevor Sie es für RAG oder die semantische Suche einbetten. Der Text wird zuerst an Absätzen geschnitten, dann an Zeilen, Sätzen und Leerzeichen, und nur dann innerhalb eines Wortes, wenn nichts anderes passt. Sie erhalten die Chunks und einen sofort ausführbaren curl-Befehl für /api/embed von Ollama, mit allen Chunks in einer Anfrage. Nichts verlässt Ihren Browser.

Die Längen sind in Zeichen angegeben. Das Kontextfenster des Modells wird in Tokens gezählt, und wie viele Tokens ein Text braucht, hängt vom Modell ab; lassen Sie deshalb einen Spielraum.

curl-Befehl

Führen Sie ihn auf einem Rechner aus, der Ollama erreichen kann. Die Antwort enthält einen Vektor pro Chunk, in dieser Reihenfolge.

curl http://localhost:11434/api/embed -d '{
  "model": "embeddinggemma",
  "input": [
    "Embeddings turn text into numeric vectors. You can store them in a vector database and search them with cosine similarity, or use them in a RAG pipeline.\n\nThe length of each vector depends on the embedding model. Use the same model when you index your documents and when you embed a question.\n\n",
    "Ollama'\''s /api/embed endpoint takes a single string or an array of strings. By default, input that is longer than the model'\''s context window is truncated. Set truncate to false to get an error instead.\n\n",
    "Split long documents into smaller chunks before you embed them, so that each chunk fits in the context window and a search can return the part that answers the question."
  ],
  "truncate": false
}'

Chunks

3 Chunks. Der längste hat 294 Zeichen.

  1. #0 · 294 Zeichen · beginnt bei Offset 0

    Embeddings turn text into numeric vectors. You can store them in a vector database and search them with cosine similarity, or use them in a RAG pipeline. The length of each vector depends on the embedding model. Use the same model when you index your documents and when you embed a question.

  2. #1 · 202 Zeichen · beginnt bei Offset 294

    Ollama's /api/embed endpoint takes a single string or an array of strings. By default, input that is longer than the model's context window is truncated. Set truncate to false to get an error instead.

  3. #2 · 169 Zeichen · beginnt bei Offset 496

    Split long documents into smaller chunks before you embed them, so that each chunk fits in the context window and a search can return the part that answers the question.

JSON-Body für /api/embed

{
  "model": "embeddinggemma",
  "input": [
    "Embeddings turn text into numeric vectors. You can store them in a vector database and search them with cosine similarity, or use them in a RAG pipeline.\n\nThe length of each vector depends on the embedding model. Use the same model when you index your documents and when you embed a question.\n\n",
    "Ollama's /api/embed endpoint takes a single string or an array of strings. By default, input that is longer than the model's context window is truncated. Set truncate to false to get an error instead.\n\n",
    "Split long documents into smaller chunks before you embed them, so that each chunk fits in the context window and a search can return the part that answers the question."
  ],
  "truncate": false
}

Anfragefelder nach der Ollama-API-Referenz für /api/embed, geprüft am 2026-11-04. Ollama API: Generate embeddings

Alles geschieht in Ihrem Browser. Das Tool schreibt nur den Befehl und sendet nichts.

Der Endpunkt /api/embed von Ollama nimmt einen einzelnen String oder ein Array von Strings entgegen, und die API-Referenz sagt, dass Eingaben, die länger als das Kontextfenster des Modells sind, standardmäßig abgeschnitten werden. Ein langes Dokument, das als ein String gesendet wird, kann deshalb ohne jeden Fehler sein Ende verlieren, und ein einziger Vektor für ein ganzes Dokument macht es einer Suche schwer, genau den Teil zurückzugeben, der eine Frage beantwortet. Die übliche Lösung ist, das Dokument in kleinere Chunks aufzuteilen und jeden einzeln einzubetten. Dieses Tool teilt Text an der größten Grenze, die noch passt: zuerst an Leerzeilen zwischen Absätzen, dann an Zeilenumbrüchen, dann an Satzenden (auch 。!?), dann an Leerzeichen, und an einzelnen Zeichen nur als letztem Ausweg. Es behält die Trennzeichen bei, sodass die wieder zusammengesetzten Chunks den Originaltext ergeben. Eine Überlappung wiederholt das Ende eines Chunks am Anfang des nächsten, in ganzen Stücken, damit ein an einer Grenze getrennter Satz in einem Chunk vollständig vorkommt. Die Längen werden in Zeichen gezählt. Das Ergebnis ist eine /api/embed-Anfrage mit allen Chunks im Array input, mit truncate auf false, wenn Sie statt stillem Abschneiden einen Fehler möchten. Die Aufteilung wurde mit von Hand gezählten Beispielen geprüft und damit, dass jeder Chunk ein Stück des Originaltexts an der angezeigten Stelle ist.

Die Kernlogik dieses Tools ist Open Source unter der MIT-Lizenz. github.com/seigo5555/toolkitbox-lib/src/text-chunk.ts

Anwendungsfälle

  • Ein Handbuch, eine FAQ oder eine README für eine RAG-Suche auf Ihrem eigenen Ollama-Server vorbereiten und alle Chunks in einer Anfrage einbetten
  • Eine Chunk-Größe finden, die Absätze zusammenhält, indem Sie die Größe ändern und beobachten, wo die Grenzen liegen
  • Sicherstellen, dass nichts stillschweigend abgeschnitten wird: truncate false einschalten, dann gibt Ollama einen Fehler zurück, wenn ein Chunk für das Modell zu lang ist

Verwendung

  1. Fügen Sie den Text ein. Trennen Sie Absätze mit einer Leerzeile, damit sie nach Möglichkeit zusammenbleiben.
  2. Legen Sie die maximale Chunk-Länge und die Überlappung in Zeichen fest, dazu den Namen des Embedding-Modells und die Adresse Ihres Ollama-Servers, falls sie nicht http://localhost:11434 lautet.
  3. Kopieren Sie den curl-Befehl und führen Sie ihn auf einem Rechner aus, der Ollama erreichen kann. Die Antwort enthält einen Vektor pro Chunk, in derselben Reihenfolge. Der Embedding Similarity Calculator auf dieser Website kann sie vergleichen.

FAQ

Welche Chunk-Größe sollte ich verwenden?

Es gibt keine einzig richtige Größe. Jeder Chunk muss in das Kontextfenster des Modells passen, das in Tokens gezählt wird, und kleinere Chunks lassen eine Suche auf eine genauere Textstelle verweisen. Beginnen Sie mit einer Größe, die ein oder zwei Absätze zusammenhält, und vergleichen Sie dann die Suchergebnisse mit dem Embedding Similarity Calculator.

Warum Zeichen und nicht Tokens?

Jedes Embedding-Modell hat seinen eigenen Tokenizer, sodass derselbe Text in verschiedenen Modellen eine unterschiedliche Anzahl von Tokens ergibt, und ein Browser-Tool kann sie nicht für jedes Modell genau zählen. Die Ollama-Bibliothek listet das Kontextfenster jedes Modells in Tokens; sie zeigt zum Beispiel 2K für embeddinggemma und nomic-embed-text und 512 für mxbai-embed-large und all-minilm. Lassen Sie einen Spielraum und verwenden Sie truncate false, um zu lange Chunks zu finden.

Was bewirkt truncate false?

Die API-Referenz von Ollama sagt, dass truncate standardmäßig true ist und Eingaben abschneidet, die das Kontextfenster überschreiten. Bei false gibt Ollama stattdessen einen Fehler zurück. Das Tool fügt "truncate": false hinzu, wenn das Kästchen aktiviert ist, damit ein zu langer Chunk laut fehlschlägt, statt gekürzt zu werden.

Wie funktioniert die Überlappung?

Wenn ein neuer Chunk beginnt, werden die letzten Stücke des vorherigen Chunks (Sätze, Zeilen oder Wörter) an seinem Anfang wiederholt, solange sie in die Überlappungslänge passen und der Chunk innerhalb des Maximums bleibt. Stücke werden nie zerschnitten, um die Überlappung zu füllen, daher kann die tatsächliche Überlappung kürzer sein als die Zahl, die Sie festgelegt haben.

Versteht es Markdown, HTML oder Code?

Nein. Es behandelt alles als reinen Text und teilt an Absätzen, Zeilen, Sätzen und Leerzeichen. Entfernen Sie Auszeichnungen, die nicht in den Embeddings landen sollen, bevor Sie den Text einfügen.

Wird mein Text irgendwohin gesendet?

Nein. Der Text wird in Ihrem Browser geteilt, und das Tool schreibt nur den Befehl. Nichts wird gesendet, bis Sie ihn selbst ausführen.

Passende Artikel

Ähnliche Tools