Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: RAG, chunking, document splitting, retrieval, embedding

Что такое chunking в RAG? Какие стратегии нарезки документов существуют?

Вопрос проверяет понимание концепции chunking в RAG и знание различных стратегий разделения документов на фрагменты для эффективного поиска.

Короткий ответ

Chunking в RAG — это процесс разбиения документов на небольшие фрагменты (чанки) для последующего индексирования и поиска. Основные стратегии: фиксированный размер с перекрытием, разделение по предложениям, по абзацам, семантическое разделение и использование специальных токенизаторов. Выбор стратегии зависит от структуры документа и требований к точности поиска.

Длинный ответ

Что такое chunking в RAG?

Chunking (нарезка) — это ключевой этап в пайплайне Retrieval-Augmented Generation (RAG), где большие документы разбиваются на более мелкие, семантически связные фрагменты. Это необходимо, потому что модели эмбеддингов и LLM имеют ограничения на длину входного контекста, а также для повышения точности поиска релевантных фрагментов.

Основные стратегии нарезки

  • Фиксированный размер с перекрытием (Fixed-size with overlap): Документ режется на чанки одинаковой длины (например, 512 токенов) с перекрытием (например, 50 токенов) для сохранения контекста на границах. Просто, но может разрывать предложения.
  • Разделение по предложениям (Sentence-based): Чанки формируются из целых предложений, что сохраняет грамматическую целостность. Использует детекторы концов предложений (точка, вопросительный знак).
  • Разделение по абзацам (Paragraph-based): Чанки соответствуют абзацам. Хорошо для структурированных текстов, но абзацы могут быть слишком длинными или короткими.
  • Семантическое разделение (Semantic chunking): Использует модели для определения границ по смене темы или смысловому содержанию. Более сложное, но даёт наиболее связные чанки.
  • Рекурсивное разделение (Recursive splitting): Комбинирует несколько стратегий, например, сначала по абзацам, затем по предложениям, если чанк слишком большой.

Пример кода (Python с LangChain)

from langchain.text_splitter import RecursiveCharacterTextSplitter

text = "Длинный документ..."
splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50,
    separators=["\n\n", "\n", ".", " "]
)
chunks = splitter.split_text(text)
print(f"Получено {len(chunks)} чанков")

Вывод

Выбор стратегии chunking критически влияет на качество RAG-системы. Для большинства случаев рекомендуется начинать с рекурсивного разделения с перекрытием, а затем экспериментировать с семантическими методами для улучшения релевантности поиска.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Python

    Python

  • Node.js

    Node.js

Ключевые слова

#RAG

#chunking

#document splitting

#retrieval

#embedding

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.