12 pontos por xguru 2024-07-03 | 1 comentários | Compartilhar no WhatsApp
  • Um pipeline de dados e conjunto de transformações projetados para extrair dados estruturados significativos de texto não estruturado usando os poderosos recursos dos LLMs
  • Uma abordagem baseada em grafos que possibilita perguntas e respostas sobre conjuntos de dados nunca vistos antes
  • Ferramenta apresentada em fevereiro, agora disponibilizada como open source para oferecer recuperação de informação mais estruturada e geração de respostas mais abrangentes

Principais recursos

  • Usa modelos de linguagem de grande porte (LLMs) para extrair automaticamente grafos de conhecimento ricos de coleções de documentos de texto
  • Esse índice de dados baseado em grafos pode relatar a estrutura semântica dos dados antes mesmo da consulta do usuário
  • Detecta "comunidades" de nós densamente conectados de forma hierárquica, dividindo o grafo em múltiplos níveis, de tópicos de alto nível a tópicos de baixo nível
  • Ao usar LLMs para resumir cada uma dessas comunidades, gera-se um resumo hierárquico do conjunto de dados, permitindo compreendê-lo sem precisar saber antecipadamente quais perguntas fazer
  • Cada comunidade serve como base para um resumo comunitário que descreve suas entidades e relações

Vantagens nas respostas a perguntas sobre o conjunto de dados inteiro

  • Como esses "resumos comunitários" podem ajudar em perguntas globais (perguntas sobre o conjunto de dados inteiro), nas quais a abordagem naive RAG baseada em busca vetorial é insuficiente?
  • Por exemplo, perguntas como "Quais são os principais temas do conjunto de dados?" fazem com que o naive RAG frequentemente forneça respostas enganosas
  • Para responder a perguntas globais, é preciso considerar todos os textos de entrada
  • Os resumos comunitários podem responder a essas perguntas globais usando uma abordagem map-reduce que preserva todo o conteúdo relevante do contexto global dos dados:
    1. Agrupar os relatórios das comunidades até o tamanho da janela de contexto do LLM
    2. Mapear a pergunta para cada grupo para gerar respostas da comunidade
    3. Reduzir todas as respostas comunitárias relevantes em uma resposta global final

Avaliação e resultados

  • Para comparar essa abordagem com naive RAG e com o resumo hierárquico do texto-fonte, foram geradas várias perguntas de sense-making centradas em atividade usando o LLM GPT-4
  • Para avaliar as respostas geradas, foram escolhidas 3 métricas: comprehensiveness (cobertura detalhada de todos os aspectos), diversity (oferta de diferentes perspectivas) e empowerment (apoio à tomada de decisão informada)
  • O GraphRAG apresentou desempenho superior ao naive RAG em comprehensiveness e diversity (~70-80% de taxa de vitória)
  • Além disso, o GraphRAG mostrou desempenho melhor do que o resumo do texto-fonte nesses aspectos, com menor custo de tokens ao usar resumos comunitários de nível intermediário e baixo (~20-70% do uso de tokens por consulta)
  • No caso das comunidades de mais alto nível, mostrou desempenho competitivo com o resumo hierárquico do texto-fonte, com custo de tokens muito menor (~2-3% do uso de tokens por consulta)

Insights de pesquisa e direções futuras

  • O ciclo inicial de pesquisa demonstrou que LLMs conseguem derivar com sucesso grafos de conhecimento ricos a partir de entradas de texto não estruturado
  • Esses grafos podem dar suporte a novos tipos de consultas globais, para as quais o naive RAG não consegue gerar respostas adequadas e o resumo hierárquico do texto-fonte é caro demais
  • Atualmente, estão sendo exploradas várias abordagens para reduzir esses custos, mantendo o custo inicial de geração do índice em grafo
  • Trabalhos recentes sobre ajuste automático de prompts de extração de LLM ao domínio do problema são um exemplo de como reduzir o trabalho prévio necessário para personalizar esses prompts, enumerar tipos de entidades e criar exemplos few-shot
  • O objetivo é tornar a abordagem RAG baseada em grafos mais acessível para usuários e casos de uso em que compreender os dados de forma holística é importante, ao disponibilizar publicamente o GraphRAG e aceleradores de solução

1 comentários

 
xguru 2024-07-04
Opiniões do Hacker News
  • O projeto GraphRAG da Microsoft usa uma forma de construir grafos de conhecimento sem bibliotecas modernas de extração

    • Isso pode ser porque modelos como o GPT-4 seguem bem instruções de formato específicas
    • Ele fornece exemplos para fazer com que siga o esquema desejado
  • Fiquei muito feliz que a Microsoft tenha lançado o GraphRAG como open source

    • Pretendo testar o GraphRAG com o Llama3 em um MacBook
    • Acho que essa ferramenta pode ser um divisor de águas
  • Compartilha um link para quem está procurando informações mais detalhadas sobre o método GraphRAG

  • O projeto GraphRAG mostra que bancos de dados vetoriais podem oferecer uma solução RAG completa para consultas de busca complexas

    • Para construir um grafo de conhecimento preciso, não basta apenas carregar texto em um LLM
    • Para isso, foi escrito o GraphRAG-SDK para gerar uma ontologia estável
  • Grafos de conhecimento não substituem a busca semântica tradicional, mas oferecem novas capacidades ao executar RAG

    • É possível explorar contextos longos ou navegar por diferentes contextos de forma consistente e eficiente
    • Os resultados obtidos ao tentar gerar grafos com LLMs foram insuficientes
    • Estou ansioso para experimentar isso
  • Se entendi o artigo corretamente, no momento da indexação o LLM é executado várias vezes para extrair entidades e construir o índice do grafo

    • O grafo é executado várias vezes para gerar clusters
    • No momento da consulta, todos os clusters são executados para gerar e pontuar respostas de cada cluster
    • Todas as respostas, exceto a de menor pontuação, são executadas para gerar uma "resposta global"
    • Essas exigências computacionais podem se tornar inviáveis para datasets grandes
  • Venho trabalhando em vários projetos pequenos usando grafos e LLMs, e confirmei que essa abordagem funciona

    • Percebi que isso pode ser resolvido com prompt engineering e várias passagens
    • Vou testar isso e, se os resultados forem bons, vou tentar sair do ecossistema Python
  • Pergunta se isso tem relação com o mecanismo de consulta Knowledge Graph RAG Query da LlamaIndex

  • É interessante que a guerra Rússia-Ucrânia tenha sido escolhida como exemplo

    • Pode ter sido uma escolha intencional com foco em contratos de análise de dados militares
  • Depois de ler o artigo, quis experimentar este projeto

    • Tentei implementar por conta própria, mas achei que o código sairia algumas semanas depois
    • A paciência valeu a pena