SentenceSplitter & SemanticSplitterNodeParser în LlamaIndex & Data RAG

Transformă documentele brute în noduri (Nodes) atomice: fie respectând cu strictețe granițele propozițiilor și paragrafelor, fie grupând frazele după coerența semantică.

Sintaxă & invocare Python
from llama_index.core.node_parser import SentenceSplitter, SemanticSplitterNodeParser

parser = SentenceSplitter(chunk_size=512, chunk_overlap=50)
nodes = parser.get_nodes_from_documents(documents)

Descriere & Utilizare

Calitatea unui sistem RAG depinde direct de modul în care sunt tăiate documentele. În LlamaIndex, bucățile rezultate se numesc Nodes și păstrează legături dublu înlănțuite (fiecare nod știe care este nodul anterior PREVIOUS și nodul următor NEXT din document).

SentenceSplitter este parserul standard: împarte textul în cel mult chunk_size tokeni, dar garantează că nu va tăia niciodată o propoziție în două la jumătatea ei.

Pentru documente complexe, SemanticSplitterNodeParser folosește un algoritm inteligent: calculează similitudinea embedding-urilor între propoziții consecutive și pune punctul de tăiere exact acolo unde autorul schimbă subiectul!

Cum să o reții ușor

💡 În loc să tai un cârnat cu rigla din 10 în 10 centimetri indiferent unde nimerește cuțitul, SemanticSplitter taie exact la legăturile naturale dintre idei.

Opțiuni și parametri tehnici

  • SentenceSplitter utilizează tokenizatorul modelului curent pentru a număra tokenii, nu caracterele brute.
  • SemanticSplitterNodeParser calculează distanța cosinus între grupuri de propoziții și taie nodul când distanța depășește pragul breakpoint_percentile_threshold=95.

Exemple practice și cazuri de utilizare

  • Integrare directă la crearea indexului: index = VectorStoreIndex.from_documents(docs, transformations=[SentenceSplitter(chunk_size=512)])
  • Chunking semantic: splitter = SemanticSplitterNodeParser(buffer_size=1, breakpoint_percentile_threshold=95, embed_model=Settings.embed_model)

Sfaturi de configurare & capcane

Pentru întrebări punctuale (factoid QA), un chunk_size mai mic (256 - 512 tokeni) oferă o precizie a vectorilor mult mai bună decât valoarea implicită de 1024.

Comenzi și ghiduri înrudite