Резать каждые N символов — очевидный подход, дающий куски, которые сами по себе ничего не значат: разрубленное пополам предложение, заголовок, оторванный от того, что он вводил. Здесь разрез идёт по самой крупной структурной границе, которая ещё помещается: заголовки, затем абзацы, затем предложения — и только посреди слова, когда единичный кусок не помещается вовсе. Перекрытие переносит хвост каждого куска в следующий, поэтому факт, пересекающий границу, где-нибудь уцелеет целиком. Во что обходится это перекрытие, показывается в процентах: это настоящее дублирование, и увидеть его лучше до того, как оно станет счётом за эмбеддинги.
Возможности
Режет по заголовкам, абзацам или предложениям, а не по фиксированной ширине
Разбиение по предложениям переживает сокращения и инициалы
Слишком крупные единицы режутся по границе слова, а не посреди него
Перекрытие переносит контекст в следующий кусок
Сообщает цену перекрытия в процентах
Записывает заголовок, под которым находится каждый кусок
Распределение размеров: наименьший, средний и наибольший
Экспорт в JSONL с заголовком и числом токенов на кусок
Как использовать Разбиение текста
Перетащите документ или вставьте его
Выберите, по чему резать
Задайте целевой размер и перекрытие
Пролистайте куски и экспортируйте в JSONL
Пример
Ввод
## Eligibility\n\nAn order is eligible if…
Результат
chunk 2 — under “Eligibility”, ≈58 tokens
Резать по заголовкам — значит оставить каждый раздел целым и подписанным.
Частые ошибки и устранение неполадок
Куски получаются намного меньше цели. — Структурная граница пришла раньше. Резка по абзацам не сольёт два абзаца за пределом.
Один кусок гораздо больше прочих. — Единичная единица больше цели режется по границе слова, а не сливается. Обычная причина — длинная таблица или блок кода.
Цена перекрытия выглядит высокой. — Это настоящее дублирование токенов. Перекрытие полезно, но десятой доли размера куска обычно достаточно.
Предложения режутся в странных местах. — Сокращения и инициалы учтены, но необычная пунктуация всё ещё может сбить. Резка по абзацам снимает вопрос совсем.
Часто задаваемые вопросы
Какого размера должны быть куски?
Зависит от того, кто их читает. Поиску обычно нужны куски достаточно мелкие, чтобы быть конкретными, и достаточно крупные, чтобы стоять сами по себе: несколько сотен токенов — привычная отправная точка.
Сколько нужно перекрытия?
Столько, чтобы предложение, пересекающее границу, где-то оказалось целым. Примерно десятая доля размера куска типична; цена большего показывается в процентах.
По какой границе резать?
По заголовкам, если они есть, — тогда каждый кусок покрывает раздел и несёт его название. По абзацам для обычной прозы. По предложениям, когда нужен более тонкий контроль.
Насколько точны счётчики токенов у кусков?
Это оценки по символам с настраиваемым отношением, поскольку отношение зависит от языка и письменности. Для подбора размера этого хватает; для счёта считайте токенизатором поставщика.
Зачем каждому куску заголовок?
Потому что кусок, найденный сам по себе, потерял контекст. Сохранённый заголовок означает, что текст приходит с пометкой, о чём он.
Связанные инструменты
Планировщик контекста — Распределите окно между промптом, инструментами, историей и ответом.