Sistema Local Inteligente de Preguntas y Respuestas

En el campo de la IA actual, los modelos de lenguaje grandes generales (como GPT-3, GPT-4, etc.) se utilizan ampliamente para construir chatbots. Estos modelos poseen potentes capacidades de procesamiento de lenguaje natural y pueden manejar una variedad de preguntas, generando respuestas que se asemejan al lenguaje humano. Sin embargo, a pesar de su excelente rendimiento en escenarios generales, estos modelos a menudo carecen de precisión en escenarios de preguntas y respuestas relacionados con dominios específicos. Esto se debe a que los modelos de lenguaje grandes generales carecen de una comprensión profunda del conocimiento específico del dominio; sus datos de entrenamiento son vastos pero no están enfocados, lo que lleva a respuestas inexactas, prolijas o irrelevantes al tratar con escenarios específicos.

Para abordar este problema, la industria ha propuesto una serie de soluciones adaptadas a escenarios específicos para mejorar el profesionalismo y la precisión de los chatbots. Este artículo presentará estas soluciones en detalle y las demostrará con un ejemplo simple.

¿Por Qué Desplegar un LLM Localmente?

Desplegar modelos de lenguaje grandes localmente (despliegue localizado) es una elección basada en diferentes necesidades empresariales y escenarios técnicos. Aquí están algunas de las razones principales:

Privacidad y Seguridad de los Datos

En escenarios con requisitos estrictos de privacidad y seguridad de datos, como la atención sanitaria, las finanzas y el gobierno, el despliegue localizado es la elección inevitable. Los datos sensibles en estos campos pueden no ser adecuados para subirlos a la nube para su procesamiento debido a estrictos requisitos legales y de cumplimiento. Desplegar modelos de lenguaje grandes localmente garantiza que los datos no salgan del entorno de red local, evitando así fugas de datos o riesgos externos.

Reducción de la Dependencia de la Red

El despliegue en la nube generalmente depende de la conectividad a internet. En situaciones con condiciones de red inestables o ancho de banda limitado, el rendimiento del acceso al servicio en la nube puede verse afectado. El despliegue localizado evita la dependencia de redes externas, garantizando que el sistema funcione eficientemente en todo momento, especialmente en escenarios que requieren respuestas en tiempo real.

Personalización y Control

Desplegar modelos de lenguaje grandes localmente permite a los desarrolladores personalizar y optimizar los modelos para que se adapten mejor a necesidades empresariales específicas. Con los servicios en la nube, los usuarios solo pueden acceder a APIs genéricas, mientras que el despliegue local permite a los desarrolladores hacer fine-tuning, extender y tener mayor flexibilidad para ajustar el comportamiento del modelo.

Optimización de Costes

Aunque la nube ofrece servicios de escalabilidad y mantenimiento convenientes, el uso a largo plazo de modelos grandes en la nube puede incurrir en costes significativos, especialmente para empresas que requieren invocaciones de modelos continuas. Desplegar modelos localmente puede ahorrar gastos de servicios en la nube, especialmente para empresas con uso a gran escala.

Soluciones a las Limitaciones de los Modelos Generales

Frente al problema del rendimiento insuficiente de los modelos generales en escenarios específicos, las siguientes soluciones se han aplicado y reconocido ampliamente:

Modelos Mejorados con Conocimiento (Retrieval-Augmented Generation, RAG)

RAG es un marco técnico que combina la recuperación con la generación, abordando las lagunas de conocimiento en los modelos de lenguaje grandes mediante la introducción de bases de conocimiento externas. En la arquitectura RAG, la consulta del usuario se envía primero a un módulo de recuperación, que extrae documentos o información relevantes de una base de conocimientos preconstruida. Estas piezas de información se combinan luego con el modelo generativo para producir respuestas más precisas. Este método aprovecha las capacidades lingüísticas del modelo generativo a la vez que garantiza el profesionalismo y la precisión de las respuestas. Este enfoque es particularmente adecuado para escenarios de Q&A específicos del dominio, como atención sanitaria, leyes o Q&A de conocimiento interno corporativo.

RAG

Fuente de la imagen: https://transformers.run/c1/transformer/

Fine-Tuning de Modelos

El fine-tuning es otro método común utilizado para optimizar modelos generales para escenarios específicos. Mediante el fine-tuning de modelos de lenguaje preentrenados, los modelos pueden adaptarse mejor a datos y tareas de dominios específicos. Por ejemplo, se pueden volver a entrenar modelos de lenguaje grandes utilizando documentos internos de la empresa, manuales técnicos o datos de Q&A específicos de la industria. Este enfoque puede mejorar significativamente el rendimiento del modelo en dominios específicos.

La desventaja del fine-tuning es que requiere una cantidad sustancial de datos específicos del dominio, y el proceso de entrenamiento puede demandar considerables recursos computacionales. Sin embargo, una vez completado el fine-tuning, el modelo se vuelve más profesional y preciso al manejar problemas específicos del dominio.

Adicionalmente, hay muchas otras soluciones como Grafos de Conocimiento, Sistemas Basados en Reglas, Sistemas Híbridos y más. Se puede elegir el método apropiado según la situación real.

Construyendo un Sistema de Q&A Específico de Dominio Usando RAG

Demostraremos cómo construir un chatbot impulsado por una base de conocimientos utilizando RAG a través de un ejemplo simple. Para fines de demostración, utilizaremos Ollama como motor de inferencia para cargar el modelo de lenguaje grande, Anything LLM para construir la base de conocimientos RAG, y desplegaremos todos los servicios a un dispositivo Jetson local.

  • Ollama: Motor de inferencia para modelos de lenguaje grandes
  • Anything LLM: Herramienta de construcción de aplicaciones de IA
  • Jetson: Dispositivo de edge computing de alto rendimiento

RAG

Paso 1. Instalar y Ejecutar Ollama

Aquí, utilizamos jetson-examples para desplegar rápidamente el modelo de lenguaje grande en el dispositivo Jetson.

bash
sudo apt install python3-pip
pip3 install jetson-examples
reComputer run ollama
ollama run llama3

Por favor, mantenga esta terminal activa.

Paso 2. Instalar y Ejecutar AnythingLLM

Podemos desplegar AnythingLLM directamente usando Docker:

bash
docker pull mintplexlabs/anythingllm

export STORAGE_LOCATION=$HOME/anythingllm 
mkdir -p $STORAGE_LOCATION 
touch "$STORAGE_LOCATION/.env" 
docker run -d -p 3001:3001 --cap-add SYS_ADMIN \
    -v ${STORAGE_LOCATION}:/app/server/storage \
    -v ${STORAGE_LOCATION}/.env:/app/server/.env \
    -e STORAGE_DIR="/app/server/storage" \
    mintplexlabs/anythingllm

Paso 3. Configurar la Base de Conocimientos Local

Una vez que AnythingLLM se haya iniciado correctamente, podemos usar un navegador para abrir http://<ip-jetson>:3001 para acceder a su interfaz WebUI y cargar el archivo de base de conocimientos en la WebUI.

Aquí, he utilizado ChatGPT para generar algunas historias cortas y he subido estas historias a AnythingLLM.

upload

Paso 4. Pruebas de Eficacia

test

Más Contenido