Integrar Microsoft GraphRAG en Neo4j
La implementación de GraphRAG de Microsoft se ha utilizado con éxito para construir grafos de conocimiento a partir de documentos fuente procesados a través de un Modelo de Lenguaje Grande (LLM). La salida es información estructurada sobre entidades y sus relaciones, que se procesa posteriormente utilizando algoritmos de grafos como el algoritmo de detección de comunidad de Leiden para generar resúmenes. Esta publicación discute cómo almacenar la salida de GraphRAG en Neo4j y implementar recuperadores locales y globales utilizando LangChain o LlamaIndex.
El conjunto de datos utilizado es "A Christmas Carol" de Charles Dickens. Aunque el proceso de extracción de grafos se puede omitir, algunas configuraciones importantes incluyen seleccionar tipos de entidades (organizaciones, personas, eventos, geo) y establecer el máximo de cosechas para realizar varias pasadas de extracción para capturar información completa. La salida del pipeline de extracción de grafos se almacena como archivos parquet, que luego se importan a Neo4j. El proceso de importación se puede realizar utilizando una instancia de nube Aura gratuita o un entorno local de Neo4j, con el código de importación proporcionado como un cuaderno de Jupyter en GitHub.
Después de importar los datos a Neo4j, se realiza un análisis de grafos simple utilizando consultas Cypher para comprender la estructura y el contenido de los datos extraídos. Por ejemplo, la distribución de entidades extraídas y grados de nodos se puede analizar para obtener insights sobre los datos. Las entidades extraídas y sus relaciones se visualizan y validan utilizando el navegador de Neo4j.
Para implementar recuperadores, el recuperador local utiliza la búsqueda vectorial para identificar nodos relevantes y luego recorre la información vinculada para inyectar en la promesa del LLM. Se configura el índice vectorial y se define la consulta de recuperación para recopilar datos de texto relevantes como fragmentos de texto, informes de comunidad y descripciones de relaciones. Esto se implementa utilizando tanto LangChain como LlamaIndex, con la consulta de recuperación adaptada para cada marco.
Por otro lado, el recuperador global itera sobre resúmenes de comunidad a un nivel jerárquico especificado, generando resúmenes intermedios y una respuesta final. Esta aproximación simplifica el proceso de recuperación, pero requiere seleccionar el nivel jerárquico adecuado para obtener los mejores resultados.
En resumen, la integración de GraphRAG con Neo4j y marcos de recuperadores como LangChain y LlamaIndex permite la recuperación de datos sofisticada de grafos de conocimiento estructurados, aprovechando tanto estrategias de recuperación locales como globales. Esta implementación muestra las aplicaciones prácticas de GraphRAG en el análisis y consulta de información estructurada extraída de fuentes textuales.