BYOKG e GraphRAG: como a AWS está acelerando a descoberta de medicamentos com IA e grafos de conhecimento

O problema: conhecimento científico fragmentado em silos

Quem trabalha com pesquisa farmacêutica sabe bem o desafio: informações críticas estão espalhadas por sistemas completamente diferentes — artigos do PubMed, anotações internas de laboratório, bancos de dados de genômica, registros clínicos. Conectar esses pontos manualmente é lento, caro e propenso a falhas.

O resultado? Na fase inicial de descoberta de medicamentos, a taxa de sucesso tradicional é de apenas 5%, e cada ciclo de triagem consome mais de seis meses. Além disso, quando pesquisadores deixam a empresa, levam consigo conhecimento tácito valioso que raramente está documentado em lugar nenhum.

Esses três gargalos resumem o problema central que a AWS se propõe a resolver com a solução apresentada:

  • Baixa eficiência e taxa de acerto — apenas 5% de sucesso com mais de 6 meses de triagem por tentativa.
  • Conhecimento fragmentado — insights críticos dispersos entre PubMed, anotações e bancos de dados, gerando trabalho redundante e conexões perdidas.
  • Perda de memória institucional — quando pesquisadores saem, a continuidade do trabalho é comprometida.

A solução: GraphRAG com BYOKG sobre Amazon Neptune Analytics

A resposta da AWS combina duas abordagens complementares: Geração Aumentada por Recuperação em Grafos (GraphRAG) e a estratégia Traga Seu Próprio Grafo de Conhecimento (BYOKG). Juntas, elas criam um ambiente de conhecimento interconectado onde pesquisadores podem fazer perguntas complexas em linguagem natural e receber respostas fundamentadas em dados verificados.

O motor por trás disso é o Amazon Neptune Analytics, que processa o grafo de conhecimento com alta performance, combinado com o Amazon Bedrock para geração de linguagem natural. O diferencial não é só fornecer respostas — é expor o raciocínio completo por trás de cada resultado, mostrando os caminhos de citação e as etapas de travessia do grafo. Isso torna a descoberta científica mais transparente e reproduzível.

Visão geral da solução

A solução reimagina o processo de pesquisa por meio da abordagem BYOKG enriquecida com capacidades de GraphRAG. Um grafo de conhecimento é uma representação estruturada da informação que exibe relacionamentos entre diferentes entidades como uma rede de nós e arestas interconectados.

Alimentado pelo Amazon Neptune, o grafo integra entidades científicas diversas — plantas, compostos, genes, proteínas e efeitos sobre a saúde — em uma rede unificada que conecta dados de fontes públicas como PubMed e Gene Ontology com conjuntos de dados proprietários. Pipelines de ingestão automatizados e algoritmos de grafo enriquecem continuamente essa rede, permitindo que pesquisadores descubram relações biológicas complexas que antes estavam ocultas em silos de dados desconectados.

Com Neptune Analytics e Amazon Bedrock, a solução combina algoritmos de grafo com consultas em linguagem natural, tornando a exploração científica ao mesmo tempo analítica e intuitiva. Pesquisadores podem fazer perguntas em português (ou inglês) e receber respostas baseadas em evidências, completas com citações de fontes e caminhos visuais.

Arquitetura da solução

A solução foi construída para ajudar pesquisadores a descobrir rapidamente artigos de periódicos médicos relevantes entre condições e tópicos. O conjunto de dados inclui:

O diagrama abaixo ilustra o fluxo de carregamento dos dados no Amazon Neptune Analytics, usando serviços como Amazon Bedrock e Amazon Comprehend para extrair informações de periódicos médicos:

Imagem original — fonte: Aws

O grafo final é composto pelos seguintes tipos de nós:

  • disease — representa uma doença dentro da Ontologia de Doenças, com mapeamento hierárquico entre doenças.
  • author — representa um autor de um determinado periódico.
  • journal — representa um periódico.
  • journalChunk — representa um fragmento de um periódico, gerado pela estratégia padrão de chunking do Amazon Bedrock Knowledge Bases.
  • icd10 — representa um código ICD-10, classificação padronizada de problemas médicos. As arestas entre nós icd10 e os nós de periódico foram criadas via vinculação ICD-10-CM do Amazon Comprehend Medical.
Imagem original — fonte: Aws

Como o modelo de dados do grafo é próprio, a solução utiliza o toolkit BYOKG-RAG para implementar consultas em linguagem natural sobre o grafo. O diagrama abaixo ilustra os componentes do BYOKG:

Imagem original — fonte: Aws

Pré-requisitos

Para implementar a solução, são necessários:

  • AWS CLI versão 2.11.0 ou posterior instalada e configurada (guia de instalação).
  • Acesso aos serviços: Amazon Neptune Analytics, Amazon Bedrock (modelo Claude 4.5 Sonnet), Amazon SageMaker, Amazon S3 e Amazon Comprehend Medical.
  • Perfil IAM com as permissões: NeptuneAnalyticsFullAccess, AWSServiceRoleForAmazonNeptuneAnalytics, AmazonS3ReadOnlyAccess, AmazonBedrockFullAccess e ComprehendMedicalFullAccess.
  • Python 3.9 ou posterior.
  • graphrag_toolkit versão 1.0.0 ou posterior.
  • Ambiente Jupyter Notebook.

Estimativa de custos

A aproximação de custo por hora para executar esta demonstração é a seguinte:

  • Neptune Analytics — grafo com 16 mNCU, sem standby, conectividade pública: US$ 0,48/hora.
  • SageMaker Jupyter Notebook — instância t3.medium com 5 GB de volume EBS: US$ 0,05/hora (computação) + US$ 0,70/hora (armazenamento).
  • Amazon S3 — armazenamento padrão, 161 MB: 0,161 GB × US$ 0,023 = US$ 0,0037 por mês.
  • Amazon Bedrock — o custo depende do uso do modelo e do consumo de tokens. Consulte a página de preços para informações atualizadas.

Configurando o Neptune Analytics

A implementação começa com a configuração do Neptune Analytics. Os passos principais são:

1. Criar um bucket S3:

aws s3 mb s3://amzn-s3-bucket-name

2. Copiar o conjunto de dados para o bucket:

aws s3 sync s3://aws-neptune-customer-samples-us-east-1/sample-notebooks/vector-graph-hybrid-search/graph-data/ s3://amzn-s3-bucket-name/<YOUR PREFIX>

3. Criar um grafo no Neptune Analytics usando a API CreateGraphUsingImportTask para importar a partir do local do Amazon S3. Consulte o Guia do Usuário do Neptune Analytics para detalhes. Configure a memória provisionada mínima e máxima em 16.

4. Criar um Neptune Notebook associado ao grafo para facilitar consultas e interações. Consulte o Guia do Usuário do Neptune Analytics para detalhes sobre criação de notebooks.

5. Baixar o notebook de exemplo e fazer upload para o ambiente Jupyter.

Implementação: construindo um sistema GraphRAG modular

O notebook demonstra uma abordagem modular para construir um sistema de Geração Aumentada por Recuperação (RAG) sobre um grafo de conhecimento de saúde, usando o pacote Python graphrag-toolkit e o modelo Amazon Bedrock Anthropic Claude 4.5 Sonnet.

Inicialização do modelo de linguagem

O primeiro passo é inicializar o gerador de linguagem baseado no Amazon Bedrock:

from graphrag_toolkit.byokg_rag.llm import BedrockGenerator

def init_llm_generator(model_name='us.anthropic.claude-3-5-sonnet-20240620-v1:0', region_name='us-west-2'):
    return BedrockGenerator(
        model_name=model_name,
        region_name=region_name
    )

llm_generator = init_llm_generator()

Configuração do KGLinker

O KGLinker é inicializado com o armazenamento do grafo e o gerador de linguagem. Ele atua como a interface central para consultar o grafo e gerar respostas:

from graphrag_toolkit.byokg_rag.graph_connectors import KGLinker

def init_kg_linker(graph_store, llm_generator):
    return KGLinker(graph_store=graph_store, llm_generator=llm_generator)

kg_linker = init_kg_linker(graph_store, llm_generator)

Gerando respostas a partir de consultas

Com o kg_linker configurado, é possível fazer perguntas em linguagem natural e obter respostas enriquecidas pelo contexto do grafo de conhecimento:

def generate_kg_response(kg_linker, question, schema, graph_context="Not provided. Use the above schema to understand the graph."):
    return kg_linker.generate_response(
        question=question,
        schema=schema,
        graph_context=graph_context
    )

# Example usage
response = generate_kg_response(kg_linker, question, schema)
print(response)

Vinculação de entidades para recuperação aprimorada

Para melhorar a extração de informações e vincular o texto em linguagem natural às entidades do grafo, a solução usa um índice de string fuzzy combinado com o EntityLinker:

from graphrag_toolkit.byokg_rag.indexing import FuzzyStringIndex
from graphrag_toolkit.byokg_rag.graph_retrievers import EntityLinker

def init_and_link_entities(graph_store, artifacts):
    string_index = FuzzyStringIndex()
    string_index.add(graph_store.nodes())
    retriever = string_index.as_entity_matcher()
    entity_linker = EntityLinker(retriever=retriever)
    linked_entities = entity_linker.link(artifacts["entity-extraction"], return_dict=False)
    linked_answers = entity_linker.link(artifacts["draft-answer-generation"], return_dict=False)
    return entity_linker, linked_entities, linked_answers

entity_linker, linked_entities, linked_answers = init_and_link_entities(graph_store, artifacts)

Essa estrutura modular separa claramente a inicialização do modelo de linguagem, a interface com o grafo de conhecimento, as consultas em linguagem natural e a vinculação de entidades nos nós do grafo. A separação facilita experimentação flexível e extensão para diferentes domínios ou conjuntos de dados. O uso do matcher de string fuzzy garante reconhecimento robusto de entidades, algo especialmente importante em contextos de dados de saúde complexos ou com ruído.

Benefícios e métricas de desempenho

Os principais indicadores de desempenho da implementação demonstram o valor mensurável que a solução GraphRAG pode gerar para organizações de pesquisa farmacêutica:

  • Aceleração do ciclo de pesquisa — redução de seis meses para três semanas, representando um ganho de eficiência de 87%.
  • Otimização da taxa de sucesso — análise entre domínios viabiliza direções de pesquisa mais eficazes e melhor alocação de recursos.
  • Ganhos de eficiência operacional — 70% de redução no tempo de revisão, 85% de acesso mais rápido a dados e 90% de melhora no aproveitamento do conhecimento.
  • Validação baseada em dados — rastreamento avançado e visualização garantem transparência total da pesquisa, fortalecendo a conformidade regulatória.
  • Integração inteligente de conhecimento — o sistema escala e integra novas fontes de dados com impacto mínimo de recursos, preservando a memória institucional.

Limpeza dos recursos

Para evitar cobranças adicionais, é importante remover os recursos criados ao final da demonstração.

Excluir o grafo Neptune Analytics seguindo as etapas documentadas ou pelo comando CLI (substitua g-sample pelo ID do grafo criado):

aws neptune-graph delete-graph --graph-id g-sample

Excluir o notebook pelo Console de Gerenciamento da AWS, selecionando a instância e escolhendo a opção de exclusão no menu Ações.

Excluir o bucket S3 seguindo as etapas documentadas ou pelo comando CLI (substitua amzn-s3-bucket-name pelo nome do bucket criado):

aws s3 rb s3://amzn-s3-bucket-name --force

Conclusão

A integração do GraphRAG com Amazon Neptune Analytics e Amazon Bedrock representa um avanço significativo na metodologia de pesquisa científica. A solução permite conectar fontes de dados antes isoladas, interagir com conjuntos de dados complexos via linguagem natural e visualizar relações intrincadas entre entidades científicas.

Com redução de até 87% nos ciclos de pesquisa e potencial de aumentar em cinco vezes a taxa de descobertas bem-sucedidas, a abordagem não apenas acelera o ritmo da descoberta, mas também fortalece a qualidade e a credibilidade dos achados científicos. Organizações que adotam soluções de IA generativa nesse contexto não estão apenas melhorando seus processos — estão se posicionando na vanguarda da inovação científica.

Fonte

Powering scientific discovery: BYOKG and GraphRAG for intelligent pharmaceutical research (https://aws.amazon.com/blogs/machine-learning/powering-scientific-discovery-byokg-and-graphrag-for-intelligent-pharmaceutical-research/)

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *