Summary
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!
13
Overview

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.

ARTIFICIAL INTELLIGENCE DATA SCIENCE RAG AUTOMATION chatbot PYTHON APIs UI / UX DESIGN WEB APPLICATIONS SYSTEMS INTEGRATION Data science ARTIFICIAL INTELLIGENCE DATA SCIENCE RAG AUTOMATION chatbot PYTHON APIs UI / UX DESIGN WEB APPLICATIONS SYSTEMS INTEGRATION Data science
TECHNOLOGY STACK

Tools and technologies that I use

A selection of the tools, languages, and platforms I use to develop AI solutions, automation, data analytics, and web applications.

ChatGPT
ChatGPT

Generative AI and development

Claude
Claude

Generative AI and analytics

Gemini
Gemini

Multimodal AI and development

GitHub
GitHub

Version control

Notion
Notion

Organization and documentation

Cloudflare
Cloudflare

Web security and performance

Python
Python

Development, data and AI

Docker
Docker

Containers and deployment

PHP
PHP

Backend web development

✉ SHALL WE TALK?

Let's talk

If we share interests in artificial intelligence, data, or software development, I'd be happy to exchange ideas. You can also contact me for professional matters.

Read the blog