Найти в Дзене

🎯 Оптимальный размер чанков в RAG: измеряем точность ответов

Привет! Это снова Денис Куров. В первой статье мы построили простую RAG-систему с фиксированными чанками по 1000 символов. Во второй — научились резать текст по смыслу с помощью семантического чанкирования. Но остался важный вопрос: какой размер чанка оптимален? Сегодня мы: 💡 Что вы получите: Готовый код и методику для выбора оптимального размера чанков, которую вы сможете применить к своим документам и задачам. Представьте, что вы готовитесь к экзамену и делаете шпаргалки: В этой статье мы заменим интуицию точными измерениями. Мы построим систему, которая автоматически протестирует разные стратегии чанкинга и выберет лучшую на основе объективных метрик. Как и в любом проекте, начинаем с установки и импорта необходимых инструментов. 🔧 Что делаем в коде: Перед тем как выполнять 2-ю ячейку, нам нужен API-ключ. Шаги: Зарегистрируйтесь в Nebius Studio Перейдите на сайт: https://studio.nebius.com/playground Нажмите кнопку Sign in (в правом верхнем углу).
Выберите способ входа: Google,
Оглавление

Привет! Это снова Денис Куров.

В первой статье мы построили простую RAG-систему с фиксированными чанками по 1000 символов. Во второй — научились резать текст по смыслу с помощью семантического чанкирования.

Но остался важный вопрос: какой размер чанка оптимален?

Сегодня мы:

  • Построим систему автоматической оценки качества RAG.
  • Протестируем разные размеры чанков (128, 256, 512 символов) и сравним их с семантическим подходом.
  • Измерим точность (faithfulness) и релевантность (relevancy) ответов с помощью паттерна (LLM-as-a-Judge).
  • Найдём золотую середину между скоростью и качеством.

💡 Что вы получите: Готовый код и методику для выбора оптимального размера чанков, которую вы сможете применить к своим документам и задачам.

🎭 Проблема выбора размера: аналогия с конспектом

Представьте, что вы готовитесь к экзамену и делаете шпаргалки:

  • Слишком мелкие карточки (128 символов): На каждой по 2-3 предложения. Чтобы ответить на вопрос, нужно найти и прочитать 10 карточек. Контекст постоянно теряется.
  • Слишком крупные карточки (2000+ символов): Целая страница текста. В ней точно есть ответ, но также куча лишней информации. Модель-генератор может "утонуть" в деталях и пропустить главное.
  • Оптимальные карточки (256-512 символов): Законченная мысль или концепция. Достаточно контекста для понимания, но без "воды".

В этой статье мы заменим интуицию точными измерениями.

🛠 Практика: Система автоматической оценки

Мы построим систему, которая автоматически протестирует разные стратегии чанкинга и выберет лучшую на основе объективных метрик.

📌 Архитектура эксперимента

🔗 Открыть в Google Colab

📝 Пошаговая реализация

Шаг 1: Подготовка окружения

Как и в любом проекте, начинаем с установки и импорта необходимых инструментов.

-2

🔧 Что делаем в коде:

  1. pymupdf — библиотека для извлечения текста из PDF. Умеет работать с разными форматами, сохраняет структуру
  2. openai — официальный клиент OpenAI API, совместим с Nebius Studio
  3. numpy — нужен для вычисления косинусного сходства между векторами
  4. tqdm — показывает прогресс при создании эмбеддингов (когда обрабатываем сотни чанков)
  5. json — загружаем файл с эталонными вопросами и ответами для тестирования

Шаг 2: Настройка API Nebius Studio

-3

🔑 Как получить API-ключ в Nebius Studio

Перед тем как выполнять 2-ю ячейку, нам нужен API-ключ.

Шаги:

Зарегистрируйтесь в Nebius Studio

Перейдите на сайт: https://studio.nebius.com/playground Нажмите кнопку Sign in (в правом верхнем углу).
Выберите способ входа: Google, GitHub или Email.
Подтвердите вход.

Получите API-ключ

Войдя в систему, нажмите на значок профиля (справа вверху).
Выберите пункт
Get API key.

-4

В открывшемся окне нажмите Create API key.

Дайте ключу понятное имя, например:rag_tutorial_key
Нажмите
Create.

Сохраните ключ в безопасном месте

После создания ключ покажут один раз.
Скопируйте его и запишите в надёжное место — больше его посмотреть нельзя.

Используйте ключ в Google Colab

Шаг 3: Загрузка и извлечение текста из PDF

-5

🔧 Что делаем в коде:

Функция extract_text_from_pdf просто открывает PDF, проходит по всем страницам, извлекает текст и склеивает его в одну большую строку, добавляя пробел между страницами, чтобы слова не слипались.

Результат: одна большая строка, содержащая весь текст документа.

Мы успешно извлекли весь текст из документа. Теперь это наш "сырой материал" для экспериментов.

Шаг 4: Нарезка текста (чанкинг)

Это самая важная часть эксперимента. Мы разделим наш текст на фрагменты (чанки) с помощью четырех разных стратегий.

Ячейка 5: Фиксированные чанки (128, 256, 512)

-6

Функция create_fixed_chunks работает как слайсер:

  • Берет кусок текста длиной chunk_size.
  • Затем сдвигается назад на overlap (20% от размера чанка), чтобы следующий кусок начинался с небольшим перекрытием. Это помогает не терять контекст на стыках.

Результат выполнения:

-7

Вывод: Как и ожидалось, чем меньше размер чанка, тем больше их получается. Для 128 символов мы имеем более 3000 фрагментов, а для 512 — менее 800. Это напрямую повлияет на скорость поиска и создания эмбеддингов.

Ячейки 6 и 7: Семантическое чанкование

Это более "умный" подход. Вместо того, чтобы резать текст "по линейке", мы ищем смысловые разрывы.

Подробнее в прошлой статье:

-8

Алгоритм:

  1. Текст разбивается на отдельные предложения.
  2. Каждое предложение превращается в вектор-эмбеддинг.
  3. Система вычисляет косинусное сходство между векторами соседних предложений. Если сходство высокое — значит, они говорят об одном и том же. Если низкое — вероятно, тема сменилась.
  4. Все значения сходства, которые попадают в нижние 10% (percentile=10), считаются "точками разрыва".
  5. Текст разрезается по этим точкам, группируя семантически связанные предложения вместе.

Результат выполнения:

-9

Вывод: Семантический подход создал всего 157 чанков, но их размер сильно варьируется — от одного короткого предложения (33 символа) до огромных фрагментов (почти 17 000 символов), которые охватывают целые разделы документа. Это его ключевое отличие: он сохраняет целостность идей.

Тип чанкования Количество Средний размер
--------------------------------------------------
128 3118 128 символов
256 1567 256 символов
512 784 511 символов
semantic 157 2039 символов

Шаг 5: Создание эмбеддингов

(Генерация векторных представлений текста для поиска)

Что такое эмбеддинги и зачем они нужны?

Эмбеддинги — это числовые векторы, которые преобразуют текст в математическое представление, сохраняя его смысловую суть. Например, фразы «роботизированная хирургия» и «хирургические роботы» будут расположены близко друг к другу в векторном пространстве, даже если слова в них отличаются. Это позволяет системе находить релевантные фрагменты текста по смыслу, а не только по точному совпадению ключевых слов.

В контексте RAG-системы эмбеддинги решают главную задачу:

«Как определить, что чанк текста содержит ответ на вопрос пользователя, даже если в нём нет дословных формулировок из запроса?»

Ячейка 8: Создание эмбеддингов для всех чанков

-10

Здесь мы просто итерируемся по нашим четырем наборам чанков и для каждого создаем эмбеддинги, используя модель BAAI/bge-en-icl.

Результат выполнения:

-11

Вывод: Время создания эмбеддингов прямо пропорционально количеству чанков. Набор из 3118 чанков обрабатывался почти минуту, тогда как 157 семантических чанков — всего несколько секунд. Это первый компромисс: более гранулярный поиск требует больше времени на подготовку.

Шаг 5: Система оценки (LLM-as-a-Judge)

Чтобы наш тест был объективным, мы создадим "золотой стандарт" — набор вопросов и эталонных ответов, а также функции для автоматической оценки.

Ячейка 9: Создание тестовых вопросов

На этом этапе мы вручную создаем набор вопрос-ответ на основе нашего документа. Это самая важная ручная работа в эксперименте, так как качество оценки напрямую зависит от качества эталонных данных.

-12

Пример созданных вопросов:

  1. ❓ Как получить список деталей?
    ✅ Получение списка деталей выполняется по команде в панели задач Конструкторская документация / Конструкторские элементы / Детали.
  2. ❓ Для чего используется Тип КЭ Вариантная ведомость ЗИП?
    ✅ Тип КЭ Вариантная ведомость ЗИП используется для описания бизнес-логики и поведения структурированных конструкторских элементов...
  3. ...и так далее.

Ячейка 10: Функции тестирования

Здесь находится ядро нашей системы оценки.

  1. find_relevant_chunks: Находит top_k=3 наиболее релевантных чанков для заданного вопроса путем вычисления косинусного сходства между эмбеддингом вопроса и эмбеддингами всех чанков.
  2. generate_answer: Берет найденные чанки, объединяет их в единый контекст и просит LLM (Qwen/Qwen2.5-72B-Instruct) сгенерировать ответ, строго придерживаясь этого контекста.
  3. evaluate_response_with_llm: "LLM-судья". Это самая интересная часть. Мы используем другую, более мощную модель (openai/gpt-oss-120b), чтобы оценить сгенерированный ответ по двум критериям:
  • Faithfulness (Верность фактам): Насколько ответ соответствует информации из эталонного ответа? Не придумала ли модель что-то от себя (галлюцинация)?
    Relevancy (Релевантность): Насколько ответ действительно отвечает на поставленный вопрос?
-13

Шаг 6: Запуск эксперимента и анализ результатов

Теперь у нас все готово. Запустим тестирование для каждой из четырех стратегий.

Ячейки 11-14: Тестирование методов

Функция test_single_method объединяет все предыдущие шаги: для каждого вопроса она находит чанки, генерирует ответ и оценивает его. Мы просто вызываем ее для каждого набора чанков.

🔍 ТЕСТИРОВАНИЕ: 128 СИМВОЛОВ
==================================================

📝 Вопрос 1/3: Как получить список деталей?
🎯 Найдено 3 релевантных чанков
📊 Максимальная релевантность: 0.833
🤖 Ответ ИИ: Получение списка деталей выполняется по команде в панели задач "Конструкторская документация / Конструкторские элементы / Детали"....
✅ Эталон: Получение списка деталей выполняется по команде в панели задач Конструкторская документация / Конструкторские элементы / Детали....
⭐ Faithfulness: 1.000
🎯 Relevancy: 1.000

📝 Вопрос 2/3: Для чего используется Тип КЭ Вариантная ведомость ЗИП?
🎯 Найдено 3 релевантных чанков
📊 Максимальная релевантность: 0.830
🤖 Ответ ИИ: Тип КЭ Вариантная ведомость ЗИП используется для описания бизнес-логики и поведения ЗИП, а также для конфигурирования получения комплектации вариантной ведомости ЗИП....
✅ Эталон: Тип КЭ Вариантная ведомость ЗИП используется для описания бизнес-логики и поведения структурированных конструкторских элементов, предназначенных для ведения данных об элементах, являющихся запасными частями и принадлежностями в изделии. Содержимое вариантной ведомости ЗИП может включать блоки вариантных элементов....
⭐ Faithfulness: 0.500
🎯 Relevancy: 0.500

📝 Вопрос 3/3: Какие типы КЭ не могут включаться в содержимое экземпляра спецификации?
🎯 Найдено 3 релевантных чанков
📊 Максимальная релевантность: 0.853
🤖 Ответ ИИ: Типы КЭ, которые не могут включаться в содержимое экземпляра спецификации:
- Групповая спецификация;
- Образец;
- Технологическая спецификация....
✅ Эталон: В содержимое экземпляра спецификации не могут включаться КЭ следующих типов: - Групповая спецификация; - Образец; - Технологическая спецификация (Точная); - Технологический комплект (Точный); - Комплект изделия; - Комплектовочная карта; - Точная комплектация узла; - Точная комплектация комплекта; - Групповой комплект; - Материал продукт; - Технологическая точная комплектация узла; - Технологическая точная комплектация комплекта; - Технологическая спецификация (Общая); - Технологический комплект (Общий); - Спецификация оснастки (Точная); - Оснастка; - Стандартная оснастка; - Групповой перечень элементов; - Спецификация образец; - Единичная спецификация (Общая); - Единичный комплект (Общий); - Экземпляр спецификации; - Экземпляр комплекта; - Экземпляр оснастки; - Ремонтная спецификация; - Спецификация заказ; - Электронный каталог; - Общий вариантный документ; - Вариантная ведомость ЗИП; - Вариантная опись документов....
⭐ Faithfulness: 0.500
🎯 Relevancy: 1.000

📊 ИТОГИ ДЛЯ 128 СИМВОЛОВ:
🎯 Средняя релевантность: 0.839
⭐ Средний faithfulness: 0.667
🎯 Средний relevancy: 0.833
📦 Количество чанков: 3118
✅ Тестирование метода 128 символов завершено!


Анализ: Метод хорошо находит нужные места в тексте (высокая релевантность поисковика), но из-за сильной фрагментации контекста LLM не всегда может дать полный и точный ответ, что снижает faithfulness. Например, на вопрос №2 ответ был неполным.

🔍 ТЕСТИРОВАНИЕ: 256 СИМВОЛОВ
==================================================

📝 Вопрос 1/3: Как получить список деталей?
🎯 Найдено 3 релевантных чанков
📊 Максимальная релевантность: 0.797
🤖 Ответ ИИ: Получение списка деталей выполняется по команде в панели задач "Конструкторская документация / Конструкторские элементы / Детали". Выбор элементов для списка осуществляется через входной фильтр....
✅ Эталон: Получение списка деталей выполняется по команде в панели задач Конструкторская документация / Конструкторские элементы / Детали....
⭐ Faithfulness: 1.000
🎯 Relevancy: 1.000

📝 Вопрос 2/3: Для чего используется Тип КЭ Вариантная ведомость ЗИП?
🎯 Найдено 3 релевантных чанков
📊 Максимальная релевантность: 0.832
🤖 Ответ ИИ: Тип КЭ Вариантная ведомость ЗИП используется для описания бизнес-логики и поведения структурированных конструкторских элементов, предназначенных для ведения данных об элементах, являющихся запасными частями, и для получения комплектации этих запасных частей....
✅ Эталон: Тип КЭ Вариантная ведомость ЗИП используется для описания бизнес-логики и поведения структурированных конструкторских элементов, предназначенных для ведения данных об элементах, являющихся запасными частями и принадлежностями в изделии. Содержимое вариантной ведомости ЗИП может включать блоки вариантных элементов....
⭐ Faithfulness: 0.500
🎯 Relevancy: 1.000

📝 Вопрос 3/3: Какие типы КЭ не могут включаться в содержимое экземпляра спецификации?
🎯 Найдено 3 релевантных чанков
📊 Максимальная релевантность: 0.842
🤖 Ответ ИИ: В предоставленном контексте нет информации о том, какие типы КЭ не могут включаться в содержимое экземпляра спецификации....
✅ Эталон: В содержимое экземпляра спецификации не могут включаться КЭ следующих типов: - Групповая спецификация; - Образец; - Технологическая спецификация (Точная); - Технологический комплект (Точный); - Комплект изделия; - Комплектовочная карта; - Точная комплектация узла; - Точная комплектация комплекта; - Групповой комплект; - Материал продукт; - Технологическая точная комплектация узла; - Технологическая точная комплектация комплекта; - Технологическая спецификация (Общая); - Технологический комплект (Общий); - Спецификация оснастки (Точная); - Оснастка; - Стандартная оснастка; - Групповой перечень элементов; - Спецификация образец; - Единичная спецификация (Общая); - Единичный комплект (Общий); - Экземпляр спецификации; - Экземпляр комплекта; - Экземпляр оснастки; - Ремонтная спецификация; - Спецификация заказ; - Электронный каталог; - Общий вариантный документ; - Вариантная ведомость ЗИП; - Вариантная опись документов....
⭐ Faithfulness: 0.000
🎯 Relevancy: 0.000

📊 ИТОГИ ДЛЯ 256 СИМВОЛОВ:
🎯 Средняя релевантность: 0.824
⭐ Средний faithfulness: 0.500
🎯 Средний relevancy: 0.667
📦 Количество чанков: 1567
✅ Тестирование метода 256 символов завершено!


Анализ: Результаты неожиданно хуже. На вопрос №3 модель вообще не нашла ответа, заявив, что информации в контексте нет (faithfulness = 0.0). Это пример "золотой середины, которая не сработала": чанк оказался недостаточно маленьким для точного попадания и недостаточно большим для полноты контекста.

🔍 ТЕСТИРОВАНИЕ: 512 СИМВОЛОВ
==================================================

📝 Вопрос 1/3: Как получить список деталей?
🎯 Найдено 3 релевантных чанков
📊 Максимальная релевантность: 0.758
🤖 Ответ ИИ: Чтобы получить список деталей, выполните команду в панели задач: Конструкторская документация / Конструкторские элементы / Детали. Выбор элементов осуществляется через входной фильтр....
✅ Эталон: Получение списка деталей выполняется по команде в панели задач Конструкторская документация / Конструкторские элементы / Детали....
⭐ Faithfulness: 1.000
🎯 Relevancy: 1.000

📝 Вопрос 2/3: Для чего используется Тип КЭ Вариантная ведомость ЗИП?
🎯 Найдено 3 релевантных чанков
📊 Максимальная релевантность: 0.819
🤖 Ответ ИИ: Тип КЭ Вариантная ведомость ЗИП используется для описания бизнес-логики и поведения структурированных конструкторских элементов, предназначенных для ведения данных об элементах, являющихся запасными частями и принадлежностями в изделии. Она также может включать блоки вариантных элементов и конфигурироваться для получения комплектации. Этот тип КЭ относится к группе структурированных конструкторских документов, не влияющих на производственный состав....
✅ Эталон: Тип КЭ Вариантная ведомость ЗИП используется для описания бизнес-логики и поведения структурированных конструкторских элементов, предназначенных для ведения данных об элементах, являющихся запасными частями и принадлежностями в изделии. Содержимое вариантной ведомости ЗИП может включать блоки вариантных элементов....
⭐ Faithfulness: 0.500
🎯 Relevancy: 1.000

📝 Вопрос 3/3: Какие типы КЭ не могут включаться в содержимое экземпляра спецификации?
🎯 Найдено 3 релевантных чанков
📊 Максимальная релевантность: 0.805
🤖 Ответ ИИ: На основе предоставленного контекста, можно сделать вывод, что в содержимое спецификации образца (экземпляра) не могут включаться следующие типы конструкторских элементов (КЭ):

- Групповая спецификация;
- Технологическая спецификация (Точная);
- Технологический комплект (Точный);
- Комплект изделия;
- Комплектовочная карта;
- Точная комплектация узла;
- Точная комплектация комплекта;
- Групповой комплект;
- Материал продукт;
- Технологическая точная комплектация узла;
- Технологическая точная комплектация комплекта....
✅ Эталон: В содержимое экземпляра спецификации не могут включаться КЭ следующих типов: - Групповая спецификация; - Образец; - Технологическая спецификация (Точная); - Технологический комплект (Точный); - Комплект изделия; - Комплектовочная карта; - Точная комплектация узла; - Точная комплектация комплекта; - Групповой комплект; - Материал продукт; - Технологическая точная комплектация узла; - Технологическая точная комплектация комплекта; - Технологическая спецификация (Общая); - Технологический комплект (Общий); - Спецификация оснастки (Точная); - Оснастка; - Стандартная оснастка; - Групповой перечень элементов; - Спецификация образец; - Единичная спецификация (Общая); - Единичный комплект (Общий); - Экземпляр спецификации; - Экземпляр комплекта; - Экземпляр оснастки; - Ремонтная спецификация; - Спецификация заказ; - Электронный каталог; - Общий вариантный документ; - Вариантная ведомость ЗИП; - Вариантная опись документов....
⭐ Faithfulness: 0.500
🎯 Relevancy: 1.000

📊 ИТОГИ ДЛЯ 512 СИМВОЛОВ:
🎯 Средняя релевантность: 0.794
⭐ Средний faithfulness: 0.667
🎯 Средний relevancy: 1.000
📦 Количество чанков: 784
✅ Тестирование метода 512 символов завершено!
Анализ: Лучший результат среди фиксированных чанков. Хотя релевантность поиска чуть ниже, faithfulness на уровне 128-символьных чанков, а итоговые ответы полнее и качественнее. На все вопросы были даны релевантные ответы.

🔍 ТЕСТИРОВАНИЕ: СЕМАНТИЧЕСКОЕ ЧАНКОВАНИЕ
==================================================

📝 Вопрос 1/3: Как получить список деталей?
🎯 Найдено 3 релевантных чанков
📊 Максимальная релевантность: 0.678
🤖 Ответ ИИ: Для получения списка деталей выполните команду в панели задач "Конструкторская документация / Конструкторские элементы / Детали". Выбор элементов осуществляется через входной фильтр....
✅ Эталон: Получение списка деталей выполняется по команде в панели задач Конструкторская документация / Конструкторские элементы / Детали....
⭐ Faithfulness: 1.000
🎯 Relevancy: 1.000

