Proyecto de Retrieval-Augmented Generation (RAG) construido desde cero en Python, sin frameworks de abstracción, con el objetivo de mostrar cómo funciona internamente un sistema de recuperación semántica. Incluye backend con FastAPI, generación de embeddings, persistencia local y un frontend simple tipo chat.
- Lee documentos
.txtque se encuentren en la carpeta "Data" - Divide el texto en chunks
- Genera embeddings con un modelo preentrenado
- Guarda los vectores en disco (JSON)
- Permite hacer consultas semánticas
- Devuelve los chunks más relevantes (top-k)
- Interfaz web simple para interactuar
-
Ingesta
- Lee archivos desde
data/ - Divide el texto en chunks de tamaño fijo
- Ajusta cortes para no romper palabras
- Lee archivos desde
-
Embeddings
- Usa
sentence-transformers(all-MiniLM-L6-v2) - Convierte texto en vectores numéricos
- Usa
-
Almacenamiento
- Guarda embeddings en
vector_store/data.json
- Guarda embeddings en
-
Retrieval
- Convierte la query en embedding
- Calcula similitud (cosine similarity)
- Ordena resultados y devuelve los más relevantes
pip install -r requirements.txt
uvicorn main:app --reload
1. Agregar archivos .txt en la carpeta data/
2. Ingestar documentos desde Swagger: POST /ingest
3. Consultar: GET /query?query=tu_pregunta&top_k=3
## Nota
El archivo `vector_store/data.json` no se incluye en el repositorio.
Para generar los embeddings, ejecutar el endpoint `/ingest`.
## Frontend
1. cd frontend
2. python -m http.server 5500
3. Abrir en el navegador: http://127.0.0.1:5500
4. Interfaz tipo chat que consulta la API y muestra los resultados.