Интеграция Microsoft GraphRAG ... Заметка

Интеграция Microsoft GraphRAG в Neo4j

Реализация GraphRAG от Microsoft была эффективно использована для построения графов знаний из исходных документов, обработанных с помощью большой языковой модели (LLM). На выходе получается структурированная информация о сущностях и их связях, которая в дальнейшем обрабатывается с помощью графовых алгоритмов, таких как алгоритм обнаружения лейденских сообществ, для создания резюме. В этом посте рассматривается, как хранить выходные данные GraphRAG в Neo4j и реализовать локальные и глобальные ретриверы с помощью LangChain или LlamaIndex. В качестве набора данных используется "Рождественская песнь" Чарльза Диккенса. Хотя процесс извлечения графов можно пропустить, некоторые важные настройки включают в себя выбор типов сущностей (организации, люди, события, гео) и установку максимального количества извлечений, чтобы выполнить несколько проходов извлечения для полного сбора информации. Выходные данные конвейера извлечения графов хранятся в виде паркетных файлов, которые затем импортируются в Neo4j. Процесс импорта может быть выполнен с помощью бесплатного облачного экземпляра Aura или локальной среды Neo4j, а код импорта предоставляется в виде блокнота Jupyter на GitHub. После импорта данных в Neo4j выполняется простой анализ графов с помощью запросов Cypher, чтобы понять структуру и содержание извлеченных данных. Например, распределение извлеченных сущностей и степени узлов могут быть проанализированы, чтобы получить представление о данных. Извлеченные сущности и их связи визуализируются и проверяются с помощью Neo4j Browser. Для реализации ретриверов локальный ретривер использует векторный поиск для выявления релевантных узлов, а затем просматривает связанную информацию для введения в подсказку LLM. Векторный индекс настраивается, а запрос на извлечение определяется для сбора релевантных текстовых данных, таких как фрагменты текста, отчеты сообщества и описания отношений. Это реализовано с использованием как LangChain, так и LlamaIndex, причем поисковый запрос адаптирован для каждого фреймворка. Глобальный ретривер, с другой стороны, итерирует сводки сообществ на заданном иерархическом уровне, генерируя промежуточные сводки и окончательный ответ. Такой подход упрощает процесс поиска, но требует выбора подходящего иерархического уровня для получения наилучших результатов. Таким образом, интеграция GraphRAG с Neo4j и такими ретриверами, как LangChain и LlamaIndex, позволяет осуществлять сложный поиск данных из структурированных графов знаний, используя как локальные, так и глобальные стратегии поиска. Данная реализация демонстрирует практическое применение GraphRAG в анализе и запросе структурированной информации, извлеченной из текстовых источников.