
Una de las aplicaciones más poderosas de LLM es la creación de chatbots sofisticados de preguntas (preguntas y respuestas), capaces de proporcionar respuestas precisas basadas en información de origen específica. Este proyecto se centra en desarrollar un asistente virtual para la biblioteca del acuerdo. II, una biblioteca de elementos finitos C ++ de código abierto, utilizando una técnica conocida como generación de recuperación acuática (RAG). El conjunto de datos se obtiene de 90 pasos de tutoriales disponibles en el acuerdo oficial. Documentación, a la que se puede acceder aquí. Cohere proporciona el motor del modelo de lenguaje grande (LLM), que es conocido por ofrecer modelos LLM de alta calidad para incrustaciones y servicios de chat. Para la base de datos Vector, elegimos el croma debido a su naturaleza de código abierto, velocidad y eficiencia en la búsqueda y recuperación de vectores. El marco Langchain se utiliza para administrar eficientemente la interacción entre la entrada del usuario, el procesamiento de consultas y la recuperación de la información relevante de la base de datos de vector, asegurando una integración perfecta entre varios componentes del modelo.
El proceso para preparar la base de datos es el siguiente: primero, las páginas del tutorial se recuperan del sitio web como objetos de documentos Langchain. Para mejorar la velocidad de acceso (durante el tiempo de prueba), estos objetos de documentos se guardan como archivos JSON en el disco local. A continuación, los documentos se dividen en trozos de tamaño adecuado (alrededor de 400 tokens por fragmento con una superposición de 40 tokens). En total, el conjunto de datos comprende 2,3 millones de tokens. Finalmente, estos documentos divididos están integrados en la base de datos de vectores.
El modelo se construye con cuatro cadenas y tres plantillas de inmediato.
Cadena reformulada : esta cadena recibe la pregunta y el historial de conversación del usuario, luego reformula la pregunta basada en el diálogo anterior. Por ejemplo, si la primera pregunta es "¿Qué es Fe_nothing?" Y la segunda pregunta es "¿Dónde puedo usarlo?", La cadena de reformulación modificará la segunda pregunta a "¿Dónde puedo usar Fe_Nothing?" Este paso esencialmente agrega memoria a la conversación, asegurando la continuidad del contexto.
Cadena de cuestiones múltiples : esta cadena toma la pregunta reformulada y genera cinco preguntas similares, proporcionando múltiples perspectivas. Emite una lista de preguntas de Python utilizando una función lambda simple, y cualquier línea vacía se elimina utilizando la función remove_empty_string como el paso final.
Cadena de recuperación : esta cadena toma las cinco preguntas de la cadena anterior y consulta la base de datos de vectores. La base de datos Vector busca vectores similares y recupera documentos relevantes. Dado que el mismo documento podría recuperarse varias veces para diferentes preguntas, se crea un conjunto único de documentos utilizando la función get_unique_union como el último paso.
Cadena de trapos : esta cadena utiliza la pregunta, el historial de conversación y los documentos recuperados de la cadena anterior como el contexto para generar la respuesta final.
El extremo frontal de la aplicación se crea utilizando ChatInterface de Gradio, con la función de respuesta diseñada para transmitir la salida en tiempo real. La aplicación se implementa en los espacios faciales abrazados y se puede acceder aquí.