Рекурсивное разбиение по символам
Многие разработчики используют рекурсивный символьный разделитель для разбиения документов по заданному списку символов. По умолчанию этими символами являются абзацы, переносы строк, пробелы и пустые строки: ["\n\n", "\n", " ", ""].
Разделитель сначала пытается разбить текст по абзацам, затем проверяет, выполняются ли условия chunk_size и chunk_overlap. Если нет — разбивает по предложениям, затем по словам и отдельным символам.
Как правило, для получения оптимального результата вам потребуется поэкспериментировать с разными значениями chunk_size и chunk_overlap применительно к вашим документам.
Это упражнение является частью курса
Разработка LLM-приложений с помощью LangChain
Инструкции к упражнению
- Импортируйте класс
RecursiveCharacterTextSplitterизlangchain_text_splitters. - Создайте экземпляр
RecursiveCharacterTextSplitterс параметрамиseparators=["\n", " ", ""],chunk_size=24иchunk_overlap=10. - Используйте метод
.split_text(), чтобы разбитьquote, и выведите полученные фрагменты и их длины.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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])