Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MEMORIA-RAG

Python Google Gemini LangChain ChromaDB License YouTube

Este es el repositorio oficial del código fuente desarrollado en el video "memorIA INFINITA: Procesa 2GB+ de Documentos con RAG y Python (Sin Alucinaciones)".

Ver el tutorial en YouTube

📺 Ver el Tutorial Completo en YouTube

Sistema de Retrieval-Augmented Generation (RAG) diseñado para manejar grandes volúmenes de datos (2GB+) usando la API de Google Gemini y ChromaDB como base de datos vectorial.

Problema que resuelve

  • Ventana de contexto limitada: Los LLMs tienen límites de tokens (32K, 128K). 2GB de texto equivale a ~500M tokens, imposible de procesar directamente. RAG almacena los datos en una base de datos vectorial y recupera solo los fragmentos relevantes.
  • Alucinaciones: Evita que el LLM invente información forzando las respuestas a basarse en documentos recuperados con citas de fuentes.

Arquitectura

Fase de indexación:
  Carga de documentos → Fragmentación → Generación de embeddings → Almacenamiento en ChromaDB

Fase de consulta:
  Pregunta del usuario → Embedding de consulta → Búsqueda vectorial → Generación de respuesta + Citas

Requisitos

Instalación

# Clonar el repositorio
git clone <url-del-repositorio>
cd memoria-rag

# Instalar dependencias
pip install -r requirements.txt

# Configurar la API Key
cp .env.example .env
# Editar .env y añadir tu GEMINI_API_KEY

Uso

Uso básico

from memoria_rag import MemoriaRAG

# Inicializar
rag = MemoriaRAG(api_key="tu-api-key")

# Indexar documentos (una sola vez)
rag.ingest("./documentos/")

# Consultar
response = rag.query("¿Cuál es el procedimiento?")
print(response['answer'])
for source in response['sources']:
    print(f"Fuente: {source['filename']}")

Modo interactivo

python ejemplo_uso.py

Comandos disponibles en modo interactivo:

Comando Descripción
stats Ver estadísticas del índice
buscar: <consulta> Buscar sin generar respuesta
indexar: <ruta> Indexar nuevos documentos
salir Salir del modo interactivo

Formatos soportados

  • Texto plano: .txt, .md, .csv, .log, .json, .xml
  • PDF (extracción página a página)
  • Word (.docx)
  • Excel (.xlsx)
  • HTML

Configuración

Los parámetros se pueden ajustar a través de RAGConfig:

Parámetro Valor por defecto Descripción
embedding_model models/text-embedding-004 Modelo de embeddings de Gemini
generation_model gemini-2.5-flash Modelo de generación de respuestas
chunk_size 1000 Tamaño de fragmento en caracteres
chunk_overlap 200 Solapamiento entre fragmentos
top_k 5 Fragmentos recuperados por consulta
similarity_threshold 0.7 Umbral mínimo de relevancia
persist_directory ./chroma_db Directorio de almacenamiento de ChromaDB
batch_size 100 Documentos por lote de procesamiento

Estructura del proyecto

memoria-rag/
├── memoria_rag.py       # Implementación principal
├── ejemplo_uso.py       # Ejemplo de uso con modo interactivo
├── requirements.txt     # Dependencias
└── .env.example         # Plantilla de configuración

Autor

Joaquín Ruiz - Febrero 2026

About

🚀 Production-ready RAG pipeline capable of ingesting massive datasets (2GB+) using Python Generators (Lazy Loading) and ChromaDB. Avoid OOM errors and hallucinations.

Resources

Stars

17 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages