JoVE Logo

Entrar

É necessária uma assinatura da JoVE para visualizar este conteúdo. Faça login ou comece sua avaliação gratuita.

Neste Artigo

  • Resumo
  • Resumo
  • Introdução
  • Protocolo
  • Resultados
  • Discussão
  • Divulgações
  • Agradecimentos
  • Materiais
  • Referências
  • Reimpressões e Permissões

Resumo

Neste protocolo, a qualidade da resposta do modelo de linguagem grande da base é melhorada por meio do aumento com artigos científicos específicos de domínio revisados por pares por meio de um mecanismo de incorporação de vetores. Além disso, o código é fornecido para ajudar na comparação de desempenho entre grandes modelos de linguagem.

Resumo

Os modelos de linguagem grande (LLMs) surgiram como um recurso popular para gerar informações relevantes para uma consulta do usuário. Esses modelos são criados por meio de um processo de treinamento intensivo em recursos, utilizando um corpus extenso e estático de dados textuais. Essa natureza estática resulta em limitações para adoção em domínios com conhecimento, informações proprietárias e dados confidenciais em rápida mudança. Neste trabalho, são descritos métodos para aumentar LLMs de uso geral, conhecidos como modelos de fundação, com informações específicas de domínio usando uma abordagem baseada em incorporações para incorporar manuscritos científicos atualizados e revisados por pares. Isso é obtido por meio de ferramentas de código aberto, como o Llama-Index, e modelos disponíveis publicamente, como o Llama-2, para maximizar a transparência, a privacidade e o controle do usuário e a replicabilidade. Embora os manuscritos científicos sejam usados como exemplo de caso de uso, essa abordagem pode ser estendida a qualquer fonte de dados de texto. Além disso, são discutidos métodos para avaliar o desempenho do modelo após esse aprimoramento. Esses métodos permitem o rápido desenvolvimento de sistemas LLM para domínios altamente especializados, independentemente da abrangência das informações no corpus de treinamento.

Introdução

Grandes modelos de linguagem (LLMs), como o ChatGPT da OpenAI ou o Llama da Meta AI, tornaram-se rapidamente um recurso popular para gerar texto relevante para um prompt do usuário. Originalmente funcionando para prever os próximos itens lexicais em uma sequência, esses modelos evoluíram para entender o contexto, codificar informações clínicas e demonstrar alto desempenho em uma variedade de tarefas 1,2,3,4. Embora os modelos de linguagem sejam anteriores a esses recursos e seu nível atual de popularidade em décadas5, avanços recentes em recursos de aprendizado profundo e computação tornaram LLMs comerciais pré-treinados e de alta qualidade amplamente disponíveis para os usuários por meio de tecnologias baseadas na web e interfaces de programação de aplicativos (APIs)6. No entanto, existem várias limitações notáveis para consumir LLMs neste formato.

Desafio 1: Corpus de treinamento estático
Os LLMs são treinados em um corpo enorme (por exemplo, dois trilhões de tokens no caso do Llama 27), mas estático, de dados de texto. Isso representa um desafio para produzir respostas precisas relativas a campos em rápido desenvolvimento ou mudança na literatura. Nessa abordagem estática, os LLMs exigiriam treinamento frequente para acompanhar os dados mais recentes, o que não é prático nem escalável. Além disso, prompts que exigem respostas baseadas em informações não presentes nos dados de treinamento podem impedir a geração de texto útil ou levar a alucinações8. Casos de alucinações ou fabricação de fatos levantam preocupações significativas sobre a confiabilidade dos LLMs, particularmente em ambientes onde a precisão das informações é crítica9.

Desafio 2: Falta de especificidade de domínio
Os modelos pré-treinados geralmente são criados para uso geral, enquanto os usuários podem exigir um modelo especificamente otimizado para desempenho em um domínio específico. Além disso, os recursos computacionais e os dados necessários para treinar um modelo de novo ou realizar ajustes finos significativos são proibitivos para muitos usuários.

