Skip to content

Sistema RAG (Retrieval Augmented Generation) para asistencia de documentación técnica en español utilizando LangChain y OpenAI

Notifications You must be signed in to change notification settings

Jaolmos/documentmentor-rag

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DocumentMentor 📚

DocumentMentor Interface

DocumentMentor es un sistema RAG (Retrieval Augmented Generation) que actúa como asistente de documentación técnica. Utilizando la arquitectura RAG, el sistema combina la potencia de GPT-3.5 de OpenAI con una base de conocimiento local para proporcionar respuestas precisas y contextualizadas sobre documentos técnicos en español.

Tecnologías Principales 🛠️

  • Python 3.10+: Lenguaje base del proyecto

    • Soporte para características modernas
    • Gestión eficiente de dependencias
    • Compatibilidad con frameworks de IA
      • LangChain
      • Sentence Transformers
      • FAISS
  • LangChain: Framework principal para la construcción del sistema RAG

    • Integración con OpenAI GPT-3.5
    • Cadenas de procesamiento personalizadas
    • Gestión de memoria conversacional
    • Prompts optimizados
  • OpenAI API:

    • Modelo GPT-3.5-turbo para generación de respuestas
    • Fine-tuning de prompts para contexto técnico
    • Respuestas en español natural
  • RAG (Retrieval Augmented Generation):

    • Embeddings locales con Sentence Transformers
    • Búsqueda semántica mediante FAISS
    • Recuperación contextual inteligente
    • Enriquecimiento del conocimiento del LLM

Interface de Usuario con Streamlit 🖥️

DocumentMentor utiliza Streamlit como framework para la interface de usuario, proporcionando:

Características de la UI

  • Chat Interactivo:

    • Interfaz conversacional fluida
    • Historial de mensajes persistente
    • Entrada de texto intuitiva
  • Gestión de Documentos:

    • Carga de PDFs mediante drag & drop
    • Visualización de documentos procesados
    • Estado de procesamiento en tiempo real
  • Panel de Control:

    • Sidebar para configuración
    • Indicadores de estado del sistema
    • Opciones de personalización

Ventajas de Streamlit

  • Desarrollo rápido y eficiente
  • Actualización en tiempo real
  • Integración perfecta con Python
  • Despliegue sencillo

Estructura del Proyecto 📁

documentmentor/
├── data/                          # Datos y almacenamiento
│   ├── processed/                 # Documentos procesados
│   ├── vector_store/             # Almacenamiento vectorial
│   │   ├── document_map.json     # Mapeo de documentos
│   │   └── faiss.index          # Índice FAISS
│   └── documentmentor.db         # Base de datos SQLite
│
├── src/                          # Código fuente
│   ├── core/                     # Lógica principal
│   │   ├── __init__.py
│   │   ├── document_processor.py # Procesamiento de PDFs
│   │   ├── memory_manager.py     # Gestión de memoria
│   │   └── qa_engine.py         # Motor de Q&A
│   │
│   ├── data/                     # Capa de datos
│   │   ├── __init__.py
│   │   ├── database.py          # Operaciones SQLite
│   │   └── vector_store.py      # Gestión vectorial
│   │
│   └── ui/                       # Interfaz de usuario
│       └── app.py               # Aplicación Streamlit
│
├── .env                         # Variables de entorno
├── .env.example                 # Ejemplo de configuración
├── .gitignore
├── main.py                      # Punto de entrada
├── README.md
└── requirements.txt             # Dependencias

Funcionamiento 🔄

Procesamiento de Documentos 📄

  1. Carga de PDFs:

    • Sube tus documentos técnicos en formato PDF
    • El sistema procesa automáticamente cada documento
    • Se extraen y segmentan los textos en chunks optimizados
  2. Indexación:

    • Cada segmento se convierte en embeddings
    • Se almacenan en la base de datos vectorial FAISS
    • Se preservan los metadatos y referencias

Flujo de Consultas 💭

  1. Preguntas del Usuario:

    • Escribe tu pregunta en el chat
    • El sistema analiza la consulta
    • Se genera un embedding de la pregunta
  2. Búsqueda Semántica:

    • Se buscan los segmentos más relevantes
    • Se utiliza FAISS para búsqueda eficiente
    • Se recupera el contexto más apropiado
  3. Generación de Respuestas:

    • GPT-3.5 recibe el contexto relevante
    • Se genera una respuesta precisa
    • Se mantiene el contexto de la conversación

Ejemplo de Uso 📝

  1. Preparación:

    • Sube un manual técnico en PDF
    • Espera la confirmación de procesamiento
    • El documento está listo para consultas
  2. Consultas:

    • Pregunta: "¿Qué requisitos tiene la instalación?"
    • El sistema busca secciones relevantes
    • Responde con información específica del documento
  3. Seguimiento:

    • Puedes hacer preguntas de seguimiento
    • El sistema mantiene el contexto
    • Las respuestas son coherentes y relacionadas

Ventajas 🌟

  • Procesamiento local de documentos
  • Respuestas basadas en tu documentación
  • Contexto conversacional mantenido
  • Búsqueda semántica precisa
  • Interfaz intuitiva

Requisitos 📋

# Core LangChain dependencies
langchain==0.3.12
langchain-core==0.3.25
langchain-community==0.3.12
langchain-openai==0.2.12
openai==1.57.4

# Document Processing
pypdf==5.1.0
python-dotenv==1.0.1

# Vector Store & Embeddings
sentence-transformers==3.3.1
faiss-cpu==1.9.0.post1
torch==2.5.1
torchvision==0.20.1
torchaudio==2.5.1

# Database
SQLAlchemy==2.0.36

# UI Framework
streamlit==1.41.1

# Utils
numpy==2.2.0
pandas==2.2.3
pydantic==2.10.3

Instalación 🔧

  1. Clonar el repositorio
git clone https://github.com/Jaolmos/documentmentor-rag.git
  1. Crear entorno virtual
python -m venv venv
  1. Activar entorno virtual
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate
  1. Instalar dependencias
pip install -r requirements.txt
  1. Configurar variables de entorno
# Copiar el archivo de ejemplo
cp .env.example .env

# Editar el archivo .env usando .env.example como referencia
# y añadir tu API key de OpenAI
OPENAI_API_KEY=tu_api_key

Uso 💡

  1. Iniciar la aplicación
python main.py

El script main.py realiza las siguientes tareas:

  • Carga variables de entorno desde .env
  • Verifica la presencia de OPENAI_API_KEY
  • Inicializa las carpetas necesarias:
    • data/processed/ para documentos procesados
    • data/vector_store/ para índices vectoriales
  • Lanza la interfaz Streamlit

Estado Actual 📊

  • ✅ Procesamiento de documentos
  • ✅ Sistema de embeddings local
  • ✅ Búsqueda semántica
  • ✅ Interfaz de usuario
  • ✅ Gestión de memoria
  • ✅ Persistencia de datos

Notas Importantes ⚠️

  • Requiere conexión a Internet para GPT-3.5
  • Los documentos se procesan localmente
  • Mantener actualizado el entorno virtual
  • Revisar logs para diagnóstico

About

Sistema RAG (Retrieval Augmented Generation) para asistencia de documentación técnica en español utilizando LangChain y OpenAI

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages