El perfeccionamiento de los modelos de aprendizaje automático empieza por disponer de conjuntos de datos bien preparados. Esta guía le mostrará cómo crear estos conjuntos de datos, desde la recopilación de datos hasta la creación de archivos de instrucciones. Al final, dispondrá de conocimientos prácticos y herramientas para preparar conjuntos de datos de alta calidad para sus tareas de ajuste.

Este post continúa las guías detalladas de preparar los datos para el GARy creación de aplicaciones RAG de extremo a extremo con la búsqueda vectorial de Couchbase.

Panorama general

Recogida de datos

El primer paso consiste en recopilar datos de diversas fuentes. Se trata de recopilar información en bruto que luego se limpiará y organizará en conjuntos de datos estructurados.

Para obtener una guía detallada, paso a paso, sobre la preparación de datos para la generación aumentada de recuperación, consulte nuestra completa entrada de blog: "Guía paso a paso para preparar los datos para su recuperación Generación aumentada".

Nuestro enfoque de la recogida de datos

En nuestro planteamiento, utilizamos múltiples métodos para recopilar todos los datos pertinentes:

    1. Web scraping con Scrapy:
      • Chatarra es un potente framework de Python para extraer datos de sitios web. Permite escribir arañas que rastreen sitios web y extraigan datos de forma eficiente. 
    2. Extracción de documentos de Confluence:
      • Descargamos directamente los documentos almacenados en nuestro espacio de trabajo de Confluence. Pero esto también se puede hacer utilizando la función API de Confluence lo que implicaría escribir scripts para automatizar el proceso de extracción.
    3. Recuperación de archivos relevantes de repositorios Git:
      • Se escribieron secuencias de comandos personalizadas para clonar los repositorios y extraer los archivos pertinentes. Así nos aseguramos de recopilar todos los datos necesarios almacenados en nuestros sistemas de control de versiones.

Combinando estos métodos, garantizamos un proceso de recopilación de datos exhaustivo y eficaz, que abarcaba todas las fuentes necesarias.

Extracción del contenido del texto

Una vez recopilados los datos, el siguiente paso crucial es extraer el texto de documentos como páginas web y PDF. Este proceso implica analizar estos documentos para obtener datos de texto limpios y estructurados.

Para obtener pasos detallados y ejemplos de código sobre la extracción de texto de estas fuentes, consulte nuestra guía completa en la entrada del blog: "Guía paso a paso para preparar los datos para su recuperación Generación aumentada".

Bibliotecas utilizadas para la extracción de texto

    • HTML: BeautifulSoup se utiliza para navegar por estructuras HTML y extraer contenido de texto.
    • PDF: PyPDF2 facilita la lectura de archivos PDF y la extracción de texto de cada página.

Estas herramientas nos permiten transformar documentos no estructurados en datos de texto organizados listos para su posterior procesamiento.

Creación de datos JSON de muestra

Esta sección se centra en la generación de instrucciones para la creación de conjuntos de datos utilizando funciones como generar_contenido() y generar_instrucciones()que derivan preguntas basadas en el conocimiento del dominio.

Generar instrucciones (preguntas)

Para generar preguntas de instrucción, seguiremos estos pasos:

    1. Secciones de trozos: El texto se fragmenta semánticamente para garantizar preguntas significativas y contextualmente relevantes.
    2. Formule preguntas: Estos trozos se envían a un modelo lingüístico (LLM), que genera preguntas basadas en el trozo recibido.
    3. Crear formato JSON: Por último, estructuraremos las preguntas y la información asociada en un formato JSON para facilitar el acceso y la utilización.

Muestra instrucciones.json

He aquí un ejemplo de lo que instrucciones.json después de generar y guardar las instrucciones:

Aplicación

Para aplicar este proceso:

    1. Cargar el conocimiento del dominiorecuperar información específica de un dominio a partir de un archivo designado
    2. Generar instruccionesutilizan funciones como generar_contenido() desglosar los datos y formular preguntas utilizando generar_instrucciones()
    3. Guardar preguntas: uso guardar_instrucciones() para almacenar las preguntas generadas en un archivo JSON

generar_contenido función

En generar_contenido tokeniza el conocimiento del dominio en frases y, a continuación, genera preguntas lógicas basadas en esas frases:

generar_instrucciones función

Esta función demuestra cómo generar preguntas de instrucción utilizando una API de modelo de lenguaje:

Cargar y guardar el conocimiento del dominio

Utilizamos dos funciones adicionales: cargar_conocimiento_del_dominio() para cargar el conocimiento del dominio desde un archivo y save_instructions() para guardar las instrucciones generadas en un archivo JSON.

cargar_conocimiento_del_dominio función

Esta función carga el conocimiento del dominio desde un archivo especificado.

guardar_instrucciones función

Esta función guarda las instrucciones generadas en un archivo JSON:


Ejemplo de uso

He aquí un ejemplo que demuestra cómo estas funciones trabajan juntas:

Este flujo de trabajo permite crear y almacenar eficazmente preguntas para la preparación de conjuntos de datos.

Generación de conjuntos de datos (entrenamiento, prueba, validación)

Esta sección le guiará en la creación de conjuntos de datos para afinar varios modelos, como Mistral 7B, utilizando Llama2 de Ollama. Para garantizar la precisión, necesitará el conocimiento del dominio almacenado en archivos como dominio.txt.

Funciones de Python para la creación de conjuntos de datos

query_ollama Función

Esta función pide al modelo Llama 2 de Ollama respuestas y preguntas de seguimiento basadas en indicaciones específicas y en el contexto del dominio:

crear_archivo_validación función

Esta función divide los datos en conjuntos de entrenamiento, prueba y validación, y los guarda en archivos separados para el entrenamiento del modelo:

Gestión de la creación de conjuntos de datos

principal función

La función principal coordina la generación del conjunto de datos, desde la consulta a Llama 2 de Ollama hasta el formateo de los resultados en archivos JSONL para el entrenamiento del modelo:

Utilizar estas herramientas

Para empezar a refinar modelos como el Mistral 7B con el Llama 2 de Ollama:

    1. Preparar el conocimiento del dominio: almacenar detalles específicos del dominio en dominio.txt
    2. Generar instrucciones: crear un archivo JSON, instrucciones.jsoncon indicaciones para la creación de conjuntos de datos
    3. Ejecuta la función principal: ejecutar main() con rutas de archivos para crear conjuntos de datos para el entrenamiento y la validación de modelos

Estas funciones de Python le permiten desarrollar conjuntos de datos que optimizan los modelos de aprendizaje automático, mejorando el rendimiento y la precisión de las aplicaciones avanzadas.

Conclusión

¡Eso es todo por hoy! Con estos pasos, ahora tiene el conocimiento y las herramientas para mejorar su proceso de formación de modelos de aprendizaje automático. Gracias por leer esta guía y esperamos que le haya resultado útil. Asegúrese de explorar nuestros otros blogs para obtener más información. Esté atento a la próxima parte de esta serie y eche un vistazo a otros blogs. blogs relacionados con la búsqueda de vectores. Feliz modelaje, ¡y hasta la próxima!

Referencias

Colaboradores

Sanjivani Patra – Nishanth VMAshok Kumar Alluri

 

Autor

Publicado por Sanjivani Patra - Ingeniero de software

Dejar una respuesta