Hippo-RAG: Долговременная память для LLM, вдохновленная нейробиологией
Ученые часто вдохновляется нашими или животными биологическими структурами: CNN, MLP, Backprop, и для многих других исследований можно найти сходства в реальном мире. Недавно вышла статья, которая делает то же самое, но для RAG (Retrieval-Augmented Generation). В некотором роде, это недостающая современным LLM долгосрочная память. Это понятно, а причем тут неокортекст, гиппокамп и другие сложные слова? Давайте посмотрим.
LLM сейчас встраиваются во все наши сферы, ChatGPT наделал куча шуму, но за это время так и не была решена одна из основных проблем: как контролировать память модели? Вот мы обучили новейшую o1, но все равно вешаем плашку «Модель обучена на данных до октября 2023 года» -, а дальше как? Целый ряд задач очень сложно решить без контекста современного мира — модель знает только то, на чем она обучалась. RAG — один из способов контроля долговременной памяти для LLM. Видов имплементации RAG множество, но остановимся мы сегодня на одном — Hippo-RAG. Это краткий пересказ статьи этого года.
Теория индексации памяти гиппокампом
— это теория, объясняющая принцип работы долговременной памяти. В ней участвуют три участка мозга: неокортекса, парагиппокампальные области и сам гиппокамп. Вместе они работают над двумя задачами: разделение паттернов, обеспечивающая уникальность представлений воспринимаемых событий и завершение паттернов, позволяющая воспроизводить полные воспоминания из частичного импульса.
Разделение паттернов осуществляется во время кодирования памяти:
Кодирование памяти начинается с того, что неокортекс (новая кора) получает и обрабатывает воспринимаемые стимулы, преобразуя их в более высокоуровневые признаки.
Затем эти признаки передаются через парагиппокампальные области к гиппокампу, который выполняет их индексирование.
В гиппокампе значимые сигналы включаются в «индекс» и связываются друг с другом.
Завершение паттернов позволяет «находить» в памяти близкие воспоминания к определенному событию.
Начинается он с получения гиппокампом частичных сигналов через парагиппокампальный тракт.
Гиппокамп использует свою контекстно-зависимую систему памяти, которая, как считается, реализована через плотную сеть нейронов в подрегионе CA3, чтобы идентифицировать полные и релевантные воспоминания в своём индексе.
Затем эта информация передаётся обратно в неокортекс для симуляции полного воспоминания.
Так, это было много теории. Осознаем все еще раз: неокортекс извлекает высокоуровневые признаки из стимулов, затем гиппокамп их индексирует, а когда память необходимо извлечь, гиппокамп использует нейронку для нахождения релевантных воспоминаний и передает это обратно в неокортекст. На Рис. 1 это все проиллюстрировано.
Рис. 1 Сверху теория индексация памяти гиппокампом, снизу Hippo-RAG
HippoRAG
Архитектура имеет ML компоненты для каждого из трех участков мозга. В качестве неокортекса выступает LLM, парагиппокампальные области — энкодеры, а гиппокамп — граф знаний и PageRank для поиска. Есть здесь, соответственно и свои стадии разделения и завершения паттернов. У нас есть набор параграфов текста P, которые выступают нашими «воспоминаниями».
Offline Indexing, или разделение паттернов
Вместо неокортекста, здесь используется LLM для извлечение триплетов — N, например, (Томас, изучать, Альцгеймер). Авторы аргументируют свой выбор в пользу триплетов вместо векторных представлений, возможностью разделять знания на более гранулярные части. Что немного сомнительно, но окэй. Затем они используют Retrieval Encoders (просто энкодер + cosine distance) для создания в графе знаний дополнительных ребер между близкими по смыслу сущностями — это нам потребуется во время извлечения знаний. Так, извлекая и расширяя граф знаний для каждого из параграфов, у нас получается матрица, содержащая количество триплетов в каждом параграфе:
Она потребуется нам на следующем этапе, чтобы определять наиболее близкие параграфы к запросу.
Online Retrieval, или завершение паттернов
Имитируя процесс воспроизведения памяти в человеческом мозге, в данном алгоритме извлечение использует схожие процессы. Как и неокортекст, LLM извлекает триплеты из запроса. Затем, используя все тот же Retrieval Encoders, ищутся релевантные узлы в нашем графе знаний (что похоже на триплеты запрос). Получившийсяиз триплетов запроса и близких к ним, частичный сигнал передается в гиппокамп для поиска релевантных индексов параграфов.
Человеческие индексы гиппокампа «активируют» друг друга с помощью нейронных связей, что похоже на обход графа. Авторы имитируют этот процесс с помощью алгоритма Personalized PageRank, который позволяет находить релевантные связи на основе заданных узлов (некоторое подобие частичного сигнала).
Более формально,
Извлечение триплетов из запроса
Поиск схожих триплетов на триплеты запроса в базе знаний, M — энкодер, e — триплеты в графе знаний
Затем мы запускаем PPR алгоритм на триплетах из запроса и полученных синонимичных триплетах
Изначальная вероятность для узлов E = 0, а для C распределена равномерно. PPR учитывает начальный сигнал, и в итоге фокусируется только на упомянутых в запросе узлах и их соседях. После мы получаем распределение вероятности на всех триплетах. Для получения ранга параграфов, умножаем вероятности триплетов на матрицу I
То есть, чем более вероятны и частоты триплеты из параграфа являются частью запроса или их соседями, тем больший ранг будет у параграфа по отношению к запросу.
Метрики
Окей, а как вся эта сложная конструкция ведет себя на бенчмарках? Проверяют этот подход на задачах multi-hop reasoning, когда у нас есть несколько кусочков информации и необходимо ответить на вопрос, используя часть каждого. К примеру:
Параграф 1: Фильм Убить Билла вышел в 2003 году
Параграф 2: Фильм Аватар вышел в 2009 году
Вопрос: Какой фильм вышел раньше, Аватар или Убить Билла?
Чтобы ответить на вопрос, необходимо сначала понять, в каком году вышел каждый из фильмов, а затем сравнить эти даты. То есть проделать несколько шагов.
Результаты оригинального метода — без дополнительной логики. Contriever и ColBERTv2 — Retrieval Encoders
Сравнивая на датасетах с другими Retrieval системами, HippoRAG имеет больше в среднем на 5–10 пунктов R@2 и 10–15 пунктов R@5. Если подключить дополнительные шаги, например, IRCoT, то результаты будут похожими.
Все так же хорошие результаты вместе с IRCoT
Еще авторы сравнили, какой из этапов наиболее важный для системы. Наибольшая просадка происходит при замене PPR на другой алгоритм, что довольно логично при задаче рассуждения с несколькими шагами — важнее правильно определить соседей наших начальных узлов, ведь без них не получится достать ответ.
Итог
В последнее время не так часто натыкаюсь на статьи, которые были воодушевлены человеческими процессами. Удивительно, что это сработало лучше альтернатив, да еще и с детерминированным алгоритмом PPR. Что показалось вам необычным? Оставляйте комментарии
P.S.
Работаю сейчас над multihop-reasoning статьей на похожих датасетах и результаты моего метода выглядят еще более многообещающе. Если интересно следить, то подписывайтесь на телеграмм канал.