Resumen
Extrae información de PDFs, genera embeddings con SentenceTransformers, los indexa con FAISS y responde de forma contextual con GPT-3.5-turbo. ¡Descubre más en mi repositorio en GitHub!
12
Descripción general

Descripción del Proyecto

Este proyecto consiste en el desarrollo de un chatbot inteligente para la empresa Enervia, especializado en soluciones energéticas. La idea central es aprovechar técnicas de Retrieval Augmented Generation (RAG) para que el chatbot responda consultas de clientes utilizando información extraída directamente de documentos PDF. Estos documentos incluyen un dossier corporativo unificado y un archivo de FAQs, los cuales contienen toda la información relevante sobre la empresa.

El proceso se divide en varias etapas clave:

Extracción y Procesamiento de Datos:
Se utiliza la biblioteca PyPDF2 para extraer el contenido textual de los PDFs. Dado que los textos extraídos pueden contener errores de formateo y espacios incorrectos, se implementa un proceso de limpieza y segmentación. Este proceso divide el contenido en fragmentos semánticamente coherentes basados en encabezados y saltos de línea, asegurando que cada fragmento tenga un tamaño adecuado para el procesamiento posterior (por ejemplo, fragmentos de hasta 300 palabras).

Generación de Embeddings:

Para transformar los fragmentos de texto en representaciones numéricas que capten su significado semántico, se utiliza SentenceTransformers con el modelo all-MiniLM-L6-v2. Estos embeddings permiten convertir el contenido textual en vectores que luego se pueden comparar y buscar de forma eficiente.

Indexación con FAISS:
Los embeddings generados se indexan utilizando FAISS (Facebook AI Similarity Search). Esta herramienta permite realizar búsquedas por similitud de forma rápida y escalable, de modo que, cuando un usuario formula una consulta, el sistema pueda recuperar los fragmentos más relevantes basados en la cercanía semántica.

Generación de Respuestas con la API de OpenAI:
Una vez que se recuperan los fragmentos pertinentes, se integran en un prompt junto con la consulta del usuario. Este prompt se envía a la API de OpenAI utilizando el modelo GPT-3.5-turbo a través del endpoint de ChatCompletion, que genera respuestas contextuales y precisas basadas en la información extraída de los documentos.

Integración y Escalabilidad:
Aunque el proyecto parte de un corpus pequeño (alrededor de 11 páginas en total), la arquitectura está diseñada para escalar fácilmente a medida que se añada más información o documentos adicionales. Esto permite mantener actualizada la base de conocimientos y mejorar continuamente la calidad de las respuestas del chatbot.

En resumen, el proyecto combina técnicas de procesamiento de lenguaje natural, generación de embeddings, indexación vectorial y generación de lenguaje natural para crear un chatbot que pueda responder preguntas de forma inteligente y contextualizada. La experiencia adquirida en el proceso es muy valiosa, especialmente para quienes se inician en el mundo del NLP y la inteligencia artificial, ya que abarca desde la manipulación de datos no estructurados hasta la integración de múltiples herramientas tecnológicas de vanguardia.

INTELIGENCIA ARTIFICIAL DATA SCIENCE RAG AUTOMATIZACIÓN chatbot PYTHON APIs UI / UX DESIGN APLICACIONES WEB INTEGRACIÓN DE SISTEMAS Ciencia datos INTELIGENCIA ARTIFICIAL DATA SCIENCE RAG AUTOMATIZACIÓN chatbot PYTHON APIs UI / UX DESIGN APLICACIONES WEB INTEGRACIÓN DE SISTEMAS Ciencia datos
STACK TECNOLÓGICO

Herramientas y tecnologías que utilizo

Una selección de las herramientas, lenguajes y plataformas que utilizo para desarrollar soluciones de IA, automatización, análisis de datos y aplicaciones web.

ChatGPT
ChatGPT

IA generativa y desarrollo

Claude
Claude

IA generativa y análisis

Gemini
Gemini

IA multimodal y desarrollo

GitHub
GitHub

Control de versiones

Notion
Notion

Organización y documentación

Cloudflare
Cloudflare

Seguridad y rendimiento web

Python
Python

Desarrollo, datos e IA

Docker
Docker

Contenedores y despliegue

PHP
PHP

Desarrollo web backend

✉ ¿HABLAMOS?

Hablemos

Si compartimos intereses en inteligencia artificial, datos o desarrollo de software, estaré encantado de intercambiar ideas. También puedes escribirme para cuestiones profesionales.

Leer el blog