📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

MemoryGraphRAG (Outperforms Every RAG)

Discover AI19:45

Transcription

Привет, сообщество. Так здорово, что вы вернулись. Да, сегодня мы поговорим о дальнейшем развитии rag. Вы знаете, у нас был graph rag, а теперь у нас есть memory graph rag, и да, абсолютно, мы построили новый слой memory graph с онтологическим слоем с тремя различными слоями памяти, и это улучшит производительность нашей системы. И вот он у нас. Это от Университета Шиа Ман и Университета Цзилинь. Memgraph rag — многоагентная система на основе памяти для генерации, дополненной графовым поиском. И вы вспоминаете старые добрые времена и говорите: "Где мой обычный rag?". Но забудьте об этом. У нас теперь есть эта новая, новаторская структура, которая представляет собой многоагентную систему на основе памяти для обеспечения высококачественного построения графа. И если вы новичок в этом, вы скажете: "Но зачем нам был graph rag? Он был идеален". Нет, graph rag имел три основные проблемы, и теперь они справляются с каждой из этих проблем. Они нашли решение этой проблемы. Итак, начнем. У graph rag была проблема автоматической нерелевантности. Назовем это шумом, потому что LLM читает здесь фрагменты из контекста. Иногда она извлекает нерелевантные места и побочные замечания. Например, в медицинском тексте о раке она может извлечь триплет "пациент предпочитает чай кофе". Это неплохо, но, возможно, это не очень релевантно для анамнеза. Второе — логическая непоследовательность или, как ее называют, ложь. Различные фрагменты текста часто противоречат друг другу, особенно при наличии нескольких источников. Теперь один говорит: "Эй, Исаак Ньютон родился в 1643 году", а другой говорит: "Нет, Ньютон родился в 1645 году". И наивный graph rag просто объединяет оба факта, создавая раздвоенную временную шкалу, которая теперь сбивает с толку последующий поиск. И третья проблема — трещины, структурная фрагментация без глобальной таксономии. Граф становится фрагментированным, и мы покажем вам, как мы можем с этим справиться. Так, одна и та же сущность может быть написана здесь как "Ньютон" в одном месте и "Исаак Ньютон" в другом, что приводит к разрозненным островам. Подумайте об этом в трехмерной структуре графа, которая теперь препятствует многошаговому поиску по всей базе данных. Мы заходим сюда, возможно, на какие-то графовые острова, мы хотим решить эту проблему. Так красиво. И в целом можно сказать, что если у вас есть на оси X полнота, а на оси Y релевантность, то обычный rag работал отлично, но посмотрите, где он находится. Так, graph rag достигает более высокого процента полноты. Абсолютно. Это означает, что он находит больше потенциальных зацепок, но имеет катастрофически низкую релевантность, потому что, более или менее, он топит LLM в шумном, противоречивом контексте. Да, конечно, у нас есть hypoor и некоторые GFM rag и все такое. И если вы новичок на моем канале, у меня есть полный плейлист на YouTube здесь о rag 3.0 agency. Так что нет ничего о ванильном rag. Это уже rag 3.0. Так что, если вы хотите увидеть spre или что-то еще, что вам нравится, у нас есть много, много систем rag. Но что такое последний memory graph rag? Это трехслойная глобальная память, которую мы добавляем к системе graph rag. Так вот она, по сравнению с graph rag. Здесь внизу вы видите me graph rag. Так, у нас есть чанкинг, мы его вставляем, но у нас теперь есть три разных слоя памяти. Мы строим иерархический граф, и у нас будет старый добрый друг из Google в механизмах ранжирования поиска для извлечения фактов из всех текстовых фрагментов. Итак, начнем. Во-первых, у нас должно быть здесь индексирование графа на основе памяти. Итак, что у нас есть? У нас есть неструктурированные документы, где мы храним тысячи и миллионы документов. Прекрасно. И я покажу вам позже, у нас есть три агента. На первом агенте, здесь, у нас агент извлечения. Угадайте что? И он заботится о том, чтобы он был расположен теперь в трех разных слоях памяти. У нас есть глобальная память здесь, и первая — это онтологический слой. Вы знаете, у нас есть схема, где у нас есть наши графы, будь то человек, страна, или человек, родное местоположение, или компания, создающая продукт, и так далее. Теперь для ваших конкретных документов это создает фильтр частоты для стабильной схемы для топ-К схем, таких как, я не знаю, столица страны или профессия человека. Так, онтологический слой хранит схемы с частотой извлечения ваших обучающих документов. А затем у нас есть фактический слой, и это то, что, угадайте, поддерживает здесь конкретные факты. Прекрасно. Как я уже показал, у нас теперь есть два разных документа: год рождения Ньютона, год рождения 1643 и год рождения Ньютона, год рождения 1645. Итак, что происходит из этого слоя фактов? У нас теперь есть второй агент, наш агент обнаружения конфликтов, и он понимает, что есть конфликт, и вы знаете, мы должны держать агента простым. Не давайте им две работы, только одну работу, потому что, да, LLM не настолько способен. И затем мы передаем его следующему, третьему агенту. И третий агент теперь — обработчик конфликтов. Угадайте что? Этот обработчик конфликтов теперь смотрит на триплет здесь, на конфликтный триплет, смотрит на исходный документ и говорит: "Хорошо, может быть только одно истинное". Итак, учитывая, что здесь есть документация, он теперь решает, что один из них правильный. И прекрасно. И это здесь, в слое фрагментов, потому что здесь, в слое фрагментов, он сохраняет исходные текстовые фрагменты для обоснования доказательств. Это абсолютно важно. Итак, вы видите, это здесь, где мы говорим, если у нас есть отладка, логическая отладка, что мы делаем, мы идем сюда, в слой фрагментов, и видим точно, какая входящая информация была и почему агент обнаружения конфликтов и агент обработки конфликтов выбрали здесь конкретный документ. И затем, если у нас вся эта память заполнена данными, мы строим граф. Итак, мы начинаем здесь, внизу, с графа фрагментов. Здесь у нас есть сущность, документы, все здесь. Прекрасно. Затем мы строим наш граф фактов из слоя памяти фактов. У нас здесь есть сущность, например, тренер, отношение — работа, а сущность — я не знаю, Симпсон или Джон или что-то еще, а вес — один. И затем у нас есть онтологический граф в иерархической структуре, где у нас есть схема. Итак, схема — это тип — человек, отношение — работа, второй тип — профессия, а вес — теперь пять в ваших неструктурированных обучающих данных. Итак, как вы видите, у нас теперь есть три взаимосвязанных графовых представления. Итак, во-первых, у нас есть схематический онтологический граф, полученный из нашей онтологии, который кодирует тип отношений на уровне схемы и структурные ограничения этих двух. Затем у нас есть второй граф фактов, построенный из памяти фактов, который представляет собой неинстанцированные триплеты сущность-отношение-сущность для многошагового рассуждения. И затем у нас есть графы исходных доказательств, которые обосновывают все в поддерживаемых текстовых фрагментах. Итак, как я всегда показывал вам, у нас есть три агента, они называют это многоагентной группой, и по определенной причине я объясню в конце этого видео, они используют GPD для omni mini, я не знаю, доступен ли он официально от OpenAI, возможно, Omni, я думаю, теперь здесь. Да, неважно. И они говорят: "Хорошо, нам нужны три агента", и я уже показал вам, что делают агенты. Так, галочка. Прекрасно. Просто чтобы убедиться, что сама память не является пассивным хранилищем данных. Она здесь, если хотите, или она обеспечивает двустороннюю связь. Итак, у нас есть согласование экземпляров схемы. Так, каждый факт в слое фактов должен управляться правилом достоверности в онтологическом слое. И у нас есть обоснование фактов и доказательств. Это означает, что каждый факт в слое фактов математически привязан к точному текстовому фрагменту в слое фрагментов, где он был найден. И если факт подвергается сомнению, система может мгновенно указать на этот точный исходный текст. Прекрасно. Теперь я рассказал вам о некоторых разрозненных, некоторых островах в графах. Нет. И чтобы предотвратить эту фрагментацию, авторы этой статьи сегодня о memory graph rag используют два специальных механизма моста. Они соединяют разрозненные части графа, используя два метода. Во-первых, у нас есть мост на основе типов, простое связывание различных сущностей, если они разделяют высокоуровневую категориальную классификацию в онтологическом слое. Прекрасно. И мост на основе сходства. Это опирается на некоторую невидимую или, скорее, слабую связь между сущностями, которые держатся за ваши носки. Мы вернулись к семантическим векторным вложениям, которые очень похожи, гарантируя, что структурный обход может перемещаться по границам документов. Так, у нас все еще есть старое доброе косинусное сходство. Все это делается в автономном режиме, а теперь перейдем к реальному случаю, к поиску в реальном времени. Итак, теперь у нас есть входящий запрос от меня, например. Да. Итак, мой вопрос здесь сейчас. Отлично. Итак, что происходит? Как вы видите, у нас более или менее три шага: один, два и три. Итак, во-первых, у нас есть поиск и рассуждение, управляемые памятью, теперь в трех стадиях. Во-первых, многослойный поиск по памяти, который извлекает кандидатные схемы, факты и фрагменты из памяти, потому что мой вопрос, скажем, о физике, и у меня много физических знаний здесь, в моей памяти, и в трех разных слоях. Прекрасно. Затем второй — это инициализация узлов с учетом структуры. Что это значит? Это просто сопоставляет извлеченные доказательства с некоторыми начальными весами узлов. Это основано на семантической релевантности и структурных сигналах, которые у нас есть в сети. Это классика. И, наконец, и это теперь красота, если хотите, у нас есть персонализированный поиск по страницам. Старый добрый Google. Google начал с алгоритма PageRank, когда я начал учиться. Как Google выполняет свою работу? PageRank сотни лет назад. Неважно. Мы все еще используем этот алгоритм здесь, в поиске в реальном времени, на третьем шаге. Итак, распространение графа, которое запускает персонализированный поиск по страницам по гетерогенному графу для ранжирования глобально важных узлов и фрагментов для генерации LLM, а затем вся информация передается агенту, и этот агент теперь предоставляет ответ на мой вопрос. Отлично. Итак, если вы хотите представить это в более абстрактной нотации, когда пользователь отправляет запрос, у нас сначала происходит параллельное извлечение. Система извлекает релевантные схемы, релевантные факты и фрагменты из трех глобальных слоев памяти одновременно. Так, если у меня вопрос о физике, он точно знает, что где-то в памяти есть физический факультет, и просто берет всю физику. Затем у нас есть умные веса сброса. Теперь это вычисляет начальные веса для узлов графа. Итак, что он делает? Во-первых, он должен подавить общие категории-хабы, такие как эти общие термины, такие как человек или частица или свет или фотон, нет, потому что они не хотят утонуть в специфических узлах во время этого исследования, а затем они должны приоритизировать фрагменты с высокой плотностью информации. Так, документы, содержащие редкие, высокоспецифичные экспериментальные данные из моих последних экспериментов. Так, я точно знаю, где находится мой источник данных, а затем, да, [кашляет] как вы знаете, механизм PageRank просто запускает распространение по всему графу, чтобы семантическая энергия текла наружу от узлов, релевантных запросу, и это означает, что мы действительно определяем наиболее критические пути и фрагменты в этом сложном графе, которые затем передаются генератору LLM для предоставления ответа пользователю. Отлично. Некоторые могут сказать: "Эй, это звучит просто". Это прямолинейно. Нет ничего такого, что мы говорим, что нам нужно что-то рассчитать математически, что безумно. Нет бенчмарков. Итак, давайте посмотрим. У нас есть разные бенчмарки: hotpot, wiki, multihop, music и так далее, и в целом. Итак, давайте посмотрим. Художники структурировали это здесь в три блока. Первый — это прямое инференс LLM с нулевым выстрелом. Итак, насколько хорош Llama 3 8 миллиардов на вопросе-ответе hotpot? Мы получили результат или GPT4 Omni Mini. Вот он. А теперь сравните это с добавленным улучшением, потому что здесь, в конце, этот дельта — это теперь здесь. Если бы я сделал это с GPT4 Omni Mini с этой новой методологией на этом конкретном бенчмарке, мы бы перешли с 38,10 до плюс 28,26. В дополнение. Так что это был бы значительный скачок в производительности. Если у нас просто есть система rag, ванильная система rag, вы берете топ пять. Вы видите, мы идем с 38,10 до 58,5. Но если бы вы сделали это здесь. Да. Видите, точно. И затем это прекрасно. Здесь у вас есть все rag, это знаменитая система rag. Да. Microsoft graph rack, lazy graph rack, light rag, hipper rag, hipper rag 2, equare graph rack, GFM rag, logic rag, linear rag, и, боже мой, я не знаю, сколько еще систем rag у нас уже есть. А затем в последней строке — наша новая система memory graph rag, и вы видите, что она почти превосходит все другие методы генерации, дополненной графовым поиском. Прекрасно. И вы видите здесь также добавленный скачок производительности в зеленых полях. Так, если мы возьмем hippo rag. Итак, останемся здесь. У нас плюс 8,27. Это проценты или процентные пункты? Я не знаю. Пожалуйста, проверьте в литературе. Но вы видите, что это довольно хороший и впечатляющий скачок. Что еще? Я сказал вам, что там почти нет новой математики. Итак, здесь у вас есть абсолютный код для кодирования алгоритма, и сначала здесь индексирование на основе памяти, построение графа. Итак, все, через что мы прошли здесь, вы снова увидите в простой структуре псевдокода, но я также дам вам репозиторий GitHub, так что вам не придется ничего кодировать. И, конечно, поиск, управляемый памятью, и поиск в реальном времени, и да, там идет небольшая фильтрация, но в остальном это точно так же, как мы прошли. Но вы можете получить это здесь. Да, с резервным решением для стандартного drag. Конечно, вы можете реализовать это. Но это именно то, что мы прошли вместе. Они действительно красиво детализированы. Вы видите здесь в приложении также промпт, использованный для, скажем, агента разрешения конфликтов. Так, у вас здесь действительно есть промпт, который они использовали для своих экспериментов. Если вы хотите запустить их, если вы хотите изменить их промпт дальше и хотите увидеть, насколько вы можете улучшить их методологию memory graph rag, они предоставляют вам все промпты и все остальное. И да, конечно, здесь репозиторий GitHub, как вы видите, трехслойная структура памяти. И да, это все. Это адрес. А затем, если вы посмотрите на файл memory Python, он точно построил трехслойную структуру памяти с межслойными соединениями: слой схемы, слой фактов, слой фрагментов, и да, все доступно для вас, если вы хотите протестировать это. Да, что я не упомянул, да, он превосходит, но вы знаете, есть еще одно преимущество, что он не просто превосходит, но мы потратили столько усилий и вычислительного времени на индексацию этого сложного графа, что затем, когда у нас есть входящий запрос. Эта система теперь быстрая, и помните, Google PageRank — это очень быстрая система. Итак, здесь у нас есть данные, сравните это сейчас, и здесь у вас есть raptor, hipper и так далее, и в конце здесь последний столбец — это время поиска, классическое время поиска, и вы видите, что с этой новой методологией вы быстрее, чем любой другой метод, который у нас был до сих пор. Но, конечно, это только потому, что мы вложили довольно много времени в подготовку, в индексацию графа, в построение этого сложного графа со сложными слоями памяти. Нет. Так что не забывайте об операционной части, если у вас есть абсолютно ультрабыстрая система, но вам придется вложить довольно много в вашу конкретную подготовку, в ваши конкретные знания предметной области, индексацию. Скажем, вы занимаетесь математикой или теоретической физикой, или химией, биологией, медициной, финансами, чем угодно. Да. И затем я сказал вам, и я подумал об этом, почему GPD4 omni mini, и я подумал, почему там нет последнего Claude 4.88 или, я не знаю, чего у нас нет. И это просто, и я заметил только половину предложения, но я думаю, что намерение авторов было показать нам, что вам не нужна лучшая и самая дорогая языковая модель на планете, потому что даже со старой, не самой передовой LLM эти новые методы работают, и все данные, которые я вам показал здесь, все агенты работали здесь на GPT E4 Omni Mini LLM. Так что вы не можете сказать, что это имеет высокую технологическую сложность или что это здесь, что вам нужно запускать это в облаке. Нет. Так что, если вы посмотрите на это с этой точки зрения, я должен улыбнуться и сказать: "Эй, это здорово, что авторы выбрали такую старую, не самую мощную модель". Нет, которую мы можем запускать, возможно, локально. Не обязательно должна быть система GPD, и методология работает, и она стабильна, и она дает вам реальные преимущества по сравнению с другими системами graph rack. И это то, что я хотел подчеркнуть, потому что я получаю некоторые ответы. "Эй, почему там последний? Почему это просто 4.7, а не 4.8 LLM?". Ну, иногда полезно знать, что эти новые вещи также работают на старых добрых, обычных LLM, которые совсем не сложны и не облачные. Я надеюсь, вы получили немного удовольствия, некоторые новые идеи. Возможно, вы захотите попробовать эту новую методологию для вашей конкретной области, для вашего конкретного уровня сложности вашего запроса, вашей задачи. Было бы здорово получить обратную связь. Если у вас есть какие-либо улучшения, которые вы действительно заметили, что эти слои памяти обеспечивают дополнительную выгоду для вашей профессиональной работы, было бы здорово увидеть вас в моем следующем видео.