Rekurencyjne dzielenie według znaków
Wielu programistów korzysta z rekurencyjnego splittera znakowego do dzielenia dokumentów według określonej listy znaków. Domyślnie są to: akapity, znaki nowej linii, spacje i puste ciągi znaków: ["\n\n", "\n", " ", ""].
W praktyce splitter najpierw próbuje podzielić tekst według akapitów, sprawdza, czy spełnione są wartości chunk_size i chunk_overlap, a jeśli nie – dzieli według zdań, następnie słów i pojedynczych znaków.
Często trzeba eksperymentować z różnymi wartościami chunk_size i chunk_overlap, aby znaleźć te, które najlepiej sprawdzają się w przypadku twoich dokumentów.
To ćwiczenie jest częścią kursu
Tworzenie aplikacji LLM z LangChain
Instrukcje do ćwiczenia
- Zaimportuj klasę
RecursiveCharacterTextSplitterzlangchain_text_splitters. - Utwórz instancję
RecursiveCharacterTextSplitterz parametramiseparators=["\n", " ", ""],chunk_size=24ichunk_overlap=10. - Użyj metody
.split_text(), aby podzielićquote, a następnie wyświetl fragmenty i ich długości.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Import the recursive character splitter
from langchain_text_splitters import ____
quote = 'Words are flowing out like endless rain into a paper cup,\nthey slither while they pass,\nthey slip away across the universe.'
chunk_size = 24
chunk_overlap = 10
# Create an instance of the splitter class
splitter = RecursiveCharacterTextSplitter(
separators=____,
chunk_size=____,
chunk_overlap=____)
# Split the document and print the chunks
docs = splitter.____(quote)
print(docs)
print([len(doc) for doc in docs])