JoVE Logo

Iniciar sesión

Se requiere una suscripción a JoVE para ver este contenido. Inicie sesión o comience su prueba gratuita.

En este artículo

  • Resumen
  • Resumen
  • Introducción
  • Protocolo
  • Resultados
  • Discusión
  • Divulgaciones
  • Agradecimientos
  • Materiales
  • Referencias
  • Reimpresiones y Permisos

Resumen

En este protocolo, la calidad de respuesta del modelo de lenguaje grande básico se mejora mediante el aumento con artículos científicos revisados por pares y específicos del dominio a través de un mecanismo de incrustación vectorial. Además, se proporciona código para ayudar en la comparación del rendimiento entre modelos de lenguaje grandes.

Resumen

Los grandes modelos de lenguaje (LLM) se han convertido en un recurso popular para generar información relevante para una consulta de usuario. Dichos modelos se crean a través de un proceso de entrenamiento intensivo en recursos que utiliza un corpus extenso y estático de datos textuales. Esta naturaleza estática da como resultado limitaciones para la adopción en dominios con conocimiento, información propietaria y datos confidenciales que cambian rápidamente. En este trabajo, se describen métodos para aumentar los LLM de propósito general, conocidos como modelos de fundamentación, con información específica del dominio utilizando un enfoque basado en incrustaciones para incorporar manuscritos científicos actualizados y revisados por pares. Esto se logra a través de herramientas de código abierto como Llama-Index y modelos disponibles públicamente como Llama-2 para maximizar la transparencia, la privacidad y el control del usuario y la replicabilidad. Si bien los manuscritos científicos se utilizan como ejemplo de caso de uso, este enfoque se puede extender a cualquier fuente de datos de texto. Además, se analizan los métodos para evaluar el rendimiento del modelo después de esta mejora. Estos métodos permiten el rápido desarrollo de sistemas LLM para dominios altamente especializados, independientemente de la amplitud de la información en el corpus de formación.

Introducción

Los grandes modelos de lenguaje (LLM) como ChatGPT de OpenAI o Llama de Meta AI se han convertido rápidamente en un recurso popular para generar texto relevante para un mensaje de usuario. Estos modelos, que originalmente funcionaban para predecir los siguientes ítems léxicos en una secuencia, han evolucionado para comprender el contexto, codificar la información clínica y demostrar un alto rendimiento en una variedad de tareas 1,2,3,4. Aunque los modelos de lenguaje son anteriores a estas capacidades y a su nivel actual de popularidad en décadas5, los avances recientes en el aprendizaje profundo y las capacidades informáticas han hecho que los LLM comerciales preentrenados y de alta calidad estén ampliamente disponibles para los usuarios a través de tecnologías basadas en la web e interfaces de programación de aplicaciones (API)6. Sin embargo, existen varias limitaciones notables para consumir LLM en este formato.

Reto 1: Corpus de entrenamiento estático
Los LLM se entrenan con un cuerpo de datos de texto enorme (por ejemplo, dos billones de tokens en el caso de Llama 27) pero estático. Esto plantea un desafío para producir respuestas precisas relacionadas con campos que experimentan un rápido desarrollo o cambian la literatura. En este enfoque estático, los LLM requerirían un reentrenamiento frecuente para mantenerse al día con los datos más recientes, lo cual no es práctico ni escalable. Además, las indicaciones que requieren respuestas basadas en información no presente en los datos de entrenamiento pueden impedir la generación de texto útil o provocar alucinaciones8. Los casos de alucinaciones o fabricación de hechos plantean preocupaciones significativas sobre la confiabilidad de los LLM, particularmente en entornos donde la precisión de la información es crítica9.

Desafío 2: Falta de especificidad del dominio
Los modelos previamente entrenados a menudo se crean para uso general, mientras que los usuarios pueden necesitar un modelo específicamente optimizado para el rendimiento en un dominio determinado. Además, los recursos computacionales y los datos necesarios para entrenar un modelo de novo o realizar un ajuste fino significativo son prohibitivos para muchos usuarios.

