GraphRAG

Consulta una base de datos híbrida de grafos (Neo4j) y vectores (Qdrant) para una potente recuperación semántica y basada en grafos de documentos.

Documentación

GraphRAG MCP Server

Un servidor de Model Context Protocol para consultar un sistema híbrido de base de datos de grafos y vectores, que combina Neo4j (base de datos de grafos) y Qdrant (base de datos vectorial) para una potente recuperación de documentos semántica y basada en grafos.

Descripción general

GraphRAG MCP proporciona una integración perfecta entre modelos de lenguaje grandes y un sistema de recuperación híbrido que aprovecha las fortalezas tanto de las bases de datos de grafos (Neo4j) como de las bases de datos vectoriales (Qdrant). Esto permite:

  • Búsqueda semántica mediante embeddings de documentos
  • Expansión de contexto basada en grafos siguiendo relaciones
  • Búsqueda híbrida que combina similitud vectorial con relaciones de grafos
  • Integración completa con Claude y otros LLM a través de MCP

Este proyecto sigue la especificación Model Context Protocol, lo que lo hace compatible con cualquier cliente compatible con MCP.

Características

  • Búsqueda semántica usando embeddings de oraciones y Qdrant
  • Expansión de contexto basada en grafos usando Neo4j
  • Búsqueda híbrida que combina ambos enfoques
  • Herramientas y recursos MCP para integración con LLM
  • Documentación completa del esquema de Neo4j e información de la colección de Qdrant

Requisitos previos

  • Python 3.12+
  • Neo4j ejecutándose en localhost:7687 (configuración predeterminada)
  • Qdrant ejecutándose en localhost:6333 (configuración predeterminada)
  • Datos de documentos indexados en ambas bases de datos

Instalación

Inicio rápido

  1. Clona este repositorio:

    git clone https://github.com/rileylemm/graphrag_mcp.git
    cd graphrag_mcp
    
  2. Instala las dependencias con uv:

    uv install
    
  3. Configura tus conexiones de base de datos en el archivo .env:

    # Neo4j Configuration
    NEO4J_URI=bolt://localhost:7687
    NEO4J_USER=neo4j
    NEO4J_PASSWORD=password
    
    # Qdrant Configuration
    QDRANT_HOST=localhost
    QDRANT_PORT=6333
    QDRANT_COLLECTION=document_chunks
    
  4. Ejecuta el servidor:

    uv run main.py
    

Guía de configuración detallada

Para una guía detallada sobre la configuración del sistema híbrido de base de datos subyacente, consulta el repositorio complementario: GraphRAG Hybrid Database

Configuración de Neo4j y Qdrant

  1. Instala e inicia Neo4j:

    # Using Docker
    docker run \
      --name neo4j \
      -p 7474:7474 -p 7687:7687 \
      -e NEO4J_AUTH=neo4j/password \
      -v $HOME/neo4j/data:/data \
      -v $HOME/neo4j/logs:/logs \
      -v $HOME/neo4j/import:/import \
      -v $HOME/neo4j/plugins:/plugins \
      neo4j:latest
    
  2. Instala e inicia Qdrant:

    # Using Docker
    docker run -p 6333:6333 -p 6334:6334 \
      -v $HOME/qdrant/storage:/qdrant/storage \
      qdrant/qdrant
    

Indexación de documentos

Para indexar tus documentos en ambas bases de datos, sigue estos pasos:

  1. Prepara tus documentos
  2. Crea embeddings usando sentence-transformers
  3. Almacena los documentos en Neo4j con información de relaciones
  4. Almacena los embeddings de los fragmentos de documentos en Qdrant

Consulta el repositorio GraphRAG Hybrid Database para obtener scripts y procedimientos de indexación detallados.

Integración con clientes MCP

Integración con Claude Desktop / Cursor

  1. Haz ejecutable el script de ejecución:

    chmod +x run_server.sh
    
  2. Agrega el servidor a tu archivo de configuración de MCP (~/.cursor/mcp.json o equivalente de Claude Desktop):

    {
      "mcpServers": {
        "GraphRAG": {
          "command": "/path/to/graphrag_mcp/run_server.sh",
          "args": []
        }
      }
    }
    
  3. Reinicia tu cliente MCP (Cursor, Claude Desktop, etc.)

Uso

Herramientas MCP

Este servidor proporciona las siguientes herramientas para uso de LLM:

  1. search_documentation - Busca información usando búsqueda semántica

    # Example usage in MCP context
    result = search_documentation(
        query="How does graph context expansion work?",
        limit=5,
        category="technical"
    )
    
  2. hybrid_search - Busca usando enfoques semánticos y basados en grafos

    # Example usage in MCP context
    result = hybrid_search(
        query="Vector similarity with graph relationships",
        limit=10,
        category=None,
        expand_context=True
    )
    

Recursos MCP

El servidor proporciona los siguientes recursos:

  1. https://graphrag.db/schema/neo4j - Información sobre el esquema de grafos de Neo4j
  2. https://graphrag.db/collection/qdrant - Información sobre la colección vectorial de Qdrant

Solución de problemas

  • Problemas de conexión: Asegúrate de que Neo4j y Qdrant estén ejecutándose y sean accesibles
  • Resultados vacíos: Verifica que tu colección de documentos esté correctamente indexada
  • Dependencias faltantes: Ejecuta uv install para asegurarte de que todos los paquetes estén instalados
  • Autenticación de base de datos: Verifica las credenciales en tu archivo .env

Contribuciones

¡Las contribuciones son bienvenidas! No dudes en enviar un Pull Request.

Licencia

Licencia MIT

Copyright (c) 2025 Riley Lemm

Se concede permiso, de forma gratuita, a cualquier persona que obtenga una copia de este software y de los archivos de documentación asociados (el "Software"), para tratar el Software sin restricción, incluidos, sin limitación, los derechos de usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar y/o vender copias del Software, y para permitir a las personas a quienes se les proporcione el Software que lo hagan, sujeto a las siguientes condiciones:

El aviso de copyright anterior y este aviso de permiso deberán incluirse en todas las copias o partes sustanciales del Software.

EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN FIN PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE CUALQUIER RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O DE OTRA MANERA, QUE SURJA DE, O EN RELACIÓN CON, EL SOFTWARE O EL USO U OTROS TRATOS EN EL SOFTWARE.

Atribución

Si usas este servidor MCP o lo adaptas para tus propios fines, proporciona atribución a Riley Lemm y enlaza de vuelta a este repositorio (https://github.com/rileylemm/graphrag_mcp).