Late chunking в RAG
В объёмных документах смысл фрагмента часто зависит от контекста. В классическом RAG документ режут на чанки и векторизуют каждый по отдельности. Есть риск сбоя в поиске, потому что часть смысла чанка лежит за его границами
Улучшить векторный поиск в RAG без сложной нарезки чанков может помочь т.н. late chunking. Это техника от Jina AI, которую обычно пропускают в RAG-туториалах. Основная идея: вместо предварительной обрезки текста прогоняем через модель весь документ и получаем вектор для токенов, каждый из которых уже обогащен контекстом текста
Эмбеддинг чанка - это усреднение (mean pooling) векторов его токенов. Текст подаётся целиком или большими частями с перекрытием. Так вектор каждого чанка получает больше контекста
Пример из статьи
в начале документа стоит "Берлин", далее "город", "он", "его население". При наивной нарезке чанк "его население…" не содержит слова "Берлин", и модель не связывает местоимение с сущностью. При late chunking тот же чанк помнит про Берлин. На длиннодокументных бенчмарках late chunking почти всегда обходит наивную нарезку без дообучения
Что использовать?
- jina-embeddings-v3/v4 (v5 уже не подойдёт — другой тип пулинга)
- модели Perplexity (pplx-embed-context-v1), более современные, обученные под late chunking специально
Post #452
730

- 👍 3
- 🔥 3