У меня есть задача, которую я себе поставил, когда стал на практике разбирать работу с ИИ не в формате чата и выполнения простых агентских задач.
Недавно я увидел программу AnythingLLM, которая показалась готовым решением, где описанную задачу можно решить максимально просто. На практике там очень много нюансов и лично мне не удалось получить удовлетворительный вариант. Расскажу обо всём по порядку.
В Anythingllm есть два варианта работы с локальными файлами:
1️⃣ Вы создаёте рабочее пространство и вручную загружаете в него файлы по теме. Они обрабатываются, составляется векторное представление (embedding) и записывается в векторную базу данных. Вы получаете полноценную RAG-систему. Теперь при ответах LLM может учитывать информацию из RAG.
В Anythingllm удобно то, что по умолчанию в каком-то виде всё это уже настроено и работает, не нужно разбираться в нюансах - выбирать базу данных, embedder. Для каких-то совсем простых ситуаций этого будет достаточно. Но если нужна полноценная работа, то со всем этим нужно детально разбираться. Там очень много нюансов. Первое, с чего начать - заменить embedding модель с английской на мультиязычную.
2️⃣ Можно настроить агентский skill, который умеет работать с файлами - искать, открывать, изменять и т.д. Доступы и ограничения гибко настраиваются. Сделано удобно, работает нормально. Но опять же, со своими нюансами.
В ютубе много роликов на тему Anythingllm, но все они очень поверхностны. Скачали, запустили, закинули вручную 10-20 файлов и что-то ищем в них, редактируем. Это сразу заработает.
Я тестировал на ~1500 файлах, связанных с деятельностью моего ИП - договоры, акты, соглашения и т.д. Подключил локальную LLM через LM Studio. Пробовал разные модели. Более-менее нормальный результат можно получить только с нейронкой от qwen3.5-9b и выше. Но даже её мне не хватало. Для глобального поиска по всей базе не хватает контекста даже в 128к токенов. Моя RTX 5060 и его не тянет. Саму Anythingllm я запускал отдельно на другой машине. Ей тоже нужны ресурсы, но в основном разово, при обработке новых документов.
Тестировал на следующих запросах:
◽️составь таблицу всех контрагентов и отсортируй их по количеству договоров
◽️найди самую низкую оплату по договору и самую высокую
◽️составь список наиболее популярных услуг в договорах и т.д.
Хотел получить какую-то простую и быструю аналитику без необходимости вытаскивать её из бухгалтерской программы. Хотя очевидно, что подобную задачу логичнее выполнять именно в ней.
В процессе тестов выяснилось, что если вы подключаете директорию через skill, то она никак не обрабатывается. Файлы из неё не попадают в RAG. LLM может с ней работать напрямую, что требует огромного контекста, если там много файлов. Для того, чтобы что-то найти, надо всё прочитать и загрузить в контекст, либо явно указывать, с каким конкретно файлом мы работаем. Фактически это бессмысленный для меня в таком виде вариант.
По умолчанию в RAG документы добавляются только вручную. Чтобы это автоматизировать, надо использовать API и писать логику. В этом ничего особо сложного нет, но нужно заниматься. Получается уже не такое простое и удобное решение.
Как я понял, простого решения задачи в лоб нет. В таком виде с сырыми файлами работать не получится. Надо всё это обрабатывать, загонять в базу данных и работать с ней. Я себе представлял, что RAG позволит без этого обойтись, но как показала практика, нужен очень большой контекст.
В целом, Anythingllm мне понравилась. Простой и функциональный инструмент. Думаю, что буду его использовать дальше в рамках его возможностей.
#ai