Desafio 3: Falta de privacidade
Os usuários que buscam aplicativos envolvendo dados confidenciais ou informações proprietárias podem não querer ou não poder usar determinados serviços LLM, pois não têm informações sobre como os dados podem ser armazenados ou utilizados.

Desafio 4: Falta de estabilidade garantida
Os serviços com LLMs proprietários podem alterar os modelos disponíveis ou alterar o comportamento a qualquer momento, tornando a estabilidade uma preocupação para a implementação de aplicativos que dependem desses serviços.

A geração aumentada por recuperação (RAG) é uma técnica desenvolvida para melhorar o desempenho do LLM, particularmente em consultas relacionadas a informações fora do corpus de treinamento do modelo10,11. Esses sistemas aumentam os LLMs incorporando informações contextuais a serem consideradas ao gerar uma resposta a uma consulta do usuário. Vários trabalhos recentes descreveram aplicações de sistemas RAG e suas vantagens potenciais 12,13,14.

O objetivo do método descrito neste trabalho é demonstrar a construção de tal sistema e fornecer uma estrutura para os pesquisadores experimentarem rapidamente LLMs aumentados e específicos de domínio. Esse método é aplicável a usuários que buscam aumentar um LLM com uma fonte de dados externa baseada em texto. Especificamente, um objetivo abrangente deste protocolo é fornecer código passo a passo que seja extensível a uma variedade de experimentos práticos de LLM e RAG sem a necessidade de conhecimento técnico significativo no domínio de modelagem de linguagem, embora seja necessário um conhecimento prático de Python para aplicar essa abordagem sem modificação. Para maximizar o controle do usuário, a transparência, a portabilidade e a acessibilidade das soluções, são utilizadas ferramentas de código aberto disponíveis publicamente. O sistema proposto aborda as questões anteriormente mencionadas das seguintes maneiras:

Soluções 1 e 2: Corpus de treinamento estático e falta de especificidade de domínio
A metodologia fornecida aproveita uma abordagem RAG, utilizando incorporações para fornecer informações específicas do domínio não incluídas nos dados de treinamento originais. Em um alto nível, a incorporação de modelos transforma texto ou outros dados em uma representação como um vetor ou uma matriz de números de dimensão única. Essa técnica é benéfica, pois converte informações semânticas contidas no texto em uma forma numérica densa. Ao projetar uma consulta do usuário no mesmo espaço de incorporação, vários algoritmos podem ser usados para calcular a distância15 e, portanto, a semelhança semântica aproximada entre a consulta do usuário e as seções de documentos de texto. Assim, a criação de um banco de dados de tais vetores a partir de documentos divididos em seções discretas pode facilitar a pesquisa em um número significativo de documentos pelo texto mais relevante para uma consulta do usuário (Figura 1). Essa abordagem é extensível a qualquer documento de texto. Embora outras abordagens, como recursos de pesquisa on-line, estejam começando a ser implementadas para aumentar os LLMs, essa abordagem permite que os usuários escolham fontes consideradas de qualidade suficientemente alta para seu caso de uso.

Solução 2: Falta de privacidade
Nessa implementação, um ambiente de nuvem seguro foi usado para hospedagem, sem prompts de usuário, respostas geradas ou outros dados saindo desse ecossistema. Todo o código é escrito de maneira independente de plataforma, no entanto, para garantir que outro provedor de nuvem ou hardware local possa ser substituído.

Solução 3: Falta de estabilidade garantida
Essa abordagem utiliza bibliotecas de código aberto e se concentra em aumentar os LLMs com pesos disponíveis publicamente, permitindo um maior grau de transparência, estabilidade e controle de versão, se necessário.

Um esquema completo do nosso sistema proposto é mostrado na Figura 2, e instruções detalhadas sobre como replicar este ou um sistema semelhante são descritas na seção de protocolo. Uma consideração adicional ao alterar o comportamento do modelo por meio de ajuste fino ou aumento é a avaliação do desempenho. Em modelos de geração de linguagem, isso representa um desafio único, pois muitas métricas tradicionais de aprendizado de máquina não são aplicáveis. Embora exista uma variedade de técnicas16, neste estudo, perguntas de múltipla escolha escritas por especialistas (MCQs) foram usadas para avaliar a precisão e comparar o desempenho pré e pós-aumento, bem como com LLMs alternativos populares.

Protocolo

No caso de uso demonstrado neste artigo, o armazenamento de vetores foi gerado usando diretrizes publicadas do Chicago Consensus Working Group17. Este grupo de especialistas foi estabelecido para desenvolver diretrizes para o tratamento de cânceres peritoneais. A área temática foi escolhida por estar dentro da área de especialização clínica dos investigadores. O conjunto de artigos foi acessado a partir de repositórios de periódicos on-line, incluindo Cancer e Annals of Surgical Oncology. Um modelo de incorporação compacto (33,4 milhões de parâmetros) criado pela Academia de Inteligência Artificial de Pequim (BAAI, https://www.baai.ac.cn/english.html), bge-small-en, foi usado para gerar incorporações a partir de documentos de origem. O banco de dados resultante foi então usado para aumentar os modelos de fundação Llama 2 e Open-AI7. Para conveniência do leitor, o código é disponibilizado através do GitHub (https://github.com/AnaiLab/AugmentedLLM). Para garantir a replicabilidade, é recomendável usar as mesmas versões das bibliotecas usadas na lista de requisitos fornecida, bem como a mesma versão do Python. Detalhes adicionais sobre a instalação ou documentação sobre as ferramentas usadas nos métodos a seguir podem ser localizados nos sites oficiais dos provedores para Python (https://www.python.org), git (https://git-scm.com), Llama-Index (https://llamaindex.ai) e Chroma (https://trychroma.com).

1. Pré-requisitos: Revise o código e instale as bibliotecas necessárias

  1. Verifique se git, python e pip estão instalados.
    1. Em um terminal, execute os seguintes comandos para verificar a instalação:
      git --version
      python3 --versão
      pip3 --versão
  2. Verifique o código e os requisitos de instalação.
    1. Em um terminal, execute os seguintes comandos:
      git clone https://github.com/AnaiLab/AugmentedLLM.git
      cd ./AumentadoLLM/

      pip3 instalar -r requirements.txt

2. Criação de um banco de dados vetorial com Llama-Index

  1. Converta formatos de arquivo RTF (necessário apenas se os arquivos estiverem em um formato RTF).
    1. Edite o arquivo intitulado config.py, substituindo os caminhos de arquivo no código a seguir pelo local dos artigos RTF a serem convertidos e o local no qual os arquivos de texto simples devem ser gravados, digitando os comandos a seguir. Salve o arquivo.
      rtf_file_dir = './articles_rtf/'
      converted_file_dir = './articles_converted/'
    2. Em um terminal, no mesmo diretório, execute o código para gerar versões de texto simples de arquivos RTF executando o seguinte comando:
      python3 ./convert_rtf.py
  2. Crie e salve o banco de dados vetorial.
    1. Edite o arquivo config.py, substituindo o valor da variável a seguir pelo caminho do arquivo da pasta que contém os documentos com os quais o LLM deve ser aumentado; Salve o arquivo.
      article_dir = './artigos/'
    2. Em um terminal, no mesmo diretório, execute o código com o seguinte comando para criar e persistir o banco de dados. Verifique se o banco de dados agora está salvo na pasta vector_db.
      python3 ./build_index.py

3. Aumento de um modelo de Lhama com banco de dados vetorial gerado na seção 2

  1. Instanciar LLM personalizado localmente (opcional)
    NOTA: A execução desta etapa só é necessária se você quiser usar um modelo diferente do Llama-2-7B padrão. Se você deseja usar o modelo padrão, vá para a etapa 3.2.
    1. (Usando um LLM personalizado) Especifique um LLM para aumentar editando run_augmented_llm.py e passando um objeto LLM de índice de lhama no construtor como o parâmetro llm nas seguintes linhas de código, em vez de Nenhum.
      LLM aumentado = LLM aumentado(vector_store, llm=Nenhum)
  2. LLM aumentado por consulta
    1. Execute o seguinte comando no terminal:
      python3 ./run_augmented_llm.py
    2. Execute consultas de usuário para obter uma resposta aumentada por dados no conjunto de manuscritos (Figura 3 e Figura 4). Pressione CTRL + C para sair quando terminar.

4. Comparação programática de LLMs alternativos

  1. Crie MCQs.
    1. Edite o arquivo questions.py, observando o formato dos exemplos. Adicione perguntas seguindo um formato semelhante. Salve o arquivo.
  2. Conecte-se ao GPT-3.5, GPT-4, OpenChat ou outros modelos comparadores via API.
    1. Edite o arquivo config.py, adicionando a chave de API para OpenAI ou Huggingface se o objetivo for comparar com modelos de qualquer provedor. Salve o arquivo.
      huggingface_key = ''
      openai_key = ''
    2. Edite o arquivo compare_llms.py e escolha o conjunto de modelos para testar removendo o comentário (excluindo os caracteres '# ' no início dessa linha) modelos para comparar.
      NOTA: Alguns comparadores requerem uma chave de API, conforme definido na etapa 4.2.1. Além disso, edite o parâmetro output_dir para alterar onde a saída LLM é armazenada, se desejar; caso contrário, um padrão será usado.
      output_dir = './llm_responses/'
    3. Em um terminal, execute o código com o seguinte comando. Após a execução, exiba as respostas do modelo na pasta especificada na etapa 4.2.2 para avaliação ou outra revisão.
      python3 ./compare_llms.py
  3. (Opcional) Experimente a classificação automatizada das respostas do MCQ. O código de exemplo usa a biblioteca LMQL para restringir a saída do LLM em um formato esperado.
    1. Abra o arquivo automated_comparison.py e, da mesma forma que na etapa 4.2.2, remova o comentário dos modelos a serem incluídos, edite a variável output_dir ou personalize de outra forma. Observe que a saída do modelo ainda será salva de maneira semelhante. Salve o arquivo.
    2. Execute o código da etapa 4.3.1 executando o seguinte comando em um terminal:
      python3 ./automated_comparison.py

Resultados

Um conjunto de 22 publicações das diretrizes de gerenciamento do Grupo de Trabalho do Consenso de Chicago foi usado para aumentar o modelo básico Llama-7b17. Os documentos foram convertidos em um índice vetorial usando a ferramenta Llama-Index para gerar Llama-2-7b-CCWG-Embed. Modelos populares da OpenAI, como GPT-3.5 e GPT-4, também foram aumentados de maneira semelhante para produzir modelos GPT-XX-CCWG-Embed. Um total de 20 questões de múltipla escolha (...

Discussão

Os métodos fornecidos aqui visam facilitar a pesquisa de aplicações específicas de domínio de LLMs sem a necessidade de treinamento de novo ou ajuste fino extensivo. À medida que os LLMs estão se tornando uma área de interesse significativo de pesquisa, as abordagens para aumentar as bases de conhecimento e melhorar a precisão das respostas se tornarão cada vez mais importantes 18,19,20,21.

Divulgações

Os autores não têm conflitos de interesse a declarar.

Agradecimentos

Este trabalho foi facilitado por várias bibliotecas de código aberto, principalmente llama-index (https://www.llamaindex.ai/), ChromaDB (https://www.trychroma.com/) e LMQL (https://lmql.ai/).

Materiais

NameCompanyCatalog NumberComments
pip3 version 22.0.2 
Python version 3.10.12

Referências

  1. Singhal, K., et al. Large language models encode clinical knowledge. Nature. 620 (7972), 172-180 (2023).
  2. Gilson, A., et al. How does ChatGPT perform on the United States medical licensing examination? The implications of large language models for medical education and knowledge assessment. JMIR Med Educ. 9 (1), e45312 (2023).
  3. Guerra, G. A., et al. GPT-4 artificial intelligence model outperforms ChatGPT, medical students, and neurosurgery residents on neurosurgery written board-like questions. World Neurosurg. 179, e160-e165 (2023).
  4. . Would Chat GPT3 get a Wharton MBA? A prediction based on its performance in the Operations Management course Available from: https://mackinstitute.wharton.upenn.edu/wp-content/uploads/2023/01/Christian-Terwiesch-Chat-GTP.pdf (2023)
  5. Weizenbaum, J. ELIZA-a computer program for the study of natural language communication between man and machine. Communications of the ACM. 9 (1), 36-45 (1966).
  6. Wu, T., et al. A brief overview of ChatGPT: The history, status quo and potential future development. IEEE/CAA Journal of Automatica Sinica. 10 (5), 1122-1136 (2023).
  7. Huang, L., et al. A survey on hallucination in large language models: Principles, taxonomy, challenges, and open questions. arXiv [cs.CL]. , (2023).
  8. Thirunavukarasu, A. J., et al. Large language models in medicine. Nature Med. 29 (8), 1930-1940 (2023).
  9. Ram, O., et al. In-Context retrieval-augmented language models. Trans Assoc Comput Linguist. 11, 1316-1331 (2023).
  10. . Sequence distance embeddings Available from: https://wrap.warwick.ac.uk/61310/7/WRAP_THESIS_Cormode_2003.pdf (2003)
  11. Chicago Consensus Working Group. The Chicago Consensus Guidelines for peritoneal surface malignancies: Introduction. Cancer. 126 (11), 2510-2512 (2020).
  12. Dodge, J., et al. Measuring the carbon intensity of AI in cloud instances. FACCT 2022. , (2022).
  13. Khene, Z. -. E., Bigot, P., Mathieu, R., Rouprêt, M., Bensalah, K. Development of a personalized chat model based on the European association of urology oncology guidelines: Harnessing the power of generative artificial intelligence in clinical practice. Eur Urol Oncol. 7 (1), 160-162 (2024).
  14. Kresevic, S., et al. Optimization of hepatological clinical guidelines interpretation by large language models: a retrieval augmented generation-based framework. NPJ Digit Med. 7 (1), 102 (2024).
  15. Ge, J., et al. Development of a liver disease-specific large language model chat interface using retrieval augmented generation. medRxiv. , (2023).
  16. Panagoulias, D. P., et al. Rule-augmented artificial intelligence-empowered systems for medical diagnosis using large language models. , 70-77 (2023).
  17. Panagoulias, D. P., et al. Augmenting large language models with rules for enhanced domain-specific interactions: The case of medical diagnosis. Electronics. 13 (2), 320 (2024).
  18. Bommasani, R., Liang, P., Lee, T. Holistic evaluation of language models. Ann N Y Acad Sci. 1525 (1), 140-146 (2023).
  19. Papineni, K., Roukos, S., Ward, T., Zhu, W. -. J. Bleu. Proceedings of the 40th Annual Meeting on Association for Computational Linguistics - ACL '02. , (2001).
  20. Johnson, D., et al. Assessing the accuracy and reliability of AI-generated medical responses: An evaluation of the chat-GPT model. Res Sq. , (2023).
  21. Lin, C. -. Y. ROUGE: A package for automatic evaluation of summaries. Text Summarization Branches Out. , 74-81 (2004).
  22. Chen, S., et al. Evaluating the ChatGPT family of models for biomedical reasoning and classification. J Am Med Inform Assoc. 31 (4), 940-948 (2024).

Reimpressões e Permissões

Solicitar permissão para reutilizar o texto ou figuras deste artigo JoVE

Solicitar Permissão

Explore Mais Artigos

MedicinaEdi o 214Incorpora es de VetoresCapacidade de Resposta Espec fica de Dom nioModelos de Funda oManuscritos Revisados por ParesFerramentas de C digo AbertoLlama IndexLlama 2Privacidade do Usu rioAvalia o de Desempenho de ModelosDom nios EspecializadosCorpus de Treinamento

This article has been published

Video Coming Soon

JoVE Logo

Privacidade

Termos de uso

Políticas

Pesquisa

Educação

SOBRE A JoVE

Copyright © 2025 MyJoVE Corporation. Todos os direitos reservados