embeddingu seaded.md 6.7 KB

Soovitaksin sul sättida lisaks mudelile veel chunkimise, otsingu ja batch‑töö seaded; need mõjutavad kvaliteeti rohkem kui see, kas embedding engine on Default või Ollama.^1^2

1. Olulisemad embeddingu/RAG seaded

Admin Panel → Settings → Documents alt tasub üle vaadata:

  • Text Splitter / Chunk Size / Overlap
    • Chunk Size: 1500–2500 märki (või ~500–800 tokenit) teadusartiklite jaoks.
    • Chunk Overlap: 200–300 märki, et säiliks lause kontekst.^3^2
    • Markdown Header Splitting: soovitan sisse lülitada, et jaotada teksti H1–H3 pealkirjade järgi ja alles siis chars/tokens põhjal.^2
  • Chunk Min Size Target
    • Väldi liiga väikseid tükke; pane nt 800–1200 märki, et lühikesed lõigud ühendatakse naabritega üheks mõtestatud kontekstiks.^2
  • Embedding Batch Size
    • Kui kasutad GPU‑ga masinat (sul on tugev riistvara), alusta nt väärtusest 16 või 32.
    • Kui näed mälu‑ või ajaprobleeme, vähenda 8 või 4 peale.^4^1
  • Top K
    • Kui artiklid on mahukad ja teemad sarnased, alusta väärtusega 10–20.
    • Kui tunned, et vastus ei kasuta piisavalt konteksti, tõsta 20–40; kui vastused lähevad “ujuma”, vähenda.^5^6
  • Hybrid Search
    • Soovitan On: kasutab lisaks embeddingule ka BM25/lexical otsingut ja rerankerit; see aitab eriti siis, kui küsid täpseid termineid (eesti/inglise segus).^7^2
  • Full Context Mode
    • Knowledge base’i jaoks hoia see Off, et kasutada tavalist fokuseeritud RAG‑i.
    • On sobib pigem üksikute väiksemate failide puhul, kus kogu dokument mahu häst i‑konteksti.^8^2
  • Reranking Model (kui hybrid search on sees)
    • Pane mõni multilingual reranker, nt jinaai/jina-reranker-v2-base-multilingual või BGE reranker; see aitab, kui küsimused on eesti keeles.^1

2. Näide sobivast konfiguratsioonist teadusartiklitele

Hea stardikonfiguratsioon sinu kasutusjuhtumi jaoks võiks olla:

  • Embedding Model Engine: Ollama
  • Embedding Model: nomic-embed-text
  • Embedding Batch Size: 16
  • Text Splitter: tiktoken või recursive
  • Chunk Size: 2000
  • Chunk Overlap: 250
  • Chunk Min Size Target: 1000
  • Markdown Header Splitting: On
  • Hybrid Search: On
  • Reranking Model: jinaai/jina-reranker-v2-base-multilingual
  • Top K: 20
  • Full Context Mode: Off^5^1^2

Kui soovid, võin järgmises vastuses kirjutada sulle ka konkreetsed .env/docker-compose näited nende väärtuste seadmiseks, et need jääksid püsivalt kehtima.

Optimaalne Chunk Size ja Overlap sõltuvad teksti tüübist, aga teadusartiklite (Markdown) jaoks on hea lähtepunkt:

  • Chunk Size: 1500–2500 märki või 500–800 tokenit. qdrant
  • Chunk Overlap: 10–20% Chunk Size väärtusest ehk u 150–300 märki / 50–150 tokenit. firecrawl

Miks just sellised väärtused

  • Liiga väikesed chunkid tõstavad recall’i, aga LLM ei näe piisavat konteksti ja vastused muutuvad katkendlikuks. arxiv
  • Liiga suured chunkid mahuvad küll embeddingusse, kuid retrieval muutub “uduseks” (mitu teemat ühes tükis) ja vektorite arv väheneb, mis võib küsimustele pihta saamist halvendada. milvus
  • 10–20% overlap hoiab lõikude piiril olevad laused alles, ilma et vektoriarv plahvataks (Qdrant ja embedder ei koormatu üle). dev

Praktiline soovitus sinu artiklitele:

  • Pane Open WebUI Settings → Documents alla:
    • Chunk Size: 2000
    • Chunk Overlap: 250
    • Chunk Min Size Target: 1000 (väldib liiga väikseid juppe). docs.openwebui

Seejärel testi 2–3 artikliga: küsi tüüpilisi küsimusi (eesti keeles) ja vaata, kas toodud lõigud on loogilised. Kui tunned, et oluline kontekst jääb välja, tõsta Chunk Size 2400–2600 või Overlap 300–400 peale; kui Qdrant kasvab liiga kiirelt ja indekseerimine on aeglane, liiguta vastupidises suunas (nt 1600 ja 200).

Reindex Knowledge Base Vectors

Reindex Knowledge Base Vectors nupp lasebki olemasolevad dokumendid uuesti vektoritesse arvutada ehk “ümber indekseerida”. github

Lühidalt, mida see teeb:

  • Käib läbi kõik olemasolevad Knowledge’i failid ja tükeldab need uuesti vastavalt hetkel kehtivatele Chunk Size/Overlap jms seadetele. reddit
  • Kutsub uuesti sinu valitud embedding‑mudelit (nt Ollama nomic-embed-text) ja kirjutab uued vektorid Qdranti (või valitud vektorbaasi) kollektsioonidesse. docs.openwebui
  • Seda on hästi oluline teha pärast muutusi, mis mõjutavad vektoreid: embedding‑mudel, embedding engine, chunk‑seaded, mõnikord ka multitenancy/collectioni muudatused. reddit

Erinevus teistest nuppudest:

  • Reset Vector Storage/Knowledge – puhastab vektorbaasi (kaotad kõik vektorid ja seosed, üldjuhul pead failid uuesti üles laadima). github
  • Reindex Knowledge Base Vectors – hoiab failid alles ja arvutab nende vektorid uuesti, ilma et peaksid käsitsi kõiki dokumente üle upload’ima. github