Este proyecto implementa un sistema de Recuperación Aumentada de Generación (RAG) que utiliza Google BigQuery para almacenar embeddings de documentos PDF y OpenAI para generar respuestas basadas en el contenido de estos documentos.
- Python 3.8 o superior
- Cuenta de Google Cloud Platform con BigQuery habilitado
- Cuenta de OpenAI con acceso a la API
- Tesseract OCR instalado en el sistema (Tener configurado en el PATH)
-
Clona este repositorio o descarga los archivos
-
Instala las dependencias:
pip install -r requirements.txt
-
Instala Tesseract OCR:
- Windows: Descarga el instalador desde https://github.com/UB-Mannheim/tesseract/wiki
- Linux:
sudo apt install tesseract-ocr - macOS:
brew install tesseract
-
Crea un archivo
.enven la raíz del proyecto con las siguientes variables:OPENAI_API_KEY=tu_clave_api_de_openai
- Ve a Google Cloud Console
- Haz clic en "Seleccionar un proyecto" en la parte superior de la página
- Haz clic en "Nuevo proyecto"
- Asigna un nombre al proyecto y haz clic en "Crear"
- Anota el ID del proyecto, lo necesitarás más adelante
- En la consola de Google Cloud, ve a "APIs y servicios" > "Biblioteca"
- Busca "BigQuery API" y selecciónala
- Haz clic en "Habilitar"
- Ve a BigQuery Console
- Haz clic en el ID de tu proyecto en el panel izquierdo
- Haz clic en "Crear dataset"
- Configura el dataset:
- ID del dataset:
archivos - Ubicación de los datos: selecciona la región más cercana a ti
- Haz clic en "Crear dataset"
- ID del dataset:
- Una vez creado el dataset, haz clic en él y luego en "Crear tabla"
- Configura la tabla:
- Nombre de la tabla:
embeddings - Esquema: Haz clic en "Editar como texto" y pega lo siguiente:
id:INTEGER, text:STRING, embedding:FLOAT64 - Haz clic en "Crear tabla"
- Nombre de la tabla:
Coloca tus archivos PDF en la carpeta data/ del proyecto.
Ejecuta el script de ingesta para procesar los PDFs y guardar los embeddings en BigQuery:
python ingest_pdf.py --folder data --limit 5 --chuck_size 1000 --overlap 200Parámetros:
--folder: Ruta a la carpeta con los PDFs (por defecto: "data")--limit: Número máximo de PDFs a procesar (por defecto: 1)--chuck_size: Tamaño de cada fragmento de texto en caracteres (por defecto: 1000)--overlap: Número de caracteres de solapamiento entre fragmentos (por defecto: 200)
Ejecuta el script principal para hacer preguntas sobre el contenido de los documentos:
python main.pyEl script te pedirá que ingreses una pregunta y generará una respuesta basada en el contenido de los documentos procesados.
main.py: Script principal para consultar documentos usando RAGingest_pdf.py: Script para procesar PDFs y guardar embeddings en BigQuerydata/: Carpeta para almacenar los archivos PDFrequirements.txt: Lista de dependencias del proyecto.env: Archivo de configuración con claves API y credenciales
- El sistema utiliza el modelo
text-embedding-ada-002de OpenAI para generar embeddings - Para responder preguntas, se utiliza GPT-4 (o GPT-3.5-Turbo como alternativa)
- El sistema incluye OCR (Reconocimiento Óptico de Caracteres) para extraer texto de imágenes dentro de los PDFs
- Error de autenticación de Google Cloud: Verifica tener el CLI de gcloud instalado y a ver iniciado sesión y tener el proyecto recien creado como default.
- Error de OCR: Asegúrate de que Tesseract OCR esté correctamente instalado y accesible en tu PATH
- Límites de API: Ten en cuenta los límites de uso de las APIs de OpenAI y BigQuery