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)".
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.
- 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.
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
- Python 3.10+
- Una API Key de Google Gemini
# 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_KEYfrom 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']}")python ejemplo_uso.pyComandos 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 |
- Texto plano:
.txt,.md,.csv,.log,.json,.xml - PDF (extracción página a página)
- Word (
.docx) - Excel (
.xlsx) - HTML
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 |
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
JoaquÃn Ruiz - Febrero 2026