📝 Вопрос 2/3: Для чего используется Тип КЭ Вариантная ведомость ЗИП?
🎯 Найдено 3 релевантных чанков
📊 Максимальная релевантность: 0.756
🤖 Ответ ИИ: Тип КЭ Вариантная ведомость ЗИП используется для описания бизнес-логики и поведения структурированных конструкторских элементов, предназначенных для ведения данных об элементах, являющихся запасными частями и принадлежностями в изделии. Она позволяет формировать перечень этих элементов и их параметры, а также работать с блоками вариантных элементов....
✅ Эталон: Тип КЭ Вариантная ведомость ЗИП используется для описания бизнес-логики и поведения структурированных конструкторских элементов, предназначенных для ведения данных об элементах, являющихся запасными частями и принадлежностями в изделии. Содержимое вариантной ведомости ЗИП может включать блоки вариантных элементов....
⭐ Faithfulness: 1.000
🎯 Relevancy: 1.000

📝 Вопрос 3/3: Какие типы КЭ не могут включаться в содержимое экземпляра спецификации?
🎯 Найдено 3 релевантных чанков
📊 Максимальная релевантность: 0.777
🤖 Ответ ИИ: На основе предоставленного контекста можно точно сказать, что в содержимое экземпляра спецификации не могут включаться следующие типы КЭ:

- Групповая спецификация
- Образец
- Комплект изделия
- Групповой комплект
- Материал продукт
- Технологическая спецификация (Общая)
- Технологический комплект (Общий)
- Спецификация оснастки (Точная)
- Оснастка
- Стандартная оснастка
- Групповой перечень элементов
- Спецификация образец
- Единичная спецификация (Общая)
- Единичный комплект (Общий)
- Экземпляр спецификации
- Экземпляр комплекта
- Экземпляр оснастки
- Ремонтная спецификация
- Спецификация заказ
- Электронный каталог
- Общий вариантный документ
- Вариантная ведомость ЗИП
- Вариантная опись документов...
✅ Эталон: В содержимое экземпляра спецификации не могут включаться КЭ следующих типов: - Групповая спецификация; - Образец; - Технологическая спецификация (Точная); - Технологический комплект (Точный); - Комплект изделия; - Комплектовочная карта; - Точная комплектация узла; - Точная комплектация комплекта; - Групповой комплект; - Материал продукт; - Технологическая точная комплектация узла; - Технологическая точная комплектация комплекта; - Технологическая спецификация (Общая); - Технологический комплект (Общий); - Спецификация оснастки (Точная); - Оснастка; - Стандартная оснастка; - Групповой перечень элементов; - Спецификация образец; - Единичная спецификация (Общая); - Единичный комплект (Общий); - Экземпляр спецификации; - Экземпляр комплекта; - Экземпляр оснастки; - Ремонтная спецификация; - Спецификация заказ; - Электронный каталог; - Общий вариантный документ; - Вариантная ведомость ЗИП; - Вариантная опись документов....
⭐ Faithfulness: 0.500
🎯 Relevancy: 1.000

📊 ИТОГИ ДЛЯ СЕМАНТИЧЕСКОЕ ЧАНКОВАНИЕ:
🎯 Средняя релевантность: 0.737
⭐ Средний faithfulness: 0.833
🎯 Средний relevancy: 1.000
📦 Количество чанков: 157
✅ Тестирование семантического метода завершено!


Анализ: Победитель по качеству ответов. Несмотря на самую низкую релевантность поиска (большие чанки "размывают" точность векторного поиска), faithfulness ответов — наивысший. LLM получала на вход цельные, осмысленные фрагменты текста, что позволило ей генерировать наиболее точные и полные ответы. На вопрос №2, где другие методы давали неполный ответ, семантика справилась идеально (faithfulness=1.0).

Финальные выводы и итоговая таблица

Давайте сведем все результаты в одну таблицу для наглядности.

-14
  1. Золотая середина — 512 символов. Если вам нужен простой, быстрый и достаточно надежный метод, фиксированные чанки размером около 512 символов — ваш выбор. Они обеспечивают хороший баланс между полнотой контекста и точностью поиска.
  2. Чемпион по качеству — семантическое чанкование. Если ваша цель — максимальная точность и полнота ответов, а время на предобработку не так критично, семантический подход вне конкуренции. Он предоставляет LLM наиболее качественный "материал" для работы, что напрямую ведет к росту метрики faithfulness.
  3. Метрики поиска — не главное. Интересный вывод: самая высокая релевантность поиска (у чанков 128) не гарантирует лучшее качество финального ответа. Важнее не найти идеальный микро-фрагмент, а предоставить LLM достаточно полный и чистый контекст.

Надеюсь, этот подробный эксперимент поможет вам в построении ваших собственных RAG-систем. Удачи!