The RecursiveCharacterTextSplitter helps break long text into smaller pieces. It does this by splitting text step-by-step using different characters, making sure the pieces are easy to handle.
RecursiveCharacterTextSplitter in LangChain
from langchain.text_splitter import RecursiveCharacterTextSplitter text_splitter = RecursiveCharacterTextSplitter( chunk_size=1000, chunk_overlap=200, separators=["\n\n", "\n", ".", "!", "?", ",", " ", ""] ) chunks = text_splitter.split_text(long_text)
The chunk_size sets the maximum size of each text piece.
The chunk_overlap controls how much text overlaps between chunks to keep context.
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) chunks = text_splitter.split_text(long_text)
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=300,
chunk_overlap=0,
separators=["\n", ".", " "]
)
chunks = text_splitter.split_text(long_text)text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100, separators=["\n\n", "."]) chunks = text_splitter.split_text(long_text)
This program splits a text with three paragraphs into smaller chunks of max 50 characters. It overlaps 10 characters between chunks to keep context. It tries to split by paragraphs first, then sentences, then words.
from langchain.text_splitter import RecursiveCharacterTextSplitter long_text = ( "This is the first paragraph. It has two sentences.\n\n" "Here is the second paragraph! It also has sentences? Yes, it does.\n\n" "Finally, the third paragraph is here." ) text_splitter = RecursiveCharacterTextSplitter( chunk_size=50, chunk_overlap=10, separators=["\n\n", ".", "!", "?", ",", " ", ""] ) chunks = text_splitter.split_text(long_text) print("Number of chunks:", len(chunks)) for i, chunk in enumerate(chunks, 1): print(f"Chunk {i}:", repr(chunk))
The splitting tries separators in order, so order matters for best results.
Time complexity depends on text length and number of separators but is generally efficient for normal documents.
Common mistake: setting chunk_size too small can create many tiny chunks.
RecursiveCharacterTextSplitter breaks text into manageable chunks using multiple separators.
It keeps context by overlapping parts of chunks.
Useful for preparing text for language models or any tool with input size limits.
Practice
RecursiveCharacterTextSplitter in langchain?Solution
Step 1: Understand the function of RecursiveCharacterTextSplitter
This tool is designed to break down long text into smaller pieces using various separators like paragraphs, sentences, or characters.Step 2: Recognize the benefit of overlapping chunks
It keeps some overlap between chunks to maintain context, which helps language models understand the text better.Final Answer:
To split long text into smaller chunks using multiple separators while keeping context. -> Option AQuick Check:
Splitting text with context = A [OK]
- Thinking it merges text instead of splitting
- Confusing it with translation or encryption tools
- Ignoring the overlap feature
RecursiveCharacterTextSplitter with a chunk size of 100 and chunk overlap of 20?Solution
Step 1: Recall the parameter names for RecursiveCharacterTextSplitter
The correct parameters arechunk_sizeandchunk_overlapto set chunk length and overlap.Step 2: Match the correct syntax
RecursiveCharacterTextSplitter(chunk_size=100, chunk_overlap=20) uses the exact parameter names and values correctly.Final Answer:
RecursiveCharacterTextSplitter(chunk_size=100, chunk_overlap=20) -> Option DQuick Check:
Correct parameter names = D [OK]
- Using incorrect parameter names like size or chunkSize
- Mixing camelCase and snake_case
- Omitting required parameters
splitter = RecursiveCharacterTextSplitter(chunk_size=12, chunk_overlap=4)
chunks = splitter.split_text("Hello world! This is a test.")
print(len(chunks[0]))Solution
Step 1: Understand chunk size and overlap effect
The chunk size is 12, so each chunk will be at most 12 characters long. Overlap affects next chunks, not the first chunk length.Step 2: Determine first chunk length
The first chunk will be exactly 12 characters long, as it starts from the beginning and takes up to chunk_size.Final Answer:
12 -> Option AQuick Check:
First chunk length = chunk_size = 12 [OK]
- Adding overlap to first chunk length
- Assuming first chunk is shorter than chunk_size
- Confusing chunk size with total text length
RecursiveCharacterTextSplitter? splitter = RecursiveCharacterTextSplitter(chunk_size=50, chunk_overlap=60)
chunks = splitter.split_text("Some long text here...")Solution
Step 1: Check parameter constraints
chunk_overlap must be less than or equal to chunk_size to avoid logical errors in splitting.Step 2: Identify the error in given values
chunk_overlap=60 is greater than chunk_size=50, which is invalid and will cause an error.Final Answer:
chunk_overlap cannot be larger than chunk_size -> Option CQuick Check:
Overlap ≤ chunk size rule = B [OK]
- Ignoring parameter value relationships
- Assuming method names are incorrect without checking
- Confusing data types for parameters
RecursiveCharacterTextSplitter correctly achieves this?Solution
Step 1: Understand separator priority order
The splitter tries separators in order; to prioritize paragraphs, then sentences, then words, the list must start with paragraph separator "\n\n", then sentence ". ", then space " ".Step 2: Match the correct separators list
RecursiveCharacterTextSplitter(chunk_size=200, chunk_overlap=50, separators=["\n\n", ". ", " "]) correctly lists separators in the desired priority order.Final Answer:
RecursiveCharacterTextSplitter(chunk_size=200, chunk_overlap=50, separators=["\n\n", ". ", " "]) -> Option BQuick Check:
Separator order matches priority = A [OK]
- Reversing separator order
- Using wrong separator strings
- Ignoring overlap or chunk size settings
Ready to prove it?
Pass the test and this pattern moves unknown
