
Στρατηγικές RAG Chunking: 7 Μέθοδοι, Καταταγμένες με Δεδομένα Ανάκτησης (2026)
Οι στρατηγικές RAG chunking καθορίζουν τι μπορεί να βρει ο retriever σας πριν καν εκτελεστεί το πρώτο ερώτημα. Η μελέτη της Chroma τον Ιούλιο του 2024 έτρεξε 472 ερωτήματα σε πέντε σώματα κειμένου με το text-embedding-3-large, και ο splitter που θα επιλέξετε μετακινεί το recall κατά περίπου πέντε μονάδες: 86,7% για έναν απλό token splitter, 91,7% για αυτόν του GPT-4o, με πέντε chunks να ανακτώνται ανά ερώτημα. Το precision διακυμάνεται πολύ περισσότερο. Σε όλη την έκθεση κυμαίνεται από 1,5% έως 8,0%, κάτι που κάνει την επιλογή μεγέθους chunk μια απόφαση κόστους μεταμφιεσμένη σε απόφαση ποιότητας, και κάθε οδηγός στην πρώτη σελίδα απαριθμεί τις ίδιες επτά μεθόδους χωρίς να δείχνει ποια ανακτά καλύτερα.
Βασικά Συμπεράσματα
- Το chunking τεμαχίζει τα έγγραφα πριν την ενσωμάτωση· τα σημεία τομής καθορίζουν τι μπορεί και τι δεν μπορεί να βρει ο retriever σας.
- Στη μελέτη της Chroma τον Ιούλιο του 2024 με 472 ερωτήματα, το recall κυμάνθηκε από 86,7% έως 91,7% στους μετρημένους splitters.
- Το precision ποικίλλει αρκετές φορές περισσότερο από το recall, άρα το μέγεθος chunk είναι κυρίως απόφαση κόστους tokens.
- Ξεκινήστε από 512 tokens με 10% επικάλυψη και μετά συντονίστε απέναντι στο δικό σας eval set.
Ποια Στρατηγική RAG Chunking Να Χρησιμοποιήσετε; (Κατάταξη)
Για τις περισσότερες ομάδες που δουλεύουν σε επίπεδο πεζό κείμενο, ο αναδρομικός τεμαχισμός χαρακτήρων (recursive character chunking) στα 512 tokens με 10% επικάλυψη είναι η σωστή προεπιλογή. Σέβεται τα όρια παραγράφων και προτάσεων, δεν κοστίζει τίποτα επιπλέον, και στο benchmark 472 ερωτημάτων της Chroma τερμάτισε 3,2 μονάδες recall πίσω από τον splitter βάσει LLM. Απομακρυνθείτε από αυτήν μόνο αν τα έγγραφά σας έχουν ισχυρή δομή ή αν το eval set σας αποδεικνύει το αντίθετο.
| Στρατηγική | Πώς τεμαχίζει | Ξεκινήστε με (μέγεθος / επικάλυψη) | Καλύτερο για | Κόστος εκτέλεσης | Αποδείξεις από πίσω |
|---|---|---|---|---|---|
| Σταθερού μεγέθους (token) | Σκληρή τομή κάθε N tokens | 512 / 50 | Επίπεδο πεζό, γρήγορα πρωτότυπα | Μηδέν (τομή συμβολοσειράς) | Chroma Ιούλ. 2024: 86,7% recall / 5,1% precision @200 |
| Αναδρομικός χαρακτήρων | Τεμαχίζει σε ιεραρχία διαχωριστικών (παράγραφος, πρόταση, λέξη) | 512 / 50 | Γενικά έγγραφα, sites τεκμηρίωσης | Μηδέν | Chroma Ιούλ. 2024: 88,5% recall / 7,0% precision @200 |
| Σημασιολογικός (σημεία τομής embeddings) | Συνημιτονική απόσταση μεταξύ embeddings προτάσεων, τομή στο εκατοστημόριο | 400-600 / 0 | Σώματα με θεματική ποικιλία | 2x κλήσεις ενσωμάτωσης | Chroma Ιούλ. 2024: 89,0% recall / 6,7% precision (cluster @200) |
| Με επίγνωση εγγράφου/δομής | Τεμαχίζει σε κεφαλίδες Markdown, ετικέτες HTML, όρια AST | Ανά ενότητα / 0 | Έγγραφα Markdown, codebases | Μηδέν | Δεν υπάρχει δημόσιο head-to-head benchmark ακόμα |
| Βάσει LLM | Το GPT-4o αποφασίζει σημεία τομής ανά έγγραφο | ~240 / 0 | Ερευνητικές εργασίες, νομικά κείμενα | 1 κλήση LLM ανά έγγραφο | Chroma Ιούλ. 2024: 91,7% recall / 3,9% precision |
| Late chunking | Ενσωματώνει πρώτα όλο το έγγραφο, μετά ομαδοποιεί τα embeddings των tokens σε chunks | Εξαρτάται από το μοντέλο / 0 | Μεγάλα έγγραφα που χρειάζονται δια-chunk πλαίσιο | Κλήση ενσωμάτωσης μεγάλου πλαισίου | Δεν υπάρχει δημόσιο head-to-head benchmark ακόμα (arXiv 2409.04701) |
| Ιεραρχικός (γονέας-παιδί) | Μικρά chunks για ανάκτηση, ο γονέας επιστρέφει για παραγωγή | Παιδί 256 / γονέας 1.024 | QA πολλαπλών βημάτων, μεγάλες απαντήσεις | Επιβάρυνση αποθήκευσης ευρετηρίου | Δεν υπάρχει δημόσιο head-to-head benchmark ακόμα |
Η ανάγνωσή μας: ξεκινήστε με τον αναδρομικό χαρακτήρων. Υστερεί μόνο των splitters cluster και LLM σε recall στα δεδομένα της Chroma, και το precision 3,9% του LLM splitter σημαίνει ότι τροφοδοτείτε τον generator με περίπου διπλάσιο θόρυβο ανά σχετικό token. Οι περισσότερες ομάδες δεν έχουν πρόβλημα chunking· έχουν πρόβλημα μεγέθους chunk που δεν έχουν μετρήσει ποτέ.
Τι Λένε Πραγματικά τα Δεδομένα για το Μέγεθος Chunk;
Η μόνη δημόσια head-to-head σύγκριση των στρατηγικών RAG chunking είναι η τεχνική έκθεση της Chroma «Evaluating Chunking Strategies for Retrieval» (Brandon Smith και Anton Troynikov, δημοσιεύτηκε στις 3 Ιουλίου 2024). Έτρεξαν 472 ερωτήματα σε 5 σώματα (328.208 tokens), ενσωμάτωσαν τα πάντα με το OpenAI text-embedding-3-large και ανέκτησαν 5 chunks ανά ερώτημα. Οι παρακάτω γραμμές προέρχονται από τον πίνακα του παραρτήματος της έκθεσης για όλα τα σώματα με text-embedding-3-large και 5 ανακτημένα chunks, άρα είναι άμεσα συγκρίσιμες μεταξύ τους:
| Splitter | Μέγεθος chunk (tokens) | Recall | Precision | IoU |
|---|---|---|---|---|
| TokenTextSplitter | 200 | 86,7% | 5,1% | 5,1% |
| RecursiveCharacterTextSplitter | 200 | 88,5% | 7,0% | 7,0% |
| ClusterSemanticChunker | 200 | 89,0% | 6,7% | 6,6% |
| LLMSemanticChunker (GPT-4o) | ~240 | 91,7% | 3,9% | 3,9% |
Ο κύριος πίνακας αποτελεσμάτων της Chroma, που αναφέρει διαφορετική ρύθμιση ανάκτησης, τοποθετεί το καλύτερο precision του cluster chunker στο 8,0% με recall 87,3%, και απλώνει το εύρος του precision σε όλους τους splitters της από 1,5% (KamradtSemanticChunker) έως 8,0%. Πηγή: Chroma Research, Evaluating Chunking Strategies
Το «Introducing Contextual Retrieval» της Anthropic (δημοσιεύτηκε στις 19 Σεπτεμβρίου 2024) προσεγγίζει το πρόβλημα από άλλη γωνία. Το βασικό τους ποσοστό αποτυχίας ανάκτησης top-20 ήταν 5,7%· τα contextual embeddings από μόνα τους το έριξαν στο 3,7% (μείωση 35%), το contextual BM25 από πάνω το έφερε στο 2,9% (49%), και το reranking το ώθησε στο 1,9% (67%). Η Anthropic δεν δημοσιεύει το ακριβές μέγεθος chunk ή την επικάλυψη που χρησιμοποίησε, οπότε αντιμετωπίστε τα ως αποδείξεις επιπέδου μεθόδου, όχι επιπέδου μεγέθους. Πηγή: Anthropic, Contextual Retrieval.
Η ανάγνωσή μας: τρία συμπεράσματα από την αριθμητική. Πρώτον, η επιλογή splitter αξίζει πραγματικό recall, και η Chroma το λέει καθαρά: ορισμένες στρατηγικές ξεπερνούν άλλες έως και 9% σε recall. Στον κύριο πίνακα αποτελεσμάτων της το recall κυμαίνεται από 83,6% (KamradtSemanticChunker) έως 91,9% (LLMSemanticChunker), και μέσα στις παραπάνω γραμμές retrieve-5 εξαπλώνεται από 86,7% έως 91,7%. Το precision κινείται αρκετές φορές περισσότερο στα ίδια δεδομένα: 1,5% έως 8,0%, ένα εύρος 5,3x έναντι 1,1x του recall. Άρα το recall είναι εκεί που μαζεύετε μερικές μονάδες, ενώ το precision και το κόστος tokens είναι εκεί που η επιλογή πονάει πραγματικά. Δεύτερον, ο splitter βάσει LLM αγοράζει το κορυφαίο recall με το χειρότερο precision: πληρώνετε μία κλήση LLM ανά έγγραφο και τροφοδοτείτε τον generator με περισσότερο θόρυβο. Τρίτον, οι αριθμοί της Anthropic δείχνουν ότι ο εμπλουτισμός των chunks με πλαίσιο (5,7% σε 3,7%) μετακίνησε το ποσοστό αποτυχίας περισσότερο από οποιαδήποτε επιλογή splitter στον πίνακα της Chroma. Εμπλουτίστε τα chunks πριν ξανασυντονίσετε τον splitter. Το reranking ανακτά chunks που ο splitter σας παραμόρφωσε, και η υβριδική αναζήτηση συνδυάζει BM25 με διανυσματική ανάκτηση για τον ίδιο λόγο.
Ειλικρινείς περιορισμοί: και οι δύο μελέτες χρησιμοποιούν ένα μόνο μοντέλο ενσωμάτωσης, μόνο αγγλικά σώματα, και καμία δεν είναι ελεγχόμενη δοκιμή του δικού σας σώματος. Σε 472 ερωτήματα, η διαφορά μεταξύ του καλύτερου και του χειρότερου splitter ήταν περίπου 5 μονάδες recall με 5 ανακτημένα chunks, και αναλογικά πολύ μεγαλύτερη διαφορά στο precision.
Γιατί το Μέγεθος Chunk Καθορίζει την Ποιότητα Ανάκτησης;
Το μέγεθος chunk ορίζει την κοκκομετρία του κλειδιού ανάκτησής σας. Ένα chunk 400 tokens παράγει μια εστιασμένη ενσωμάτωση που ταιριάζει με συγκεκριμένα ερωτήματα· ένα chunk 4.000 tokens κάνει μέσο όρο πάνω από πολλά θέματα και δεν ταιριάζει ακριβώς με τίποτα. Τα μικρά chunks ανακτούν το ακριβές απόσπασμα αλλά μπορεί να κατακερματίσουν μια απάντηση σε πολλά αποτελέσματα. Τα μεγάλα chunks κρατούν το πλαίσιο ενωμένο αλλά αποδυναμώνουν το σήμα της ενσωμάτωσης.
Το ανώτατο όριο πλαισίου του μοντέλου ενσωμάτωσης μετράει κι αυτό. Αν το μοντέλο σας έχει όριο 512 tokens εισόδου και του δώσετε 800, η ουρά περικόπτεται σιωπηλά. Η ενσωμάτωσή σας αντιπροσωπεύει τα δύο τρίτα του chunk. Χωρίς καταγεγραμμένο σφάλμα.
Μετά η πλευρά του generator. Οι Liu και συνεργάτες έδειξαν στο «Lost in the Middle» (arXiv 2307.03172, 2023) ότι η ακρίβεια των LLM πέφτει πάνω από 20% όταν το σχετικό έγγραφο κάθεται στη μέση ενός μεγάλου πλαισίου. Η ανάκτηση πέντε chunks των 1.000 tokens ρίχνει 5.000 tokens στο prompt, και η απάντηση που χρειάζεστε μπορεί να προσγειωθεί στη θέση που το μοντέλο διαβάζει χειρότερα. Τα μικρότερα chunks κρατούν το σχετικό απόσπασμα πιο κοντά σε θέση που το μοντέλο χειρίζεται καλά.
Σκεφτείτε το σαν το ευρετήριο μιας βιβλιοθήκης. Μια κάρτα που γράφει «Ενότητα 4.2, παράγραφος 3: πολιτική επιστροφών» σας φέρνει τη σελίδα. Μια κάρτα που γράφει «τα πάντα για το εμπόριο τον 20ό αιώνα» σας φέρνει το κτίριο. Η ενσωμάτωσή σας είναι η κάρτα. Φτιάξτε μια εφαρμογή RAG από άκρη σε άκρη για να δείτε πού κάθεται το chunking στη γραμμή παραγωγής, και διαβάστε τον οδηγό μας για το context engineering για το πώς τα ανακτημένα chunks γίνονται tokens του prompt. Ο οδηγός chunking της Pinecone πλαισιώνει το ίδιο αντιστάθμισμα από την πλευρά της διανυσματικής βάσης.
Σταθερού Μεγέθους και Αναδρομικό Chunking (Ξεκινήστε Από Εδώ)
Το σταθερού μεγέθους είναι η γραμμή βάσης απέναντι στην οποία μετράτε τα πάντα· το αναδρομικό είναι αυτό που πραγματικά παραδίδετε.
Chunking tokens σταθερού μεγέθους
Τεμαχίστε κάθε N tokens ανεξαρτήτως περιεχομένου.
def fixed_size_chunks(text: str, size: int = 512, overlap: int = 50) -> list[str]:
tokens = text.split() # whitespace proxy; use tiktoken for real token counts
chunks = []
step = size - overlap
for i in range(0, len(tokens), step):
chunk = " ".join(tokens[i : i + size])
chunks.append(chunk)
if i + size >= len(tokens):
break
return chunksΣωστή απάντηση για: επίπεδο πεζό χωρίς δομή κεφαλίδων, γρήγορα πρωτότυπα, και οποιαδήποτε σύγκριση γραμμής βάσης. Δεν είναι χαζό. Είναι η ομάδα ελέγχου.
Αναδρομικός τεμαχισμός χαρακτήρων
Ο RecursiveCharacterTextSplitter της LangChain τεμαχίζει σε μια ιεραρχία διαχωριστικών: πρώτα \n\n (παράγραφοι), μετά \n (γραμμές), μετά . (προτάσεις), μετά (λέξεις). Κάθε chunk μένει κάτω από το chunk_size σεβόμενο το μεγαλύτερο φυσικό όριο που χωράει.
from langchain_text_splitters import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=512,
chunk_overlap=50,
separators=["\n\n", "\n", ". ", " ", ""],
length_function=len, # swap for tiktoken len for true token counts
)
chunks = splitter.split_text(document)Η λίστα διαχωριστικών είναι το μέρος που κάθε ανταγωνιστής παραλείπει. Ο splitter δοκιμάζει πρώτα το \n\n και πέφτει στο . μόνο όταν μια παράγραφος ξεπερνά το chunk_size. Αν η Markdown σας έχει κεφαλίδες, προσθέστε το "## " πριν το "\n\n" ώστε οι ενότητες να μένουν άθικτες.
Αριθμητική επικάλυψης chunk: στα 512 tokens με επικάλυψη 50 tokens, το βήμα είναι 462. Ένα έγγραφο 10.000 tokens παράγει ceil(10000 / 462) = 22 chunks. Συνολικά ενσωματωμένα tokens: 22 x 512 = 11.264, που σημαίνει ότι επανενσωματώνετε περίπου το 12,6% του σώματος ως επικάλυψη. Αυτό είναι το κόστος αποθήκευσης και API του να μην μένουν ορφανές οι προτάσεις στα όρια.
Πώς Δουλεύει το Σημασιολογικό Chunking και Αξίζει το Κόστος;
Το σημασιολογικό chunking ενσωματώνει κάθε πρόταση, μετρά τη συνημιτονική απόσταση μεταξύ γειτονικών embeddings προτάσεων και τεμαχίζει εκεί που η απόσταση ξεπερνά ένα κατώφλι εκατοστημορίου (συνήθως το 95ο). Τα chunks σπάνε σε αλλαγές θέματος αντί για αυθαίρετες μετρήσεις tokens. Το notebook του Greg Kamradt «5 Levels of Text Splitting» επινόησε αυτή την προσέγγιση σημείου τομής εκατοστημορίου, και η μελέτη της Chroma μετρά τους chunkers του ονομαστικά.
from langchain_experimental.text_splitter import SemanticChunker
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
splitter = SemanticChunker(
embeddings,
breakpoint_threshold_type="percentile",
breakpoint_threshold_amount=95,
)
chunks = splitter.split_text(document)Τα μαθηματικά του κόστους είναι το μέρος που κανείς δεν βάζει μπροστά. Το σημασιολογικό chunking ενσωματώνει το σώμα σας δύο φορές: μία για να υπολογίσει τις αποστάσεις προτάσεων και να βρει τα σημεία τομής, μία για να ενσωματώσει τα προκύπτοντα chunks για ευρετηρίαση. Στην τιμή του text-embedding-3-large της OpenAI, $0,13 ανά 1 εκατ. tokens, ένα σώμα 10 εκατ. tokens κοστίζει $1,30 για κανονική ευρετηρίαση και $2,60 με σημασιολογικό chunking. Πληρώνετε διπλά πριν τρέξει το πρώτο ερώτημα.
Τι αγοράζετε με αυτό; Στις γραμμές retrieve-5 της Chroma, ο σημασιολογικός chunker βάσει cluster έπιασε recall 89,0% και precision 6,7% έναντι 88,5% και 7,0% του αναδρομικού στο ίδιο μέγεθος 200 tokens. Στον κύριο πίνακα αποτελεσμάτων ο ίδιος chunker καταγράφει το καλύτερο precision της μελέτης, 8,0%, με recall 87,3%. Μισή μονάδα recall πέρα-δώθε, και ένα αποτέλεσμα precision που αλλάζει πρόσημο ανάλογα με τη ρύθμιση ανάκτησης που διαβάζετε, για διπλό λογαριασμό ενσωμάτωσης. Η ετυμηγορία μας: το σημασιολογικό chunking αποδίδει σε σώματα με θεματική ποικιλία (αρχεία ειδήσεων, συλλογές εργασιών) όπου τα σταθερά όρια τεμαχίζουν τακτικά στη μέση ενός θέματος. Για ομοιογενή σώματα (τεκμηρίωση προϊόντος, μία βάση γνώσης), ο αναδρομικός σας δίνει το 95% της ποιότητας με μισό κόστος. Αν τρέχετε μοντέλα ενσωμάτωσης τοπικά με το Ollama, το κόστος της διπλής ενσωμάτωσης πέφτει σε χρόνο υπολογισμού.
Chunking με Επίγνωση Εγγράφου: Markdown, HTML και Κώδικας
Ο τεμαχισμός με επίγνωση δομής χρησιμοποιεί τα ίδια τα όρια του εγγράφου (κεφαλίδες, στοιχεία λιστών, ορισμούς συναρτήσεων) αντί για μετρήσεις χαρακτήρων. Μια H2 της Markdown είναι σημασιολογικό όριο που κάποιος άνθρωπος τοποθέτησε σκόπιμα· ένας splitter χαρακτήρων τη λιανίζει.
from langchain_text_splitters import MarkdownHeaderTextSplitter
headers = [("#", "h1"), ("##", "h2"), ("###", "h3")]
splitter = MarkdownHeaderTextSplitter(headers_to_split_on=headers)
splits = splitter.split_text(markdown_doc)
# Each split carries metadata: {"h1": "...", "h2": "...", "h3": "..."}Για τον κώδικα, τα όρια είναι κόμβοι AST. Οι NodeParsers της LlamaIndex παραδίδουν splitters με επίγνωση γλώσσας που σπάνε σε ορισμούς συναρτήσεων και κλάσεων. Η κρίσιμη λεπτομέρεια: κρατήστε το μπλοκ imports και την υπογραφή της κλάσης που περικλείει προσαρτημένα σε κάθε chunk συνάρτησης. Ένα σώμα συνάρτησης χωρίς τα imports του είναι θόρυβος που δεν ενσωματώνεται, οπότε προσαρτήστε και τα δύο στην αρχή κάθε chunk και η ενσωμάτωση συλλαμβάνει τι κάνει η συνάρτηση και από τι εξαρτάται.
Ειδικά για RAG κώδικα: τεμαχισμός στα όρια AST, imports προσαρτημένα, 256-512 tokens ανά συνάρτηση, μηδενική επικάλυψη.
Τι Γίνεται με το Late, το Ιεραρχικό και το Agentic Chunking;
Αυτές είναι οι προχωρημένες στρατηγικές RAG chunking πίσω από τη φασαρία του «RAG 2.0», και οι τρεις τους κάθονται στο 1/10 κάλυψης SERP.
Late chunking
Το late chunking, που εισήχθη από τους Günther και συνεργάτες στο «Late Chunking: Contextual Chunk Embeddings Using Long-Context Embedding Models» (arXiv 2409.04701, Σεπτέμβριος 2024), ενσωματώνει πρώτα ολόκληρο το έγγραφο με ένα μοντέλο μεγάλου πλαισίου και μετά ομαδοποιεί τα embeddings επιπέδου token σε διανύσματα chunk, ώστε κάθε chunk να κουβαλά πλαίσιο όλου του εγγράφου και το «κοστίζει $40/μήνα» να ξέρει σε τι αναφέρεται το «το». Η περίληψη ισχυρίζεται ανώτερη ανάκτηση σε όλες τις εργασίες αλλά δεν δημοσιεύει κανένα νούμερο επικεφαλίδας που να μπορούσαμε να επαληθεύσουμε. Το κείμενο της Weaviate εξηγεί τη μηχανική και σταματά κι αυτό πριν από μια ελεγχόμενη σύγκριση. Κατάσταση αποδείξεων: υποσχόμενη, μη ποσοτικοποιημένη.
Ιεραρχικό chunking (γονέας-παιδί)
Ευρετηριάστε μικρά chunks (256 tokens) για ανάκτηση· επιστρέψτε τον γονέα (1.024 tokens) στον generator. Ο retriever βρίσκει τη βελόνα· ο generator παίρνει τα άχυρα γύρω της. Συντηρείτε δύο επίπεδα ευρετηρίου και μια αντιστοίχιση γονέα-παιδιού. Κανένα δημόσιο benchmark δεν απομονώνει το αποτέλεσμα.
Chunking βάσει LLM / agentic
Ο LLMSemanticChunker της μελέτης της Chroma χρησιμοποιεί το GPT-4o για να αποφασίζει σημεία τομής ανά έγγραφο: recall 91,7% (υψηλότερο) και precision 3,9% (χαμηλότερο). Πληρώνετε μία κλήση LLM ανά έγγραφο κατά την ευρετηρίαση (περίπου $100 για ένα σώμα 10.000 εγγράφων) και τροφοδοτείτε τον generator με περισσότερο θόρυβο. Κρατήστε το για πραγματικά ακανόνιστα σώματα: νομικά έγγραφα, σαρωμένα PDF χωρίς εξαγώγιμες κεφαλίδες.
Ποιο Μέγεθος Chunk Ταιριάζει στο Μοντέλο Ενσωμάτωσής Σας;
Τα μέγιστα tokens εισόδου του μοντέλου ενσωμάτωσής σας είναι ανώτατο όριο περικοπής, όχι σύσταση. Ένα μοντέλο που δέχεται 8.192 tokens δεν ενσωματώνει καλύτερα στα 8.192 από ό,τι στα 512. Η ποιότητα υποβαθμίζεται από αραίωση πολύ πριν το ανώτατο όριο: το μοντέλο κάνει μέσο όρο του νοήματος σε περισσότερα tokens και το διάνυσμα παρασύρεται προς το κεντροειδές του σώματος. Η στήλη σύστασης παρακάτω είναι η ερμηνεία της Techsy, όχι η καθοδήγηση των προμηθευτών.
| Μοντέλο ενσωμάτωσης | Μέγιστα tokens εισόδου | Διαστάσεις εξόδου | Συνιστώμενο αρχικό μέγεθος chunk |
|---|---|---|---|
| OpenAI text-embedding-3-small | 8.192 | 1.536 | 512 tokens |
| OpenAI text-embedding-3-large | 8.192 | 3.072 | 512 tokens |
| Cohere embed-english-v3.0 | 512 | 1.024 | 256 tokens |
| Cohere embed-v4.0 | 128.000 | 1.536 (προεπιλογή) | 512 tokens |
| BAAI bge-large-en-v1.5 | 512 | 1.024 | 256 tokens |
| Voyage voyage-3.5 | 32.000 | 1.024 (προεπιλογή) | 512 tokens |
Πηγές: Οδηγός embeddings της OpenAI, Τεκμηρίωση Cohere embed, Τεκμηρίωση embeddings της Voyage, Κάρτα μοντέλου BGE.
Το μοτίβο: μοντέλα με σκληρό όριο 512 tokens (Cohere v3, BGE) απαιτούν chunks πολύ κάτω από 512, επειδή η περικοπή είναι σιωπηλή. Δώστε σε ένα 600 tokens και τα τελευταία 88 εξαφανίζονται από την ενσωμάτωση χωρίς καταγεγραμμένο σφάλμα. Μοντέλα με μεγάλα όρια (OpenAI, Voyage, Cohere v4) ανέχονται μεγαλύτερα chunks αλλά δεν τα επιβραβεύουν. Το μέγιστο μήκος εισόδου ενός μοντέλου είναι όριο περικοπής, όχι σύσταση.
Συνδυάστε το με τη συλλογή μας για τα καλύτερα μοντέλα ενσωμάτωσης για RAG, τι μετράει πραγματικά ένα σκορ MTEB, και τα embeddings των Voyage, OpenAI και Cohere δίπλα-δίπλα πριν δεσμευτείτε σε μοντέλο.
Πώς Τεμαχίζετε Έγγραφα σε Γλώσσες Εκτός Αγγλικών;
Οι tokenizers δεν είναι γλωσσικά ουδέτεροι. Οι Petrov και συνεργάτες έδειξαν στο «Language Model Tokenizers Introduce Unfairness Between Languages» (arXiv 2305.15425, 2023) ότι το ίδιο κείμενο μεταφρασμένο σε διάφορες γλώσσες μπορεί να διαφέρει σε μήκος tokenization έως και 15 φορές. Ακόμα και μοντέλα επιπέδου χαρακτήρα και byte δείχνουν διαφορά πάνω από 4 φορές για ορισμένα γλωσσικά ζεύγη. Ένα chunk 512 tokens χωράει πολύ λιγότερο νόημα στα τουρκικά, τα αραβικά ή τα ιαπωνικά από ό,τι στα αγγλικά.
Ορίστε η ίδια πρόταση tokenized με την κωδικοποίηση cl100k_base του tiktoken (ο tokenizer του GPT-4):
import tiktoken
enc = tiktoken.get_encoding("cl100k_base")
en = "The retrieval system returns relevant documents."
tr = "Erişim sistemi ilgili belgeleri döndürür."
ja = "検索システムは関連文書を返します。"
print(len(enc.encode(en)), len(enc.encode(tr)), len(enc.encode(ja)))
# 7 tokens, 19 tokens, 19 tokens: same meaning, 2.7x token spread| Γλώσσα | Πρόταση | Tokens cl100k_base | Αναλογία έναντι Αγγλικών |
|---|---|---|---|
| Αγγλικά | The retrieval system returns relevant documents. | 7 | 1,0x |
| Γερμανικά | Das Retrieval-System gibt relevante Dokumente zurück. | 13 | 1,9x |
| Τουρκικά | Erişim sistemi ilgili belgeleri döndürür. | 19 | 2,7x |
| Ιαπωνικά | 検索システムは関連文書を返します。 | 19 | 2,7x |
| Αραβικά | يعيد نظام الاسترجاع المستندات ذات الصلة. | 27 | 3,9x |
Οι μετρήσεις παρήχθησαν με το tiktoken cl100k_base, 30 Ιουλίου 2026.
Πρακτική καθοδήγηση: με σταθερό μέγεθος chunk 512 tokens, τα τουρκικά και ιαπωνικά σας chunks χωρούν περίπου το 37% του νοήματος που χωρούν τα αγγλικά σας chunks, και τα αραβικά σας chunks περίπου το 26%. Τεμαχίστε με μέτρηση χαρακτήρων ή προτάσεων ανά γλώσσα, ή αυξήστε τον προϋπολογισμό tokens αναλογικά (περίπου 1.400 για τουρκικά, 2.000 για αραβικά). Οι γλώσσες CJK δεν έχουν όρια λέξεων με κενά, οπότε οι splitters χαρακτήρων συμπεριφέρονται διαφορετικά. Η μορφολογία των αραβικών πακετάρει πολλαπλούς γραμματικούς δείκτες σε μονά tokens, φουσκώνοντας τις μετρήσεις ακόμα περισσότερο.
Ένα Δέντρο Απόφασης για την Επιλογή Στρατηγικής Chunking
What kind of document?
├── Structured (Markdown / HTML / code)
│ └── Document-aware splitting on headers or AST boundaries
│ ├── Docs site → MarkdownHeaderTextSplitter, 512 tokens, 0 overlap
│ └── Codebase → AST/function splitter, 256-512 tokens, imports prepended
├── Flat prose (articles, reports, books)
│ └── RecursiveCharacterTextSplitter, 512 tokens, 50 overlap
│ └── Topic-diverse? → try SemanticChunker at 95th percentile
├── Conversational logs (chat, support tickets)
│ └── Split on turn boundaries, group 3-5 turns per chunk, 256 tokens
└── Mixed corpus
└── Route by MIME type → apply per-type strategy above
└── Then: how long are expected answers?
├── Short (1-2 sentences) → child 256, no parent
└── Long (multi-paragraph) → hierarchical: child 256, parent 1,024Τρεις γρήγορες συνταγές. Chatbot τεκμηρίωσης: MarkdownHeaderTextSplitter στα 512 tokens, μηδενική επικάλυψη, διαδρομή κεφαλίδων στα μεταδεδομένα. Βοηθός αναζήτησης κώδικα: τεμαχισμός στα όρια AST στα 256-512 tokens ανά συνάρτηση, imports προσαρτημένα. Μικτό εταιρικό σώμα: δρομολογήστε ανά τύπο εγγράφου κατά την εισαγωγή και αποθηκεύστε στη διανυσματική βάση όπου αποθηκεύετε τα chunks με μεταδεδομένα τύπου για συντονισμό ανά τύπο αργότερα. Αυτή η δρομολόγηση ανά έγγραφο είναι το σύνολο του προσαρμοστικού chunking για εφαρμογές RAG.
Εργαλεία: LangChain εναντίον LlamaIndex εναντίον Chonkie
Δεν πουλάμε κανένα από αυτά· οι τρεις κορυφαίες σελίδες κατάταξης για αυτή τη λέξη-κλειδί είναι blogs προμηθευτών με CTA προϊόντων.
| Βιβλιοθήκη | Splitters που παραδίδει | Καλύτερο για | Προσοχή σε |
|---|---|---|---|
| LangChain | Recursive, Markdown, HTML, κώδικας (AST), Semantic, βάσει Token | Γενικής χρήσης· η μεγαλύτερη γκάμα splitters | Βάρος imports· αναταράξεις API μεταξύ minor εκδόσεων |
| LlamaIndex | NodeParsers: Sentence, Markdown, Code, Hierarchical, Semantic | Γραμμές εγγράφων ήδη σε LlamaIndex | Πιο σφιχτή σύζευξη με το γράφημα εισαγωγής της LlamaIndex |
| Chonkie | Token, Recursive, Semantic, SDPM (late), Code | Εστίαση στην ταχύτητα· ελαφρύ, γρήγορο tokenization | Νεότερο έργο· μικρότερη κοινότητα |
Πηγές: Τεκμηρίωση LangChain, NodeParsers της LlamaIndex, Τεκμηρίωση Chonkie.
Και οι τρεις υλοποιούν τους ίδιους βασικούς αλγορίθμους, οπότε επιλέξτε με βάση τι χρησιμοποιεί ήδη η γραμμή παραγωγής σας. Για την ευρύτερη στοίβα εργαλείων RAG πέρα από τους splitters και τη σύγκριση Qdrant, Chroma και pgvector για αποθήκευση, δείτε τους οδηγούς του cluster μας.
Πώς Προσεγγίζει η Techsy το Chunking
Σε RAG υλοποιήσεις πελατών, η ομάδα της Techsy ξεκινά από 512 tokens με 10% επικάλυψη και δεν αγγίζει τον splitter μέχρι να χτίσουμε ένα eval set 20-50 ερωτήσεων από τα πραγματικά tickets υποστήριξης του πελάτη. Το eval set έρχεται πρώτο· μετά αλλάζουμε μία μεταβλητή τη φορά: μέγεθος, επικάλυψη, στρατηγική. Καμία αλλαγή splitter χωρίς νούμερο πριν-και-μετά στα ίδια ερωτήματα. Κλείστε μια δωρεάν συνεδρία για ένα δεύτερο ζευγάρι μάτια στη γραμμή παραγωγής ανάκτησής σας.
Σχετικά με τον Συγγραφέα
Ο Mert Batur είναι Συνιδρυτής της Techsy.io, όπου η ομάδα παραδίδει AI agents, συστήματα αυτοματισμού και γραμμές φωνής/SDR για B2B πελάτες. Γράφει για τη στοίβα εργαλείων LLM που η ομάδα της Techsy χρησιμοποιεί πραγματικά στην παραγωγή, συμπεριλαμβανομένης της δουλειάς σε RAG και ανάκτηση πίσω από υλοποιήσεις βάσεων γνώσης πελατών. Συνδεθείτε στο LinkedIn.
Συχνές Ερωτήσεις
Τι είναι το chunking στο RAG;
Το chunking είναι το βήμα προεπεξεργασίας που τεμαχίζει τα έγγραφα σε μικρότερα τμήματα πριν την ενσωμάτωση, ώστε ο retriever να μπορεί να ταιριάζει ερωτήματα με εστιασμένα αποσπάσματα αντί με ολόκληρα αρχεία. Τα σημεία τομής καθορίζουν τι μπορεί και τι δεν μπορεί να βρει το σύστημά σας κατά τον χρόνο του ερωτήματος.
Ποια είναι η καλύτερη στρατηγική chunking για RAG;
Για τα περισσότερα παραγωγικά συστήματα σε γενικά έγγραφα, ο αναδρομικός τεμαχισμός χαρακτήρων στα 512 tokens με 10% επικάλυψη είναι η ισχυρότερη προεπιλογή. Στη μελέτη 472 ερωτημάτων της Chroma (Ιούλιος 2024), σημείωσε recall 88,5%, εντός 3,2 μονάδων από την ακριβότερη μέθοδο βάσει LLM, με μηδενικό επιπλέον κόστος.
Ποιο είναι το βέλτιστο μέγεθος chunk για RAG;
Ξεκινήστε από 512 tokens. Κατεβείτε στα 256 αν το μοντέλο ενσωμάτωσής σας έχει όριο 512 tokens εισόδου (Cohere v3, BGE) ή αν τα ερωτήματά σας περιμένουν απαντήσεις μίας πρότασης. Ανεβείτε στα 1.024 μόνο αν το eval set σας δείχνει απαντήσεις πολλών παραγράφων να κατακερματίζονται. Πάντα μετράτε απέναντι στα δικά σας ερωτήματα.
Πόση επικάλυψη chunk να χρησιμοποιώ;
10-20% του μεγέθους chunk (50-100 tokens στα 512). Η επικάλυψη εμποδίζει τις προτάσεις ορίων να μένουν ορφανές: ένα γεγονός κομμένο σε δύο chunks εμφανίζεται πλήρες σε τουλάχιστον ένα. Πέρα από 20%, επανενσωματώνετε υπερβολικό μέρος του σώματος για φθίνουσα απόδοση. Οι περισσότερες ομάδες καταλήγουν στο 10% και δεν το ξανακοιτούν.
Είναι το σημασιολογικό chunking καλύτερο από το σταθερού μεγέθους;
Οριακά, και με διπλό κόστος ενσωμάτωσης. Το benchmark της Chroma τον Ιούλιο του 2024 έδειξε τον σημασιολογικό chunker βάσει cluster με recall 89,0% και precision 6,7% έναντι recall 88,5% και precision 7,0% του αναδρομικού στο ίδιο μέγεθος token, με το καλύτερο αποτέλεσμα precision 8,0% να προέρχεται από διαφορετική ρύθμιση ανάκτησης. Αξίζει για σώματα με θεματική ποικιλία· δύσκολο να δικαιολογηθεί για ομοιογενή σύνολα εγγράφων.
Εξαρτάται το μέγεθος chunk από το μοντέλο ενσωμάτωσης;
Ναι. Μοντέλα με όριο εισόδου 512 tokens (BGE, Cohere v3) απαιτούν chunks πολύ κάτω από 512 επειδή η περικοπή είναι σιωπηλή. Μοντέλα με όρια 8.192+ ανέχονται μεγαλύτερα chunks αλλά δεν τα επιβραβεύουν· η ποιότητα ενσωμάτωσης υποβαθμίζεται από αραίωση πριν το ανώτατο όριο. Δείτε τον παραπάνω πίνακα αντιστοίχισης για αφετηρίες ανά μοντέλο.
Πώς τεμαχίζω κώδικα για ένα σύστημα RAG;
Τεμαχίστε στα όρια AST (ορισμούς συναρτήσεων και κλάσεων) αντί για μετρήσεις tokens. Κρατήστε κάθε chunk στα 256-512 tokens ανά συνάρτηση, προσαρτήστε το μπλοκ imports του αρχείου και την υπογραφή της κλάσης που περικλείει, και χρησιμοποιήστε μηδενική επικάλυψη αφού οι συναρτήσεις είναι αυτοτελείς μονάδες. Ο CodeSplitter της LlamaIndex και οι splitters με επίγνωση γλώσσας της LangChain το χειρίζονται και οι δύο.
Τι είναι το late chunking;
Το late chunking ενσωματώνει πρώτα ολόκληρο το έγγραφο με ένα μοντέλο μεγάλου πλαισίου και μετά ομαδοποιεί τα embeddings επιπέδου token σε διανύσματα chunk. Κάθε ενσωμάτωση chunk κουβαλά πλαίσιο όλου του εγγράφου, λύνοντας το πρόβλημα «σε τι αναφέρεται το 'το';». Εισήχθη από τους Günther και συνεργάτες (arXiv 2409.04701, Σεπτέμβριος 2024). Κανένα δημόσιο head-to-head benchmark δεν ποσοτικοποιεί ακόμα το κέρδος.
Πώς τεμαχίζω έγγραφα σε γλώσσες εκτός αγγλικών;
Οι μετρήσεις tokens δεν είναι γλωσσικά ουδέτερες. Η ίδια πρόταση πήρε 2,7 φορές περισσότερα tokens στα τουρκικά και τα ιαπωνικά από ό,τι στα αγγλικά, και 3,9 φορές στα αραβικά (tiktoken cl100k_base). Ένας σταθερός προϋπολογισμός 512 tokens δίνει σιωπηλά λιγότερο νόημα στα μη αγγλικά chunks. Τεμαχίστε με μέτρηση χαρακτήρων ή προτάσεων ανά γλώσσα, ή αυξήστε τον προϋπολογισμό αναλογικά.
Πώς ξέρω αν το chunking μου δουλεύει πραγματικά;
Χτίστε ένα eval set 20-50 ερωτήσεων από πραγματικά ερωτήματα χρηστών πριν αγγίξετε τον splitter. Βαθμολογήστε hit@5 και MRR απέναντι στα τρέχοντα chunks σας. Αλλάξτε μία μεταβλητή (μέγεθος, επικάλυψη, στρατηγική), ξανατρέξτε, συγκρίνετε. Χωρίς eval set, συντονίζετε με την αίσθηση. Είκοσι ερωτήματα αρκούν για αρχή.
Η Ουσία
- Ξεκινήστε με αναδρομικό τεμαχισμό χαρακτήρων στα 512 tokens, 10% επικάλυψη. Σωστή προεπιλογή για επίπεδο πεζό.
- Στις τέσσερις οικογένειες splitters που κάποιος έχει μετρήσει, τα 472 ερωτήματα της Chroma μετακινούν το recall περίπου 5 μονάδες και το precision αρκετές φορές περισσότερο. Συντονίστε πρώτα για precision και κόστος.
- Ταιριάξτε το μέγεθος chunk με το ανώτατο όριο εισόδου του μοντέλου ενσωμάτωσής σας. Ένα μοντέλο με όριο 512 tokens απαιτεί chunks κάτω από 512.
- Εμπλουτίστε τα chunks με πλαίσιο (η πτώση ποσοστού αποτυχίας της Anthropic από 5,7% σε 3,7%) πριν ξανασυντονίσετε τον splitter.
- Χτίστε πρώτα το eval set. Κάθε απόφαση splitter χωρίς νούμερο πριν-και-μετά είναι εικασία.
Για την πλήρη γραμμή παραγωγής γύρω από την επιλογή chunking σας, δείτε το φτιάξτε μια εφαρμογή RAG από άκρη σε άκρη. Ακόμα αποφασίζετε μεταξύ ανάκτησης και fine-tuning; Το RAG ή fine-tuning αναλύει πότε νικάει το καθένα.