222просмотров
17 февраля 2026 г.
Score: 244
Продолжаем пилить чат-бота. После того как я разобрался с теорией (схемы из прошлых постов), пришло время переходить к практике и нагружать бота объемом данных. Небольшой апдейт: ранее я писал, что буду делать бота по поставке. Но для тестов архитектуры решил «переобуться» на сферу интеллектуальной собственности. Она показалась мне более показательной для проверки точности поиска. На данный момент загрузил в RAG приличное количество судебной практики + 4 часть ГК РФ. На скриншоте видно точное количество загруженных чанков и родительских элементов. Решил не сваливать всё в одну кучу. Для более «правильной» архитектуры разнес данные по разным коллекциям (папкам) в векторном хранилище: судебная практика отдельно, нормы ГК РФ — отдельно. Это должно улучшить качество поиска. Загрузка 858 судебных дел заняла у меня почти 3 часа. Почему так долго?
Тут сыграли роль три фактора:
➡️ Объем текста. 850+ решений — это уже не тестовая выборка.
➡️ Иерархический RAG. Я использую продвинутую нарезку (Parent Document Retriever). Системе нужно не просто порезать текст на мелкие кусочки, но и создать большие (родительские) блоки, связать их между собой метаданными и только потом сохранить. Это кратно сложнее обычной нарезки.
➡️ Железо. Делаю всё на ноутбуке с 8 Гб оперативной памяти. Памяти мало, поэтому пришлось написать скрипт для последовательной обработки: берется 1 файл -> режется -> присваиваются метаданные -> эмбеддинг -> сохранение в базу.
После этого файл принудительно выгружается из оперативки, и только затем берется следующий. И так 858 раз. Для сравнения: 4-ю часть ГК РФ (она меньше по объему и структурированнее) я загрузил всего за 5–7 минут. ✅ Главный вывод этого этапа:
Проектируйте и тестируйте своего бота на малых объемах, прежде чем загружать в него «всё, что есть» ! Некоторые настройки (например, размер чанка или его перекрытие/overlap) нельзя поменять «на лету» в уже загруженной базе. Если вы загрузили 1000 дел, а потом поняли, что бот плохо ищет, потому что куски текста слишком маленькие — вам придется сносить базу и заливать всё заново. А это, как мы видим, часы времени.