НачатьНачать бесплатно

Рекурсивное разбиение по символам

Многие разработчики используют рекурсивный символьный разделитель для разбиения документов по заданному списку символов. По умолчанию этими символами являются абзацы, переносы строк, пробелы и пустые строки: ["\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])
Редактировать и запускать код