Как улучшить RAGМой клиент хочет загрузить сотни файлов по его судебному делу, где содержатся показания разных людей, обвинения от десятков международных банков и тд, в одну базу, чтобы потом адвокаты могли искать нужную информацию через обычного ТГ бота.
Я ему сказал, что обычный RAG агент на N8N такую задачу не потянет, но сам пошел искать информацию, а какие собственно есть способы улучшить RAG и можно ли их соорудить в N8N.
Основной вариант, который у меня лежал в голове - запись в метаданные ссылки на файл, категоризация файлов (теги, категории) и предварительная фильтрация по файлам, перед поиском по основным векторам. То есть перед тем как искать сами вектора, сначала подобрать с ИИ подходящие по тегам/категориям файлы, чтобы не пулять тупо по всей базе.
Из
презентации одного из работников LlamaIndex
(занимаются умными RAG для корпоратов) я подчерпнул 3 наиболее реалистичных варианта.
1️⃣ Расширение контекста - при нахождение вектора можно запросить 2 соседних вектора в обе стороны, чтобы получить больше контекста, а не просто вырванную идею. При этом я думаю можно добавить дополнительную валидацию с ИИ - расширился ли контекст или нет. Во втором случае можно сужать его обратно и выдавать только релевантный кусок.
2️⃣ От малого к большому - добавлять в метаданные чанков (или в отдельню таблицу) теги/категории/саммари и проводить сначала векторный поиск по этим данным. После того как найдены подходящие чанки - запрашивать сами записи и отправлять их ИИ. В этом случае потребуется правильный подход к саммари на основе возможных вопросов (от пользователей) и специфики ниши - к примеру в legal это могли быть факты, даты, имена и тд.
3️⃣ Мультиагентсткая система - главный агент планирует ряд действий/вопросов для выяснения и поручает их нескольким агентам (либо сам итерируется по ним). По итогу мы не просто получаем куски данных из БД, а итеративно обрабатываем множество кусков, задавая разные вопросы и обогащая ответ. Также про этот подход
писал Google._____Доводилось ли вам делать агента с поиском по куче документов и какие методы вы использовали?