Fragmentarea documentelor: Chunk Size, Chunk Overlap și Top K în Open WebUI & RAG Local

Open WebUI împarte documentele în fragmente de cel mult CHUNK_SIZE caractere (implicit 1000), cu CHUNK_OVERLAP de suprapunere (implicit 100), și dă modelului RAG_TOP_K fragmente pe căutare (implicit 3).

Configurare & comandă
Settings > Admin > Documents: Text Splitter, Chunk Size (1000), Chunk Overlap (100), Chunk Min Size Target (0), Top K (3)

Text Splitter alege unitatea de măsură: character (implicit, RecursiveCharacterTextSplitter), token (tokeni numărați cu Tiktoken) sau token_transformers (tokenizerul Hugging Face din RAG_TOKENIZER_MODEL, ca limitele fragmentelor să urmeze tokenizerul modelului de embeddings; indisponibil pe :slim). Chunk Size este mărimea maximă a unui fragment, iar Chunk Overlap cât text se repetă între două fragmente vecine.

Markdown Header Text Splitter, activ implicit, taie întâi după titlurile Markdown (H1–H6) și abia apoi aplică splitterul ales, ca secțiunile să rămână împreună. Rezultă uneori fragmente foarte mici (un titlu singur, o intrare de cuprins); Chunk Min Size Target (implicit 0, adică oprit) le lipește de fragmentele următoare cât timp suma nu depășește Chunk Size și fragmentele vin din același document.

Top K (implicit 3) este numărul de fragmente luate din fiecare bază sau fișier atașat, la fiecare căutare. Cu căutarea hibridă activă, ele sunt candidații pe care rerankerul îi reduce la Top K Reranker. Uneltele native ale modelului (query_knowledge_files) folosesc propriul argument count (implicit 5), nu Top K. Setările noi se aplică fișierelor încărcate de acum înainte; bazele Knowledge existente își păstrează fragmentarea până la Reindex, iar fișierele din chat trebuie reîncărcate.

Concepte cheie și caracteristici

Concept / Parametru Descriere practică
CHUNK_SIZE Mărimea maximă a fragmentului, în caractere sau tokeni după splitter; implicit 1000.
CHUNK_OVERLAP Suprapunerea dintre fragmente vecine; implicit 100.
RAG_TEXT_SPLITTER character (implicit), token, token_transformers.
RAG_TOKENIZER_MODEL Tokenizerul Hugging Face pentru token_transformers (de exemplu bert-base-uncased).
ENABLE_MARKDOWN_HEADER_TEXT_SPLITTER Implicit True: împarte întâi după titluri.
CHUNK_MIN_SIZE_TARGET Implicit 0; peste 0, unește fragmentele mai mici decât valoarea cu cele următoare.
RAG_TOP_K Fragmente pe căutare, din fiecare bază sau fișier; implicit 3.
Reindex Refragmentează bazele Knowledge din textul extras inițial (nu redeschide fișierul original).

Exemple practice și scenarii reale

Exemplul 1: Valorile implicite, scrise explicit

-e CHUNK_SIZE=1000 \
-e CHUNK_OVERLAP=100 \
-e RAG_TOP_K=3

Exemplul 2: Documente Markdown cu multe secțiuni scurte

Raportul 1000 / 2000 este exemplul din documentație pentru Chunk Min Size Target.

-e CHUNK_SIZE=2000 \
-e CHUNK_MIN_SIZE_TARGET=1000

Exemplul 3: Fragmente măsurate în tokeni

Cu splitterul token, CHUNK_SIZE și CHUNK_OVERLAP se numără în tokeni, nu în caractere.

-e RAG_TEXT_SPLITTER=token \
-e CHUNK_SIZE=500 \
-e CHUNK_OVERLAP=50

Greșeli frecvente și capcane

  • Mărești Top K fără să mărești contextul modelului: cu Ollama la 4096 tokeni, fragmentele în plus pot fi tăiate.
  • Schimbi Chunk Size și te aștepți ca bazele existente să se schimbe singure. Rulezi Reindex; fișierele încărcate direct în chat le reîncarci.
  • Schimbi motorul de extragere și apeși Reindex: reindexarea lucrează pe textul extras deja, deci fișierele trebuie reîncărcate ca să fie reparsate.

Noțiuni și module înrudite