CoolFace
Apppublic

orlandoVergara/Rag_asistente

sourceHugging Faceupdated 10mo agoView on Hugging Face
0likes
App README

Asistente RAG Literario: Análisis de Jorge Luis Borges

Este proyecto implementa un sistema de RAG (Retrieval-Augmented Generation) para actuar como asistente experto en obras literarias —por ejemplo, la obra de Jorge Luis Borges— permitiendo consultas en lenguaje natural sobre PDFs privados y devolviendo respuestas basadas únicamente en el contenido, con citas de fuente.


📖 Problema y caso de uso

Problema: los textos literarios densos requieren análisis semántico que va más allá de búsquedas por palabra clave (Ctrl+F). Caso de uso: un estudiante o investigador pregunta cosas como “¿Qué simbolizan los espejos según el narrador?” y el sistema recupera fragmentos relevantes del PDF, los envía al LLM y genera una respuesta con referencia de página.


🏗 Arquitectura (resumen)

  1. 1.Ingesta de documentos (ingest_documents.py): carga PDFs desde data/, extrae y limpia texto.
  2. 2.Chunking: fragmentos ~1000 caracteres con overlap 200.
  3. 3.Embeddings: convierte fragmentos usando text-embedding-004.
  4. 4.Almacenamiento: vectores y metadatos en ChromaDB (persistente, local).
  5. 5.Recuperación: convierte la consulta en vector, busca k-NN y recupera los 4 fragmentos más relevantes.
  6. 6.Generación: construye prompt (Instrucciones + Contexto + Pregunta) y genera respuesta vía gemini-2.5-flash.

🛠 Stack tecnológico

  • Lenguaje: Python 3.11
  • Orquestación: LangChain (v0.3.x)
  • Interfaz: Streamlit
  • DB vectorial: ChromaDB (local)
  • Modelos (Google Gemini API):
  • LLM: gemini-2.5-flash
  • Embeddings: models/text-embedding-004
  • Procesamiento PDF: pypdf

🚀 Instalación y ejecución

Sigue estos pasos para ejecutar localmente:

  1. 1.Clonar el repositorio
bash
git clone <URL_DE_TU_REPOSITORIO>
cd mi_proyecto_rag
  1. 1.Crear y activar entorno virtual
bash
# Crear entorno
python -m venv venv

# Activar (Windows)
.\venv\Scripts\activate

# Activar (macOS/Linux)
source venv/bin/activate
  1. 1.Instalar dependencias
bash
pip install -r requirements.txt
  1. 1.Configurar variables de entorno Crea un archivo .env en la raíz con tu clave:
env
GOOGLE_API_KEY= AIzaSyCvzAhZpP6LGl-TLh9Utp_BNiElZL0yJTU
  1. 1.Ingesta de documentos (carga de datos) Coloca tus PDFs en la carpeta data/ y ejecuta:
bash
python ingest_documents.py

Se generará la carpeta chroma_db con la base de datos vectorial.

  1. 1.Ejecutar la aplicación
bash
streamlit run app.py

La app normalmente queda en http://localhost:8501


🔍 Ejemplos de consultas de prueba

  • Recuperación de hechos: "¿Qué vio Carlos Argentino Daneri en el sótano?"
  • Análisis simbólico: "¿Cuál es la relación entre los espejos y la abominación?"
  • Síntesis: "Explícame el concepto de infinito presentado en estos textos."
  • Búsqueda específica: "¿Quién es Beatriz Viterbo?"

⚖️ Decisiones de diseño y limitaciones

Decisiones:

  • gemini-2.5-flash por baja latencia y buen balance velocidad/precisión.
  • ChromaDB local para simplificar despliegue sin servicios externos.
  • Streamlit para una interfaz rápida y accesible.

Limitaciones:

  • Single-turn RAG: cada pregunta se procesa de forma independiente (no mantiene memoria conversacional).
  • PDFs sin capa de texto (escaneos sin OCR) no se procesan correctamente.
  • Límites de la API (429) pueden ocurrir con muchas peticiones en poco tiempo.

📚 Citación de fuentes

Cada respuesta incluye un desplegable “Ver fuentes consultadas” que lista el nombre del PDF y el número de página de los fragmentos usados para construir la respuesta.


Si quieres, puedo:

  • Exportar este README listo para pegar en /c:/Users/Ferna/Desktop/mi_proyecto_rag/README.MD,
  • O aplicar cambios concretos (ej.: cambiar chunk size, número de vecinos k, o adaptar a otro proveedor de embeddings).