⏱ Tiempo estimado: 24 minutos
🎯 Rama / Perfil: Desarrolladores / personas que quieren crear asistentes basados en documentación propia
🧠 Conocimiento previo necesario: Conceptos básicos de IA generativa y Python. El tutorial anterior ayuda, pero puedes realizar este de forma independiente.
💡 ¿Qué vas a lograr? Construirás un mini sistema RAG capaz de buscar información relevante en documentos y entregársela al modelo antes de responder.
Idea clave: RAG significa Retrieval-Augmented Generation. En lugar de esperar que el modelo conozca tus documentos, construyes un mecanismo de búsqueda que recupera información relevante y se la proporciona al modelo.Los embeddings convierten texto en vectores numéricos donde textos semánticamente relacionados quedan próximos entre sí. Esto permite utilizarlos para búsqueda, clasificación y recomendaciones.
🛠 Lo que necesitas antes de empezar
- Python 3.10+ → 🔗 Python oficial
- OpenAI API → 🔗 Documentación oficial
- Embeddings de OpenAI → 🔗 Documentación oficial
- ChromaDB → 🔗 Sitio oficial
- Un documento pequeño con información de soporte.
Por ejemplo:
politicas.txt
con:
DEVOLUCIONES
Los clientes pueden solicitar una devolución
dentro de los primeros 30 días.
El producto debe estar sin señales de uso.
El reembolso se realiza después de verificar
el estado del producto.
📋 Pasos
Paso 1 — Entiende el flujo que vas a construir
No vamos a enviar todo el documento al modelo.
Construiremos:
┌── Documento
│
▼
Fragmentos
│
▼
Embeddings
│
▼
Base vectorial
│
│
Pregunta ────────┘
│
▼
Búsqueda semántica
│
▼
Fragmentos relevantes
│
▼
OpenAI
│
▼
Respuesta
Esto es un RAG básico.
La diferencia respecto al tutorial anterior es importante:
Tutorial 1:
Aplicación → consulta datos → IA
Tutorial 2:
Aplicación → busca conocimiento relevante → IA
Paso 2 — Instala las herramientas
Crea un nuevo entorno:
mkdir soporte-rag
cd soporte-rag
python -m venv .venv
source .venv/bin/activate
Instala:
pip install openai chromadb python-dotenv
Chroma está diseñado precisamente para almacenar y consultar información utilizando embeddings.
Crea:
soporte-rag/
├── .venv/
├── .env
├── documentos/
│ └── politicas.txt
└── main.py
Paso 3 — Divide el documento en fragmentos
No guardes todo el documento como una única pieza.
Por ejemplo:
Fragmento 1
-----------
Los clientes pueden solicitar una devolución
dentro de los primeros 30 días.
Fragmento 2
-----------
El producto debe estar sin señales de uso.
Fragmento 3
-----------
El reembolso se realiza después de verificar
el estado del producto.
¿Por qué?
Porque si el usuario pregunta:
"¿Cuántos días tengo para devolver un producto?"
solo necesitas recuperar el fragmento relacionado.
Este concepto se conoce como chunking.
En sistemas RAG reales, elegir bien el tamaño de los fragmentos es una decisión importante porque afecta directamente qué información se recupera.
Paso 4 — Convierte los fragmentos en embeddings
Ahora utiliza:
text-embedding-3-small
para convertir cada fragmento en un vector.
Conceptualmente:
"Los clientes pueden solicitar..."
↓
embedding
↓
[0.012, -0.084, 0.221, ...]
Haz lo mismo con cada fragmento.
OpenAI documenta text-embedding-3-small y text-embedding-3-large como modelos actuales de embeddings, utilizados para convertir texto en vectores y habilitar búsquedas semánticas.
Paso 5 — Guarda los embeddings en Chroma
Crea una colección:
politicas_soporte
y almacena:
ID
Texto
Embedding
Metadata
Por ejemplo:
ID: politica_001
Texto:
Los clientes pueden solicitar una devolución
dentro de los primeros 30 días.
Metadata:
tipo = devolucion
La metadata parece un detalle pequeño, pero posteriormente permite hacer búsquedas más controladas.
Por ejemplo:
tipo = devolucion
o:
tipo = garantia
Paso 6 — Haz una búsqueda semántica
Ahora llega la pregunta:
¿Cuántos días tengo para devolver mi producto?
Primero conviertes la pregunta en un embedding.
Después Chroma busca los vectores más cercanos.
Resultado:
1. "Los clientes pueden solicitar una devolución
dentro de los primeros 30 días."
2. "El producto debe estar sin señales de uso."
La búsqueda no depende necesariamente de encontrar exactamente las mismas palabras.
Por ejemplo:
Pregunta:
"¿Cuánto tiempo tengo para regresar algo?"
Documento:
"Los clientes pueden solicitar una devolución
dentro de los primeros 30 días."
Aunque las palabras sean diferentes, el significado es similar.
Eso es precisamente lo que aporta el embedding.
Paso 7 — Entrégale únicamente el contexto recuperado a OpenAI
Finalmente construye:
CONTEXTO:
Los clientes pueden solicitar una devolución
dentro de los primeros 30 días.
PREGUNTA:
¿Cuánto tiempo tengo para regresar algo?
Y establece una regla clara:
Responde utilizando únicamente el contexto proporcionado.
Si la información necesaria no está en el contexto,
indica que no tienes información suficiente.
El flujo final será:
Pregunta
↓
Embedding de pregunta
↓
Chroma
↓
Top resultados
↓
Contexto
↓
OpenAI
↓
Respuesta
Prueba:
¿Cuánto tiempo tengo para devolver un producto?
Deberías obtener algo equivalente a:
"Tienes 30 días para solicitar una devolución."
Ahora prueba:
¿Puedo devolverlo después de 6 meses?
El sistema debería evitar inventar una política porque ese dato no está en los documentos.
✅ Resultado esperado
Tendrás un pequeño sistema RAG funcional:
documentos/
↓
fragmentación
↓
embeddings
↓
ChromaDB
↓
búsqueda semántica
↓
contexto relevante
↓
OpenAI
↓
respuesta
Ya no tienes simplemente un chatbot.
Tienes el núcleo de un sistema de preguntas y respuestas sobre una base de conocimiento propia.
🔥 Tu reto
Cambia politicas.txt por documentación real de uno de tus proyectos.
Por ejemplo:
docs/
├── instalacion.md
├── api.md
├── configuracion.md
├── preguntas_frecuentes.md
└── politicas.md
Después intenta que el sistema responda preguntas como:
¿Cómo instalo el proyecto?
¿Qué pasa si pierdo mi API key?
¿Qué endpoints existen?
¿Cómo configuro PostgreSQL?
El siguiente salto sería convertir esto en:
┌── Documentación
├── Base de datos
Usuario ──► API ├── APIs externas
└── Herramientas
│
▼
IA
Ahí empiezas a acercarte a un asistente de IA realmente integrado con una aplicación, no solamente a un chatbot.
📚 Recursos para ir más lejos
- OpenAI — Embeddings — Documentación oficial sobre embeddings y búsqueda semántica.
- Chroma — Base de datos/vector store orientada a aplicaciones de IA.
- FastAPI — Para convertir el RAG en una API consumible por un frontend u otras aplicaciones.
Curso de Inteligencia Artificial para Servicio al Cliente
COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