Reto 3: Falta de privacidad
Es posible que los usuarios que buscan aplicaciones que involucran datos confidenciales o información de propiedad no estén dispuestos o no puedan usar ciertos servicios de LLM, ya que carecen de información sobre cómo se pueden almacenar o utilizar los datos.

Desafío 4: Falta de estabilidad garantizada
Los servicios con LLM propietarios pueden cambiar los modelos disponibles o alterar el comportamiento en cualquier momento, lo que hace que la estabilidad sea una preocupación para la implementación de aplicaciones que dependen de estos servicios.

La generación aumentada de recuperación (RAG) es una técnica desarrollada para mejorar el rendimiento de LLM, particularmente en consultas relacionadas con información fuera del corpus de entrenamiento del modelo10,11. Estos sistemas aumentan los LLM al incorporar información contextual que se debe tener en cuenta al generar una respuesta a una consulta del usuario. Diversos trabajos recientes han descrito las aplicaciones de los sistemas RAG y sus potenciales ventajas 12,13,14.

El objetivo del método descrito en este trabajo es demostrar la construcción de un sistema de este tipo y proporcionar un marco para que los investigadores experimenten rápidamente con LLM aumentados de dominio específico. Este método es aplicable para los usuarios que buscan aumentar un LLM con una fuente de datos externa basada en texto. Específicamente, un objetivo general de este protocolo es proporcionar código paso a paso que sea extensible a una variedad de experimentos prácticos de LLM y RAG sin la necesidad de una experiencia técnica significativa en el dominio de modelado de lenguaje, aunque se requiere un conocimiento práctico de Python para aplicar este enfoque sin modificaciones. Para maximizar el control del usuario, la transparencia, la portabilidad y la asequibilidad de las soluciones, se utilizan herramientas de código abierto disponibles públicamente. El sistema propuesto aborda los problemas mencionados anteriormente de las siguientes maneras:

Soluciones 1 y 2: Corpus de entrenamiento estático y falta de especificidad de dominio
La metodología proporcionada aprovecha un enfoque RAG, utilizando incrustaciones para proporcionar información específica del dominio que no se incluye en los datos de entrenamiento originales. En un nivel alto, los modelos de incrustación transforman el texto u otros datos en una representación como un vector o una matriz de números de una sola dimensión. Esta técnica es beneficiosa, ya que convierte la información semántica contenida en el texto en una forma densa y numérica. Al proyectar una consulta de usuario en el mismo espacio de incrustación, se pueden utilizar varios algoritmos para calcular la distancia15 y, por lo tanto, la similitud semántica aproximada, entre la consulta del usuario y las secciones de los documentos de texto. Por lo tanto, la creación de una base de datos de dichos vectores a partir de documentos divididos en secciones discretas puede facilitar la búsqueda en un número significativo de documentos del texto más relevante para una consulta de usuario (Figura 1). Este enfoque es extensible a cualquier documento de texto. Si bien se están comenzando a implementar otros enfoques, como las capacidades de búsqueda en línea, para aumentar los LLM, este enfoque permite a los usuarios elegir fuentes consideradas de calidad suficientemente alta para su caso de uso.

Solución 2: Falta de privacidad
En esta implementación, se utilizó un entorno seguro en la nube para el alojamiento, sin avisos de usuario, respuestas generadas u otros datos que salgan de este ecosistema. Sin embargo, todo el código se escribe de manera independiente de la plataforma para garantizar que se pueda sustituir a otro proveedor de nube o hardware local.

Solución 3: Falta de estabilidad garantizada
Este enfoque utiliza bibliotecas de código abierto y se centra en aumentar los LLM con pesos disponibles públicamente, lo que permite un mayor grado de transparencia, estabilidad y control de versiones, si es necesario.

En la Figura 2 se muestra un esquema completo de nuestro sistema propuesto, y en la sección de protocolo se describen instrucciones detalladas sobre cómo replicar este sistema o uno similar. Una consideración adicional a la hora de modificar el comportamiento del modelo mediante el ajuste fino o el aumento es la evaluación del rendimiento. En los modelos de generación de lenguaje, esto presenta un desafío único, ya que muchas métricas tradicionales de aprendizaje automático no son aplicables. Aunque existe una variedad de técnicas16, en este estudio, se utilizaron preguntas de opción múltiple (MCQ) escritas por expertos para evaluar la precisión y comparar el rendimiento antes y después del aumento, así como con los LLM alternativos populares.

Protocolo

En el caso de uso demostrado en este documento, el almacén de vectores se generó utilizando las pautas publicadas por el Grupo de Trabajo17 del Consenso de Chicago. Este grupo de expertos se estableció para desarrollar directrices para el tratamiento de los cánceres peritoneales. Se eligió el área temática por estar dentro del área de especialización clínica de los investigadores. Se accedió al conjunto de artículos desde repositorios de revistas en línea, incluidos Cancer y Annals of Surgical Oncology. Se utilizó un modelo de incrustación compacto (33,4 millones de parámetros) creado por la Academia de Inteligencia Artificial de Pekín (BAAI, https://www.baai.ac.cn/english.html), bge-small-en, para generar incrustaciones a partir de documentos fuente. La base de datos resultante se utilizó para aumentar los modelos de base Llama 2 y Open-AI7. Para comodidad del lector, el código está disponible a través de GitHub (https://github.com/AnaiLab/AugmentedLLM). Para garantizar la replicabilidad, se recomienda utilizar las mismas versiones de bibliotecas que se utilizan en la lista de requisitos proporcionada, así como la misma versión de Python. Los detalles adicionales sobre la instalación o la documentación sobre las herramientas utilizadas en los siguientes métodos se pueden encontrar en los sitios web oficiales de los proveedores de Python (https://www.python.org), git (https://git-scm.com), Llama-Index (https://llamaindex.ai) y Chroma (https://trychroma.com).

1. Requisitos previos: Revise el código e instale las bibliotecas necesarias

  1. Compruebe que git, python y pip estén instalados.
    1. En un terminal, ejecute los siguientes comandos para verificar la instalación:
      git --version
      python3 --version
      pip3 --version
  2. Compruebe el código y los requisitos de instalación.
    1. En un terminal, ejecute los siguientes comandos:
      https://github.com/AnaiLab/AugmentedLLM.git de clones de git
      cd ./AugmentedLLM/

      pip3 install -r requirements.txt

2. Creación de una base de datos vectorial con Llama-Index

  1. Convertir formatos de archivo RTF (solo es necesario si los archivos están en formato RTF).
    1. Edite el archivo titulado config.py, reemplazando las rutas de archivo en el código siguiente por la ubicación de los artículos RTF que se van a convertir y la ubicación en la que se van a escribir los archivos de texto sin formato escribiendo los siguientes comandos. Guarde el archivo.
      rtf_file_dir = './articles_rtf/'
      converted_file_dir = './articles_converted/'
    2. En un terminal, en el mismo directorio, ejecute el código para generar versiones de texto plano de archivos RTF ejecutando el siguiente comando:
      pitón3 ./convert_rtf.py
  2. Cree y guarde la base de datos vectorial.
    1. Edite el archivo config.py, reemplazando el valor de la siguiente variable por la ruta del archivo de la carpeta que contiene los documentos con los que se va a aumentar el LLM; Guarde el archivo.
      article_dir = './artículos/'
    2. En un terminal, en el mismo directorio, ejecute el código con el siguiente comando para crear y conservar la base de datos. Compruebe que la base de datos está guardada en la carpeta vector_db.
      python3 ./build_index.py

3. Aumento de un modelo de Llama con base de datos vectorial generada en la sección 2

  1. Creación de instancias de LLM personalizado localmente (opcional)
    NOTA: Solo es necesario realizar este paso si desea utilizar un modelo que no sea el predeterminado Llama-2-7B. Si desea utilizar el modelo predeterminado, continúe con el paso 3.2.
    1. (Usando un LLM personalizado) Especifique un LLM para aumentar editando run_augmented_llm.py y pasando un objeto LLM llama-index en el constructor como parámetro llm en las siguientes líneas de código en lugar de None.
      augmentedLLM = AugmentedLLM(vector_store, llm = Ninguno)
  2. Consulta de LLM aumentada
    1. Ejecute el siguiente comando en el terminal:
      python3 ./run_augmented_llm.py
    2. Ejecute consultas de usuario para obtener una respuesta aumentada por los datos del conjunto de manuscritos (Figura 3 y Figura 4). Presione CTRL + C para salir cuando termine.

4. Comparación programática de LLM alternativos

  1. Cree preguntas múltiples.
    1. Edite el archivo questions.py, tomando nota del formato de los ejemplos. Agregue preguntas siguiendo un formato similar. Guarde el archivo.
  2. Conéctese a GPT-3.5, GPT-4, OpenChat u otros modelos de comparación a través de API.
    1. Edite el archivo config.py, agregando la clave API para OpenAI o Huggingface si el objetivo es comparar modelos de cualquiera de los proveedores. Guarde el archivo.
      huggingface_key = ''
      openai_key = ''
    2. Edite el archivo compare_llms.py y elija el conjunto de modelos con los que realizar la prueba descomentando (eliminando los caracteres '# ' al principio de esa línea) los modelos con los que comparar.
      NOTA: Algunos comparadores requieren una clave API como se establece en el paso 4.2.1. Además, edite el parámetro output_dir para cambiar dónde se almacena la salida de LLM si lo desea; de lo contrario, se utilizará un valor predeterminado.
      output_dir = './llm_responses/'
    3. En un terminal, ejecute el código con el siguiente comando. Después de la ejecución, vea las respuestas del modelo en la carpeta especificada en el paso 4.2.2 para calificarlas u otra revisión.
      python3 ./compare_llms.py
  3. (Opcional) Experimente con la calificación automatizada de las respuestas de preguntas múltiples. El código de ejemplo utiliza la biblioteca LMQL para restringir la salida de LLM a un formato esperado.
    1. Abra el archivo automated_comparison.py y de manera similar al paso 4.2.2, descomente los modelos que se van a incluir, edite la variable output_dir o personalícelo de otro modo. Tenga en cuenta que la salida del modelo se guardará de manera similar. Guarde el archivo.
    2. Ejecute el código del paso 4.3.1 ejecutando el siguiente comando en un terminal:
      pitón3 ./automated_comparison.py

Resultados

Se utilizaron un conjunto de 22 publicaciones de las directrices de gestión del Grupo de Trabajo del Consenso de Chicago para aumentar el modelo base Llama-7b17. Los documentos se convirtieron en un índice vectorial utilizando la herramienta Llama-Index para generar Llama-2-7b-CCWG-Embed. Los modelos populares de OpenAI, como GPT-3.5 y GPT-4, también se aumentaron de manera similar para producir modelos GPT-XX-CCWG-Embed. Se elaboraron un total de 20 preguntas ...

Discusión

Los métodos proporcionados aquí tienen como objetivo facilitar la investigación de aplicaciones específicas de dominio de LLM sin la necesidad de capacitación de novo o un ajuste exhaustivo. A medida que los LLM se están convirtiendo en un área de gran interés para la investigación, los enfoques para aumentar las bases de conocimiento y mejorar la precisión de las respuestas serán cada vez más importantes 18,19,20,21.

Divulgaciones

Los autores no tienen conflictos de intereses que declarar.

Agradecimientos

Este trabajo fue facilitado por varias bibliotecas de código abierto, entre las que destacan llama-index (https://www.llamaindex.ai/), ChromaDB (https://www.trychroma.com/) y LMQL (https://lmql.ai/).

Materiales

NameCompanyCatalog NumberComments
pip3 version 22.0.2 
Python version 3.10.12

Referencias

  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).

Reimpresiones y Permisos

Solicitar permiso para reutilizar el texto o las figuras de este JoVE artículos

Solicitar permiso

Explorar más artículos

MedicinaN mero 214Incrustaciones de vectoresCapacidad de respuesta espec fica del dominioModelos de fundamentaci nManuscritos revisados por paresHerramientas de c digo abiertoLlama IndexLlama 2Privacidad del usuarioEvaluaci n del rendimiento del modeloDominios especializadosCorpus de capacitaci n

This article has been published

Video Coming Soon

JoVE Logo

Privacidad

Condiciones de uso

Políticas

Investigación

Educación

ACERCA DE JoVE

Copyright © 2025 MyJoVE Corporation. Todos los derechos reservados