Разделение документов на части вокруг доказательств и ответа, который необходим.
Выберите границы фрагментов, определив, какие факты должны передаваться вместе, затем протестируйте процесс извлечения в условиях ограниченного объема контекста.
Представьте, что вы обращаетесь к руководству по развертыванию с вопросом о том, когда следует откатить сервис. Поиск возвращает инструкцию по откату, но исключение находится в следующем фрагменте: эта инструкция применяется только после сбоя определённой проверки работоспособности. Полученный текст релевантен, но ответ всё равно может быть неверным.
В этом и заключается основная проблема фрагментации. Единица, которую легко индексировать, может отличаться от единицы, достаточной для объяснения чего-либо.
Прежде чем настраивать модель эмбеддингов, проверьте, что именно видит модель благодаря вашим фрагментам.
Начните с той структуры, которая у вас уже есть
Для технической статьи разумной отправной точкой являются заголовок и его параграфы. Пример кода должен сопровождаться объяснением его предположений. Таблице необходимо достаточно меток для интерпретации значений. Исключение должно находиться рядом с правилом, которое оно изменяет.
Это зависит от восстановления надежного исходного текста. Если ваш парсер уже преобразовал таблицу в неоднозначную последовательность, более мелкие фрагменты лишь усугубят эту неоднозначность.
Практичным первым шагом является разделение текста по границам разделов, объединение соседних абзацев в рамках установленного объема и разделение слишком больших разделов по границам предложений. Блоки кода и таблицы требуют особого обращения, если они превышают установленный лимит; необходимо сохранить их структуру и повторять метки, нужные для интерпретации каждой части.
Это лишь начальный вариант проектирования, а не универсально оптимальное решение. Глоссарии и отчеты о инцидентах организуют информацию по-разному.
Используйте перекрытие по конкретной причине
Перекрытие может сохранить предложение, которое в противном случае оказалось бы за границей разделения. Оно также приводит к повторению текста. При достаточном уровне перекрытия несколько лучших результатов могут содержать практически один и тот же абзац, что исчерпывает лимит контекста без добавления новых доказательств.
Оценивайте как полезность охвата, так и релевантность отдельных фрагментов. Если пять полученных фрагментов объясняют механизм отката, но ни один из них не содержит исключения, дополнительный поиск того же текста не решит проблему.
После поиска выявляйте перекрывающиеся фрагменты из одного источника и объединяйте или удаляйте дубликаты перед формированием запроса. Сохраняйте их исходные местоположения, чтобы цитаты оставались отслеживаемыми.
Поищите ограниченно и расширяйте целенаправленно
Небольшой отрывок может стать хорошей целью поиска, поскольку он сосредотачивается на одной идее. Окружающий его раздел может служить лучшим контекстом для генерации ответа, поскольку в нем приводятся определения и уточнения.
Один из подходов заключается в присвоении каждому небольшому фрагменту идентификатора родительского раздела. Сначала производится поиск в более мелких единицах, а затем выбранные результаты расширяются до их родительских разделов, когда для ответа требуется дополнительный контекст. Однако такое расширение всё равно требует ресурсов; загрузка целого документа для каждого результата лишь откладывает первоначальную проблему на более поздний этап.
В руководстве по внедрению результат поиска может указать условия отката. Родительский раздел затем может предоставить исключения и шаги восстановления. Таким образом ответ получает целостное объяснение без необходимости в том, чтобы механизм поиска оценивал огромный фрагмент документа.
Сравнение конфигураций с одинаковыми вопросами
Создайте вопросы, выявляющие границы: определение, сравнение между абзацами, поиск в таблице и правило с исключением. Укажите, какие доказательства требуются для каждого ответа.
Сравните простую версию с фиксированным размером с вашей версией, учитывающей структуру текста. Сохраняйте неизменными корпус данных, вопросы и лимиты контекста. Проверьте, собирает ли каждая конфигурация достаточно доказательств, сколько дублирования она вводит и какие ответы остаются невозможными на основе предоставленного контекста.
При установлении лимитов для производственной работы не путайте слова с токенами модели. Для прототипа удобно использовать инструмент разделения по количеству слов; окончательный запрос должен соответствовать способам обработки текста токенизатором и ограничениям модели, которая его обрабатывает.
Как только данные доказательства будут достоверными, гибкий поиск позволит пользователям находить их с помощью как точной терминологии, так и обычного языка. Более эффективный поиск особенно полезен, когда возвращаемые фрагменты уже заслуживают прочтения.