Token-based splitting helps break text into smaller parts based on tokens, which are pieces of words or characters. This makes it easier to handle large texts in manageable chunks.
Token-based splitting in LangChain
from langchain.text_splitter import TokenTextSplitter splitter = TokenTextSplitter(chunk_size=100, chunk_overlap=20) chunks = splitter.split_text(text)
chunk_size sets how many tokens each chunk should have.
chunk_overlap sets how many tokens overlap between chunks to keep context.
from langchain.text_splitter import TokenTextSplitter splitter = TokenTextSplitter(chunk_size=50, chunk_overlap=10) chunks = splitter.split_text("This is a long text that needs splitting into tokens.")
from langchain.text_splitter import TokenTextSplitter splitter = TokenTextSplitter(chunk_size=200, chunk_overlap=0) chunks = splitter.split_text(text)
This example splits a short text into chunks of 10 tokens each, with 3 tokens overlapping. It prints each chunk so you can see how the text is divided.
from langchain.text_splitter import TokenTextSplitter text = "Langchain helps you build applications with language models. Token-based splitting breaks text into token chunks for better processing." splitter = TokenTextSplitter(chunk_size=10, chunk_overlap=3) chunks = splitter.split_text(text) for i, chunk in enumerate(chunks, 1): print(f"Chunk {i}: {chunk}")
Token splitting depends on the tokenizer used by the language model.
Overlap helps keep context but increases total tokens processed.
Adjust chunk size and overlap based on your model's token limits and needs.
Token-based splitting breaks text into token-sized chunks for easier processing.
Use chunk size and overlap to control chunk length and context.
This method is useful when working with language models that have token limits.
Practice
Solution
Step 1: Understand token-based splitting
Token-based splitting divides text into smaller pieces based on tokens, which are units of text like words or subwords.Step 2: Identify the purpose
This helps manage large texts by breaking them into manageable chunks for language models with token limits.Final Answer:
To break text into smaller token-sized chunks for easier processing -> Option DQuick Check:
Token-based splitting = chunking text [OK]
- Confusing splitting with combining texts
- Thinking it encrypts or translates text
- Assuming it changes text meaning
Solution
Step 1: Recall the correct class name and parameters
The correct class is TokenTextSplitter with parameters chunk_size and chunk_overlap.Step 2: Match options with correct syntax
TokenTextSplitter(chunk_size=100, chunk_overlap=20) uses TokenTextSplitter with chunk_size and chunk_overlap, which is correct.Final Answer:
TokenTextSplitter(chunk_size=100, chunk_overlap=20) -> Option BQuick Check:
Correct class and parameters = TokenTextSplitter(chunk_size=100, chunk_overlap=20) [OK]
- Using wrong class names like TokenSplitter
- Using incorrect parameter names like size or overlap
- Mixing parameter names or omitting chunk_ prefix
splitter = TokenTextSplitter(chunk_size=100, chunk_overlap=20) chunks = splitter.split_text(text)
Solution
Step 1: Understand chunk size and overlap
The chunk_size defines the max tokens per chunk, here 100 tokens.Step 2: Determine first chunk length
The first chunk starts at token 0 and includes 100 tokens; overlap applies to next chunks, not the first.Final Answer:
100 tokens -> Option AQuick Check:
First chunk = chunk_size = 100 tokens [OK]
- Adding overlap to first chunk size
- Assuming first chunk covers entire text
- Confusing overlap as extra tokens in first chunk
splitter = TokenTextSplitter(chunk_size=50, chunk_overlap=60) chunks = splitter.split_text(text)
Solution
Step 1: Check parameter constraints
chunk_overlap should not exceed chunk_size because overlap means shared tokens between chunks.Step 2: Identify error in values
Here, chunk_overlap=60 is greater than chunk_size=50, which is invalid and causes an error.Final Answer:
chunk_overlap cannot be larger than chunk_size -> Option CQuick Check:
Overlap ≤ chunk size rule violated [OK]
- Thinking chunk_size must be string
- Assuming split_text method is missing
- Believing overlap must be zero always
Solution
Step 1: Calculate effective step size
Each new chunk starts 200 - 50 = 150 tokens after the previous chunk start.Step 2: Calculate number of chunks
Number of chunks = ceil((1000 - 50) / 150) = ceil(950 / 150) = ceil(6.33) = 7 chunks.Final Answer:
7 chunks -> Option AQuick Check:
Chunks = ceil((total - overlap) / (chunk_size - overlap)) = 7 [OK]
- Ignoring overlap in calculation
- Dividing total tokens by chunk_size directly
- Rounding down instead of up
Ready to prove it?
Pass the test and this pattern moves unknown
