Late Chunking
Узнай, как поздний чанкинг создает эмбеддинги с учетом контекста, повышает точность извлечения и RAG, а также сохраняет смысл документа в связанных фрагментах текста.
Late chunking — это техника внедрения документов, которая сохраняет окружающий контекст путем кодирования длинного документа перед созданием эмбеддингов для его небольших разделов. Вместо того чтобы сначала разбивать текст и независимо встраивать каждый чанк, она использует модель с большим контекстом для создания контекстно-зависимых представлений токенов, а затем объединяет токены, принадлежащие каждому чанку, в отдельный вектор. Полученные эмбеддинги остаются подходящими для извлечения, одновременно неся информацию из более широкого документа.
Как работает Late Chunking#
Обычный конвейер извлечения обычно следует такому порядку: разделение, кодирование, хранение. Это эффективно, но изолированный чанк может содержать такие фразы, как «этот компонент», «этот результат» или «это не удалось», не уточняя, к чему они относятся.
Late chunking меняет этот порядок:
- Документ делится на токены, при этом фиксируются желаемые границы чанков.
- Полная последовательность токенов или наибольшая часть, помещающаяся в контекстное окно модели, проходит через трансформер с большим контекстом.
- Благодаря механизму внимания модели представление каждого токена включает информацию от других токенов в этом контексте.
- Векторы токенов группируются в соответствии с записанными границами и объединяются, обычно путем пуллинга среднего, для создания одного эмбеддинга на чанк.
Ключевое отличие заключается во времени: границы все еще существуют, но они применяются после контекстного кодирования, а не до него. Объяснение late chunking от Jina AI предоставляет визуальное сравнение этих двух порядков обработки.
Почему важно сохранение контекста#
Чанкинг помогает документам соответствовать ограничениям моделей и позволяет поисковым системам находить точные фрагменты. Руководство Microsoft по чанкингу документов отмечает, что представление всего крупного документа с помощью одного вектора также может сжимать слишком много идей в единое представление.
Тем не менее, меньшие чанки увеличивают риск потери контекста. Рассмотрим следующие соседние фрагменты:
- «Насос XR-12 установлен рядом с коллектором охлаждения.»
- «Его необходимо заменить после 10 000 часов работы.»
При независимом встраивании второй фрагмент не определяет, что означает «его». С помощью late chunking его представления токенов уже учитывают «насос XR-12», что делает фрагмент более полезным для такого запроса, как «Когда следует заменить насос XR-12?»
Late chunking особенно актуален для генерации с дополненным извлечением, где выбранные фрагменты обеспечивают базовый контекст для языковой модели. Более широкий обзор RAG от Google Cloud объясняет, как извлечение связывает эмбеддинги, векторный поиск и обоснованную генерацию.
Связанные методы чанкинга и извлечения#
Late chunking решает другую проблему по сравнению с несколькими схожими по названию методами:
- Семантический чанкинг выбирает границы на основе изменений значения. Late chunking определяет, когда происходит контекстное кодирование, поэтому эти две техники можно комбинировать.
- Контекстное извлечение обогащает чанки дополнительным пояснительным текстом или метаданными перед индексацией. Late chunking вместо этого передает контекст неявно через представления токенов.
- Перекрытие чанков повторяет текст рядом с соседними границами. Оно может сохранять локальные подсказки, но увеличивает размер индекса и может создавать дублирующиеся результаты. Руководство по стратегии чанкинга от Cohere обсуждает, как размер чанка и перекрытие влияют на поиск.
- Позднее взаимодействие (late interaction) сохраняет несколько векторов на уровне токенов и сравнивает их во время извлечения. Late chunking обычно сохраняет один пулированный вектор на чанк, что делает его совместимым с обычной векторной базой данных.
Реренкер также является скорее дополняющим, чем эквивалентным: он упорядочивает извлеченные кандидаты после первоначального поиска, как показано в рабочем процессе ранжирования Google Cloud.
Практическая реализация#
Некоторые API эмбеддингов напрямую поддерживают late chunking. Следующий запрос отправляет упорядоченные фрагменты из одного документа в Jina Embedding API и возвращает один контекстный эмбеддинг для каждого фрагмента:
import os
import requests
chunks = [
"The XR-12 pump is installed beside the cooling manifold.",
"It must be replaced after 10,000 operating hours.",
]
payload = {
"model": "jina-embeddings-v3",
"task": "retrieval.passage",
"late_chunking": True,
"input": chunks,
}
headers = {"Authorization": f"Bearer {os.environ['JINA_API_KEY']}"}
response = requests.post(
"https://api.jina.ai/v1/embeddings",
headers=headers,
json=payload,
timeout=30,
)
response.raise_for_status()
print(len(response.json()["data"]))Количество результатов соответствует числу входных чанков, но каждый вектор отражает общий контекст документа. Альтернативный рабочий процесс под собственным управлением кодирует полную последовательность токенов и выполняет пуллинг диапазонов после этого, как продемонстрировано в реализации late chunking для векторного поиска от Elastic.
Реальные применения и рекомендации#
Два практических примера показывают, где этот контекст имеет значение:
- Помощники по техническим знаниям: Руководства по продуктам часто представляют деталь один раз, а затем ссылаются на нее косвенно. Late chunking помогает системе поддержки извлекать правильный шаг обслуживания, а не другой фрагмент, содержащий похожий общий язык.
- Поиск по отчетам компьютерного зрения: Рабочий процесс компьютерного зрения и RAG может объединять обнаружения, заметки об осмотре, подписи и записи обслуживания. После того как Ultralytics YOLO26 обнаружит оборудование или дефекты, late chunking может улучшить извлечение по связанному текстовому отчету. Визуальные записи также можно исследовать с помощью рабочего процесса поиска сходства изображений.
Используй late chunking, когда документы содержат перекрестные ссылки, местоимения, определения или нарративные зависимости. Сохраняй связанные чанки в порядке документов, соблюдай лимит контекста модели эмбеддингов, сохраняй заголовки и метаданные источника, а также оценивай извлечение с помощью реалистичных запросов. Это увеличивает затраты на кодирование, так как обрабатывается больше токенов одновременно, поэтому независимые эмбеддинги чанков могут оставаться предпочтительными для коротких самодостаточных записей.






