Главное ограничение современного ИИ а основе gpt - это размер контекста, а именно, сколько влезет информации в один запрос. Чем больше размер контекста, тем хуже качество, причем падение стремительное. Открытые сети, которые можно запустить локально, обычно основаны на 8к-16к токенов, и даже если заявлены 128к или миллион, то качество будет очень низкое, ИИ будет путаться и пропускать данные, выдумывать свои... что критично для и без того не очень качественные результаты.
Если в пределах одного документа на ручных тестах результат тебя устраивает, значит необходимо разработать систему, которая будет предварительно анализировать эти документы (условно строить индекс), и потом каждый запрос пользователя анализировать и пытаться понять, какие документы нужно а какие пропустить. И вот тут огромный простор для экспериментов.
Самое тупое но достаточно качественное - по очереди для каждого документа задаешь свой вопрос, ответы складываешь в контекстное окно (предварительно пропуская через фильтр - 'является ли это ответом на мой вопрос '...'?'), итоговое контекстное окно снова дополняешь вопросом, и выводишь ответ. Это почти самый точный способ (не подходит, когда для ответа нужна информация сразу из нескольких документов) но очень долгий/дорогой, если база документов большая.
Поэтому для каждого запроса нужно исключать из анализа ненужные документы. Например уже названный RAG, по простому, все документы делится на кусочки (условно абзацы или предложения), по каждому строится числовой вектор смысла Embeddings (разные, есть готовые на основе трансформера), и то же самое делать для вопроса пользователя... полученные вектора сравниваются, вычисляется расстояние, меньше расстояние - ближе по смыслу. Таким образом простым поиском можно найти какие части документа будут скорее всего полезны для ответа на вопрос. А дальше огромное поле для вариантов, например, загружаешь в контекстное окно целиком документ, вектора которых близки по смыслу с вопросом или их больше количественно (суммирование тоже нужно с умом делать). Мне нравится идея, когда, документы (несколько) которые подходят, прогоняют по одному отдельным промптом с вопросом - что из этого документа полезно для вот этого вопроса... собранную информацию затем заливаешь в итоговое контекстное окно и пусть оно разбирается.
Есть еще подход, когда изначальный список документов долго и упорно обрабатывается и на его основе строится древовидная структура - Document Hierarchy Generation, Knowledge Graphs, Hierarchical topic tree и прочее (погугли что там выскикавает на эти названия) и уже с ее помощью можно принимать решение, какие именно дукументы нужны.
Для небольшого количества документов можно предварительно использовать самморизацию этих документов или их частей, образуя некоторый каталог-выжимку, сложив которую в один запрос можно задавать вопросы уже к нему.. т.е. исходный вопрос задаешь к этой выжимке ('вот список документов с кратким описанием, какие из них необходимо прочитать что бы получить ответ на следующий вопрос: ...',.. нормальные gpt сети мало галлюцинируют, если в тексте будет идентификатор документа и текст по нему.. но к примеру слабые 8b модели работают плохо (но я пробовал давно, возможно уже deepseek distilled модели уже лучше с этим)