GraphReader: Inteligentes baseados em gráficos para aprimorar o processamento de textos longos para grandes modelos de linguagem
Especialistas em gráficosÉ como um tutor que é bom em fazer mapas mentais, transformando um texto longo em uma rede de conhecimento clara, de modo que a IA possa encontrar facilmente os pontos-chave necessários para a resposta, como se estivesse explorando um mapa, superando efetivamente o problema de "se perder" ao lidar com textos longos.
- Publicado em: 2024.01.20
- Nome do artigo: GraphReader: Criando um agente baseado em gráficos para aprimorar as capacidades de contexto longo de modelos de linguagem grandes
- Endereço para correspondência: https://arxiv.org/abs/2406.14550
Este artigo descreve o GraphReader, um sistema de corpo inteligente baseado em estrutura de gráficos, projetado para enfrentar os desafios encontrados pelos LLMs (Large Language Models) no processamento de textos longos e para ter um bom desempenho em tarefas como questionários de vários locais. Aqui está um resumo do artigo:
I. Motivação para a tese
Com o avanço das tecnologias de geração e compreensão de linguagem natural, uma das principais limitações enfrentadas pelos LLMs é a limitação do tamanho da janela de contexto e do uso da memória, o que dificulta o processamento eficiente de grandes quantidades de entrada de texto. Para resolver esse problema, os pesquisadores exploraram várias abordagens, incluindo o aprimoramento da estrutura do modelo, a introdução de mecanismos de aprimoramento de recuperação e a utilização de agentes para raciocínio complexo. No entanto, cada uma dessas abordagens tem certas limitações, como aumento dos custos de treinamento, ignorando informações detalhadas ou mecanismos inflexíveis de tomada de decisão.
II. Pontos inovadores do documento
- objetivosGraphReader: Ao construir estruturas de gráficos e empregar uma estratégia de exploração de agente autônomo, o GraphReader consegue capturar dependências de longo alcance em uma janela de contexto limitada, permitindo assim o processamento eficiente de documentos extensos.
- ponto de inovação::
- Segmentar um texto longo em partes discretas e extrair elementos-chave e fatos atômicos;
- Use esses componentes para criar uma estrutura gráfica que reflita as relações dentro do texto;
- O corpo inteligente navega pelo gráfico e coleta as informações necessárias de acordo com uma função predefinida e um plano racional gradual;
- Todo o processo envolve fazer anotações e refletir para garantir a precisão e a integridade da resposta final.
III Ideias para a tese
A operação do GraphReader é dividida em três estágios:
- construção gráficaO documento é dividido em partes, cada uma das quais é resumida como um fato atômico do qual os elementos-chave são extraídos para formar nós; os nós são vinculados uns aos outros com base nos elementos-chave compartilhados.
- exploração gráficaO corpo inteligente seleciona o nó inicial de acordo com um plano racional e percorre toda a estrutura do gráfico verificando os nós vizinhos; no processo, o corpo inteligente registra fatos de apoio para análise posterior.
- Exploração de fatos atômicos: como não é possível incluir todos os blocos de texto bruto associados a um nó na janela de contexto, o agente adota uma estratégia de grosso para fino, começando com a leitura dos fatos atômicos e explorando progressivamente o texto bruto. Todos os fatos atômicos podem caber na janela de contexto, portanto, o agente primeiro agrupa todos os fatos atômicos associados a cada nó por seu bloco de texto correspondente e os rotula com as IDs de bloco de texto correspondentes, que são então fornecidas ao agente. Isso permite que o agente obtenha uma visão geral de cada bloco de texto lendo todos os grupos de fatos atômicos. Ao mesmo tempo, o agente usa as perguntas, os planos racionais e as anotações no bloco de notas para refletir sobre as pistas necessárias e determinar quais blocos de texto podem conter informações úteis. Posteriormente, o agente recebe duas funções:
- read_neighbor_node, o agente seleciona um nó vizinho que pode ser útil para responder à pergunta e entra novamente no processo de exploração dos fatos atômicos e dos blocos de texto;
- Ao encerrar a exploração, o agente determina que nenhum nó vizinho contém informações úteis e conclui a exploração.
- Explorar blocos de texto: quando a fila de blocos de texto não está vazia, significa que o agente identificou vários blocos de texto de interesse. Em seguida, o GraphReader percorre a fila e lê cada bloco de texto um a um. Essa etapa é fundamental porque os fatos atômicos apenas resumem as principais informações e fornecem pistas curtas, enquanto os detalhes específicos são mais bem obtidos diretamente do bloco de texto original. À medida que os blocos de texto são lidos, o agente considera o problema e planeja novamente, pensando no que pode ser adicionado ao bloco de notas atual. Todos os fatos de apoio encontrados serão registrados no caderno. Dependendo do caderno atualizado, o agente escolherá uma das quatro funções a seguir:
- search_more, o agente continuará a explorar os blocos de texto na fila se não houver fatos de suporte suficientes;
- read_previous_chunk e 3) read_subsequent_chunk, devido a problemas de truncamento, os blocos de texto vizinhos podem conter informações relevantes e úteis, e o agente pode inserir essas IDs na fila;
- Ao final, se tiverem sido coletadas informações suficientes para responder à pergunta, o agente concluirá a exploração.
- EXPLORANDO NÓS VINHOS: quando os fatos atômicos do nó atual e a fila de blocos de texto tiverem sido completamente processados, isso significa que esse nó foi completamente explorado e o agente precisa visitar o próximo nó. Considerando o problema, o plano racional e o conteúdo do notebook, o agente examina todos os nós vizinhos, ou seja, os elementos-chave, e executa uma das duas funções a seguir:
- read_chunk, se o agente determinar que determinados trechos de texto merecem ser lidos, ele completa o argumento da função com os IDs dos trechos, ou seja, read_chunk(List[ID]), e adiciona esses IDs à fila de trechos.
- stop_and_read_neighbor, em vez disso, se o agente decidir que não vale a pena continuar lendo nenhum trecho de texto, ele terminará de ler o nó atual e começará a explorar os nós vizinhos.
- Exploração de fatos atômicos: como não é possível incluir todos os blocos de texto bruto associados a um nó na janela de contexto, o agente adota uma estratégia de grosso para fino, começando com a leitura dos fatos atômicos e explorando progressivamente o texto bruto. Todos os fatos atômicos podem caber na janela de contexto, portanto, o agente primeiro agrupa todos os fatos atômicos associados a cada nó por seu bloco de texto correspondente e os rotula com as IDs de bloco de texto correspondentes, que são então fornecidas ao agente. Isso permite que o agente obtenha uma visão geral de cada bloco de texto lendo todos os grupos de fatos atômicos. Ao mesmo tempo, o agente usa as perguntas, os planos racionais e as anotações no bloco de notas para refletir sobre as pistas necessárias e determinar quais blocos de texto podem conter informações úteis. Posteriormente, o agente recebe duas funções:
- raciocínio em uma respostaCompilar anotações de diferentes inteligências e usar o raciocínio da cadeia de pensamento para gerar respostas a determinadas perguntas.
IV Avaliação de desempenho
Ao fazer experimentos com vários conjuntos de dados de benchmarking de contexto longo, o GraphReader demonstra um desempenho significativamente melhor do que outros métodos. Por exemplo, no conjunto de dados HotpotQA, o GraphReader atinge um EM de 55,01 TP3T e uma pontuação F1 de 70,01 TP3T, superando o GPT-4-128k e outros métodos existentes. Além disso, o GraphReader também mantém um bom desempenho ao lidar com contextos muito longos, especialmente no benchmark LV-Eval, em que apresenta uma melhoria relativa de desempenho de 75,001 TP3T em relação ao GPT-4-128k.
Os resultados experimentais mostram que o GraphReader obtém melhorias significativas de desempenho no processamento de textos longos, especialmente em problemas de múltiplos saltos e textos muito longos.
V. Impacto e perspectivas
O GraphReader não só representa um avanço importante na solução dos desafios do processamento de contextos longos em LLMs, mas também abre caminho para modelos de linguagem mais avançados no futuro. Ele demonstra que as dependências de longo alcance podem ser capturadas e exploradas com eficiência, mesmo com uma pequena janela de contexto, o que tem implicações importantes para tarefas que envolvem documentos extensos e raciocínio complexo em várias etapas. Esse trabalho pode revolucionar vários campos, como análise de documentos e assistência à pesquisa, abrindo novas possibilidades para aplicativos de IA.