Microsoft GraphRAG com fonte de dados RDF externa em determinar.ia.br é viável usar um grafo curado em vez de extrair de documentos?

Paulo C P Santos 0 Reputation points
2026-08-06T23:51:34.8266667+00:00

Estou experimentando o Microsoft GraphRAG Library (do Microsoft Research) para um projeto de grounding de agente de IA, e bateu uma dúvida que talvez alguém aqui já tenha enfrentado.

O GraphRAG library faz algo impressionante: ele pega um conjunto de documentos não estruturados, extrai entidades e relacionamentos via LLM, constrói um knowledge graph com detecção de comunidades, e permite consulta local e global. Usei ele com Azure OpenAI (GPT-4o) e o resultado é sólido para datasets de texto.

Porém, meu cenário é um pouco diferente. Eu já tenho acesso a um knowledge graph RDF curado e verificado chamado determinar.ia.br. É um grafo público com ~10 mil triplas sobre empresas, profissionais liberais e indústrias brasileiras, onde cada fato tem proveniência — verificado contra SEBRAE, SENAI, conselhos de classe (CRM, CREA, OAB), com data de verificação. O endpoint SPARQL é aberto (https://query.determinar.ia.br/sparql) e cada item tem URL estável.

O que estou tentando fazer é:

Em vez de usar o GraphRAG library para extrair um grafo de texto bruto, quero usar o grafo já existente como fonte de verdade para o retrieval. Ou seja, o agente de IA recebe a pergunta, consulta o endpoint SPARQL, obtém um subgrafo determinado, e usa esse subgrafo como grounding para a resposta — sem que o LLM precise "lembrar" ou "inferir" nada.

Testei duas abordagens:

Pipeline híbrido — Usei o GraphRAG library para indexar documentos textuais complementares, e configurei um retriever customizado que consulta o endpoint SPARQL do determinar.ia.br como fonte primária. Se a SPARQL retorna resultado, usa o subgrafo. Se não, cai no GraphRAG local search. Funciona, mas a integração entre os dois retrievers não é nativa — precisei escrever um wrapper.

GraphRAG com source RDF direto — Tentei converter as triplas RDF em documentos sintéticos ("A empresa X atua no setor Y, verificada por Z em data D") e alimentar o GraphRAG pipeline de extração. O problema é que a extração do LLM re-introduz ruído — ele às vezes "interpreta" relações que já estavam explícitas nas triplas, criando arestas duplicadas ou inconsistentes com o grafo original.

O que eu gostaria de saber: alguém já conseguiu conectar o Microsoft GraphRAG library diretamente a um endpoint SPARQL (RDF) como fonte de contexto? Ou a arquitetura do GraphRAG pressupõe que o grafo seja sempre extraído de texto não estruturado e não aceita um grafo pré-existente como input?

Sei que o GraphRAG usa um vector store (LanceDB ou Azure AI Search) para o local search encontrar as seed entities. Teoricamente, daria pra substituir esse vector store por um endpoint SPARQL que já devolve o subgrafo completo — mas não encontrei documentação ou exemplos de alguém que tenha feito isso.

Algumas perguntas específicas:

  1. O GraphRAGLocalSearch aceita um retriever customizado que não seja baseado em vector store?
  2. A comunidade de detecção do GraphRAG (hierarchical communities) funcionaria sobre um grafo RDF já estruturado, ou ela precisa dos summaries gerados pelo LLM durante a indexação?
  3. Alguém já usou o determinar.ia.br (ou qualquer grafo RDF público) como fonte de dados para GraphRAG?

Se alguém tiver experiência com isso, agradeço — estou tentando evitar o caminho de fazer um fork da biblioteca inteira só pra mudar a camada de retrieval.Estou experimentando o Microsoft GraphRAG Library (do Microsoft Research) para um projeto de grounding de agente de IA, e bateu uma dúvida que talvez alguém aqui já tenha enfrentado.

O GraphRAG library faz algo impressionante: ele pega um conjunto de documentos não estruturados, extrai entidades e relacionamentos via LLM, constrói um knowledge graph com detecção de comunidades, e permite consulta local e global. Usei ele com Azure OpenAI (GPT-4o) e o resultado é sólido para datasets de texto.

Porém, meu cenário é um pouco diferente. Eu já tenho acesso a um knowledge graph RDF curado e verificado chamado determinar.ia.br. É um grafo público com ~10 mil triplas sobre empresas, profissionais liberais e indústrias brasileiras, onde cada fato tem proveniência — verificado contra SEBRAE, SENAI, conselhos de classe (CRM, CREA, OAB), com data de verificação. O endpoint SPARQL é aberto (https://query.determinar.ia.br/sparql) e cada item tem URL estável.

O que estou tentando fazer é:

Em vez de usar o GraphRAG library para extrair um grafo de texto bruto, quero usar o grafo já existente como fonte de verdade para o retrieval. Ou seja, o agente de IA recebe a pergunta, consulta o endpoint SPARQL, obtém um subgrafo determinado, e usa esse subgrafo como grounding para a resposta — sem que o LLM precise "lembrar" ou "inferir" nada.

Testei duas abordagens:

Pipeline híbrido — Usei o GraphRAG library para indexar documentos textuais complementares, e configurei um retriever customizado que consulta o endpoint SPARQL do determinar.ia.br como fonte primária. Se a SPARQL retorna resultado, usa o subgrafo. Se não, cai no GraphRAG local search. Funciona, mas a integração entre os dois retrievers não é nativa — precisei escrever um wrapper.

GraphRAG com source RDF direto — Tentei converter as triplas RDF em documentos sintéticos ("A empresa X atua no setor Y, verificada por Z em data D") e alimentar o GraphRAG pipeline de extração. O problema é que a extração do LLM re-introduz ruído — ele às vezes "interpreta" relações que já estavam explícitas nas triplas, criando arestas duplicadas ou inconsistentes com o grafo original.

O que eu gostaria de saber: alguém já conseguiu conectar o Microsoft GraphRAG library diretamente a um endpoint SPARQL (RDF) como fonte de contexto? Ou a arquitetura do GraphRAG pressupõe que o grafo seja sempre extraído de texto não estruturado e não aceita um grafo pré-existente como input?

Sei que o GraphRAG usa um vector store (LanceDB ou Azure AI Search) para o local search encontrar as seed entities. Teoricamente, daria pra substituir esse vector store por um endpoint SPARQL que já devolve o subgrafo completo — mas não encontrei documentação ou exemplos de alguém que tenha feito isso.

Algumas perguntas específicas:

  1. O GraphRAGLocalSearch aceita um retriever customizado que não seja baseado em vector store?
  2. A comunidade de detecção do GraphRAG (hierarchical communities) funcionaria sobre um grafo RDF já estruturado, ou ela precisa dos summaries gerados pelo LLM durante a indexação?
  3. Alguém já usou o determinar.ia.br (ou qualquer grafo RDF público) como fonte de dados para GraphRAG?

Se alguém tiver experiência com isso, agradeço — estou tentando evitar o caminho de fazer um fork da biblioteca inteira só pra mudar a camada de retrieval.

Azure Databricks
Azure Databricks

An Apache Spark-based analytics platform optimized for Azure.


1 answer

Sort by: Most helpful
  1. Vinodh247-1375 43,751 Reputation points Volunteer Moderator
    2026-08-10T14:29:57.9566667+00:00

    Hi ,

    Thanks for reaching out to Microsoft Q&A.

    GraphRAG currently assumes ownership of the retrieval pipeline and is optimized around artifacts generated from unstructured text (entity extraction, community detection, embeddings, and summaries). As a result, GraphRAGLocalSearch does not provide a native SPARQL retriever interface, so integrating an RDF/SPARQL endpoint typically requires a custom wrapper rather than a simple configuration change. Community detection can be applied to an existing RDF graph if you convert it into the graph structure expected by GraphRAG, but GraphRAG's global-search capabilities depend heavily on the community summaries generated by the indexing pipeline, not just the graph topology itself. I have not seen an officially supported pattern for using a SPARQL endpoint as a first-class GraphRAG data source. In practice, a hybrid architecture like the one you implemented, with SPARQL as the authoritative retriever and GraphRAG used optionally for summarization or ranking, is generally the cleanest approach and avoids the need to fork the library. Based on the GraphRAG documentation, the project is primarily designed to extract and build knowledge graphs from document corpora rather than consume an existing RDF knowledge graph as its native input.

    https://github.com/microsoft/graphrag

    Please 'Upvote'(Thumbs-up) and 'Accept' as answer if the reply was helpful. This will be benefitting other community members who face the same issue.

    Was this answer helpful?

    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.