Una de las limitaciones más frustrantes de los modelos de lenguaje es que no saben nada sobre tu empresa específica. No conocen tus políticas internas, no tienen acceso a tu base de clientes, no saben cómo funciona tu proceso de aprobación de gastos. Retrieval Augmented Generation (RAG) es la técnica que resuelve exactamente este problema, y en este artículo te explicamos cómo implementarla correctamente.
RAG vs Fine-tuning: la decisión fundamental
Antes de entrar en la implementación, hay que responder la pregunta que muchos equipos hacen primero: ¿debería hacer fine-tuning de un modelo con mis datos o usar RAG?
Fine-tuning modifica los pesos del modelo con ejemplos específicos. Es útil para cambiar el estilo de respuesta, enseñar formatos particulares o adaptar el comportamiento general. Sus limitaciones: es costoso, requiere datos de entrenamiento curados, el conocimiento queda "congelado" en el modelo y actualizarlo implica un nuevo ciclo de entrenamiento.
RAG no modifica el modelo. En cambio, recupera dinámicamente información relevante de tu base de conocimiento y la incluye en el contexto de cada consulta. Sus ventajas: el conocimiento se actualiza simplemente actualizando los documentos fuente, no requiere datos de entrenamiento, y es mucho más económico.
Para el 95% de los casos de uso empresariales donde el objetivo es que la IA responda con información interna, RAG es la respuesta correcta.
La arquitectura de RAG explicada
Un sistema RAG tiene tres componentes principales:
1. Ingesta de documentos
Los documentos de tu empresa (PDFs, Word, páginas web internas, bases de datos) se procesan y se dividen en fragmentos más pequeños llamados "chunks". Cada chunk se convierte en un vector numérico (embedding) que captura su significado semántico.
2. Base de datos vectorial
Los embeddings se almacenan en una base de datos especializada en búsqueda por similitud semántica. Cuando alguien hace una pregunta, la pregunta también se convierte en un embedding y se buscan los chunks más similares.
3. Generación aumentada
Los chunks más relevantes se incluyen en el prompt junto con la pregunta original, dándole al LLM el contexto necesario para responder con información específica de tu empresa.
[Pregunta del usuario] + [Chunks relevantes recuperados] → [Respuesta del LLM]
Embeddings: la clave que todo el mundo simplifica
Un embedding es una representación numérica de texto en un espacio de alta dimensión donde textos con significado similar están cerca entre sí. Esto permite encontrar "¿cuántos días tengo para reclamar una garantía?" aunque los documentos usen la frase "plazo de garantía: 30 días".
Los modelos de embedding más usados:
- text-embedding-3-small (OpenAI): Excelente relación costo-calidad para español
- text-embedding-3-large (OpenAI): Mayor precisión, mayor costo
- all-MiniLM-L6-v2 (Sentence Transformers): Open-source, deployable localmente
Para contenido en español latinoamericano, hemos encontrado que text-embedding-3-small de OpenAI funciona bien. Los modelos open-source requieren más experimentación pero son viables.
Bases de datos vectoriales: comparativa
pgvector (PostgreSQL)
La extensión más simple de adoptar si ya usas PostgreSQL. Excelente para empezar y para volúmenes moderados (hasta algunos millones de vectores). No requiere nueva infraestructura.
-- Activar extensión
CREATE EXTENSION vector;
-- Crear tabla con columna vectorial
CREATE TABLE documentos (
id SERIAL PRIMARY KEY,
contenido TEXT,
fuente VARCHAR(500),
embedding vector(1536)
);
-- Índice para búsqueda rápida
CREATE INDEX ON documentos USING ivfflat (embedding vector_cosine_ops);
Pinecone
Servicio cloud especializado. Muy fácil de usar, escala automáticamente. Costo puede ser alto a volumen. Buena opción cuando pgvector no es suficiente.
Chroma
Base de datos vectorial open-source, ideal para desarrollo y prototipado. Simple de configurar localmente.
Estrategias de chunking
La forma en que divides los documentos tiene un impacto enorme en la calidad de las respuestas.
Chunking fijo (fixed-size)
Divides por número de tokens, con overlap entre chunks. Simple de implementar pero puede cortar ideas a la mitad.
Chunking semántico
Divides en párrafos o secciones lógicas. Mejor para documentos estructurados.
Chunking jerárquico
Mantienes jerarquía: el documento padre + los chunks hijos. Útil para documentos legales o técnicos donde el contexto del documento importa.
Para documentos corporativos típicos (políticas, manuales, FAQs), recomendamos chunks de 512-800 tokens con overlap de 100 tokens.
Ejemplo completo de pipeline RAG en Python
from openai import OpenAI
import psycopg2
import numpy as np
client = OpenAI()
def get_embedding(text: str) -> list[float]:
"""Genera embedding para un texto."""
response = client.embeddings.create(
model="text-embedding-3-small",
input=text
)
return response.data[0].embedding
def buscar_documentos_relevantes(
pregunta: str,
conn,
limite: int = 5
) -> list[dict]:
"""Busca los chunks más relevantes para una pregunta."""
embedding_pregunta = get_embedding(pregunta)
cursor = conn.cursor()
cursor.execute("""
SELECT contenido, fuente,
1 - (embedding <=> %s::vector) AS similitud
FROM documentos
ORDER BY embedding <=> %s::vector
LIMIT %s
""", (embedding_pregunta, embedding_pregunta, limite))
resultados = cursor.fetchall()
return [
{"contenido": r[0], "fuente": r[1], "similitud": r[2]}
for r in resultados
if r[2] > 0.75 # Umbral de relevancia mínima
]
def responder_con_contexto(
pregunta: str,
documentos: list[dict]
) -> str:
"""Genera respuesta usando los documentos recuperados."""
if not documentos:
return "No encontré información relevante en la base de conocimiento."
contexto = "\n\n".join([
f"[Fuente: {d['fuente']}]\n{d['contenido']}"
for d in documentos
])
respuesta = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "system",
"content": """Eres el asistente interno de la empresa.
Responde SOLO basándote en la información proporcionada.
Si no tienes suficiente información, dilo claramente."""
},
{
"role": "user",
"content": f"""Contexto de la empresa:
{contexto}
Pregunta: {pregunta}"""
}
],
temperature=0.1
)
return respuesta.choices[0].message.content
Casos de uso reales que implementamos
Chatbot de RR.HH.
Para una empresa con 300 empleados en Colombia, implementamos un chatbot que responde preguntas sobre políticas de vacaciones, permisos, beneficios y procedimientos internos. Los empleados pueden preguntar en lenguaje natural y obtener respuestas precisas basadas en el manual del empleado actualizado.
Resultado: Reducción del 60% en consultas al departamento de RR.HH. por preguntas administrativas.
Búsqueda en catálogo de productos
Una distribuidora con más de 50,000 SKUs implementó RAG para que los vendedores puedan hacer preguntas como "¿qué cable USB-C soporta carga de 100W y viene en negro?" y obtener los productos exactos del catálogo.
Asistente de políticas y compliance
Para una firma financiera en México, el equipo legal usa RAG para consultar el extenso manual de compliance regulatorio. Lo que antes tomaba horas de búsqueda manual ahora toma segundos.
Costos estimados
Para una base de conocimiento de 1,000 documentos (aproximadamente 500 páginas):
- Generación de embeddings (una vez): ~$0.50 con text-embedding-3-small
- Operación mensual (1,000 consultas/día): ~$15-50 dependiendo del modelo LLM
Para 10,000 documentos y volumen mayor, los costos escalan, pero siguen siendo órdenes de magnitud menores que el costo humano equivalente.
Pitfalls comunes
Chunks demasiado pequeños: Pierdes contexto. Una respuesta de un contrato necesita el contexto de la cláusula completa.
Chunks demasiado grandes: Incluyes información irrelevante que confunde al modelo.
Sin umbral de relevancia: Si no filtras por similitud mínima, el modelo recibirá contexto irrelevante y fabricará respuestas.
No actualizar los embeddings: Cuando actualizas un documento, debes regenerar sus embeddings. Sin esto, las respuestas quedan desactualizadas.
Conclusión: RAG es la puerta de entrada a la IA empresarial
Retrieval Augmented Generation es la tecnología que hace que los LLMs sean útiles en contextos empresariales reales. No requiere datos de entrenamiento, se actualiza fácilmente y los costos son accesibles para empresas medianas.
Si tienes conocimiento corporativo valioso disperso en documentos que nadie consulta, RAG puede convertirlo en un activo activo y accesible para todo tu equipo.
En Alternetica hemos implementado sistemas RAG para clientes en múltiples industrias en LATAM. Contáctanos para explorar cómo esta tecnología puede aplicarse a tu caso de uso específico.