GraphRAG

Consulte um banco de dados híbrido de grafo (Neo4j) e vetorial (Qdrant) para recuperação poderosa de documentos baseada em semântica e grafos.

Documentação

GraphRAG MCP Server

Um servidor Model Context Protocol para consultar um sistema híbrido de banco de dados de grafos e vetores, combinando Neo4j (banco de dados de grafos) e Qdrant (banco de dados vetorial) para uma poderosa recuperação de documentos semântica e baseada em grafos.

Visão Geral

O GraphRAG MCP fornece uma integração perfeita entre grandes modelos de linguagem e um sistema de recuperação híbrido que aproveita os pontos fortes de bancos de dados de grafos (Neo4j) e bancos de dados vetoriais (Qdrant). Isso permite:

  • Busca semântica por meio de embeddings de documentos
  • Expansão de contexto baseada em grafos seguindo relacionamentos
  • Busca híbrida combinando similaridade vetorial com relacionamentos de grafos
  • Integração completa com Claude e outros LLMs por meio do MCP

Este projeto segue a especificação do Model Context Protocol, tornando-o compatível com qualquer cliente habilitado para MCP.

Recursos

  • Busca semântica usando embeddings de frases e Qdrant
  • Expansão de contexto baseada em grafos usando Neo4j
  • Busca híbrida combinando ambas as abordagens
  • Ferramentas e recursos MCP para integração com LLMs
  • Documentação completa do esquema do Neo4j e informações da coleção do Qdrant

Pré-requisitos

  • Python 3.12+
  • Neo4j em execução em localhost:7687 (configuração padrão)
  • Qdrant em execução em localhost:6333 (configuração padrão)
  • Dados de documentos indexados em ambos os bancos de dados

Instalação

Início Rápido

  1. Clone este repositório:

    git clone https://github.com/rileylemm/graphrag_mcp.git
    cd graphrag_mcp
    
  2. Instale as dependências com uv:

    uv install
    
  3. Configure suas conexões de banco de dados no arquivo .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. Execute o servidor:

    uv run main.py
    

Guia de Configuração Detalhado

Para um guia detalhado sobre como configurar o sistema de banco de dados híbrido subjacente, consulte o repositório complementar: GraphRAG Hybrid Database

Configurando Neo4j e Qdrant

  1. Instale e inicie o 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. Instale e inicie o Qdrant:

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

Indexando Documentos

Para indexar seus documentos em ambos os bancos de dados, siga estes passos:

  1. Prepare seus documentos
  2. Crie embeddings usando sentence-transformers
  3. Armazene documentos no Neo4j com informações de relacionamento
  4. Armazene embeddings de trechos de documentos no Qdrant

Consulte o repositório GraphRAG Hybrid Database para scripts e procedimentos detalhados de indexação.

Integração com Clientes MCP

Integração com Claude Desktop / Cursor

  1. Torne o script de execução executável:

    chmod +x run_server.sh
    
  2. Adicione o servidor ao seu arquivo de configuração MCP (~/.cursor/mcp.json ou equivalente do Claude Desktop):

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

Uso

Ferramentas MCP

Este servidor fornece as seguintes ferramentas para uso com LLMs:

  1. search_documentation - Busque informações usando busca semântica

    # Example usage in MCP context
    result = search_documentation(
        query="How does graph context expansion work?",
        limit=5,
        category="technical"
    )
    
  2. hybrid_search - Busque usando abordagens semântica e baseada em grafos

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

Recursos MCP

O servidor fornece os seguintes recursos:

  1. https://graphrag.db/schema/neo4j - Informações sobre o esquema de grafos do Neo4j
  2. https://graphrag.db/collection/qdrant - Informações sobre a coleção vetorial do Qdrant

Solução de Problemas

  • Problemas de conexão: Certifique-se de que Neo4j e Qdrant estejam em execução e acessíveis
  • Resultados vazios: Verifique se sua coleção de documentos está devidamente indexada
  • Dependências ausentes: Execute uv install para garantir que todos os pacotes estejam instalados
  • Autenticação do banco de dados: Verifique as credenciais no seu arquivo .env

Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.

Licença

Licença MIT

Copyright (c) 2025 Riley Lemm

É concedida permissão, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e dos arquivos de documentação associados (o "Software"), para lidar com o Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, mesclar, publicar, distribuir, sublicenciar e/ou vender cópias do Software, e para permitir que as pessoas a quem o Software é fornecido façam o mesmo, sujeito às seguintes condições:

O aviso de direitos autorais acima e este aviso de permissão deverão ser incluídos em todas as cópias ou partes substanciais do Software.

O SOFTWARE É FORNECIDO "NO ESTADO EM QUE SE ENCONTRA", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO FIM E NÃO VIOLAÇÃO. EM NENHUM CASO OS AUTORES OU DETENTORES DOS DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE, OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.

Atribuição

Se você usar este servidor MCP ou adaptá-lo para seus próprios fins, forneça atribuição a Riley Lemm e faça um link de volta para este repositório (https://github.com/rileylemm/graphrag_mcp).