Construí un Sistema RAG de Producción por $5/mes (La Mayoría de Alternativas Cuestan $100-200+)
Publicación original por @dannwaneri en dev.to
Repositorio: GitHub - dannwaneri/vectorize-mcp-worker
TL;DR
Implementé un sistema de búsqueda semántica en el edge de Cloudflare que cuesta $5-10/mes en lugar de los típicos $100-200+. Es más rápido, sigue patrones de arquitectura MCP componible empresarial, y maneja tráfico de producción. Así es cómo.
El Problema: La Búsqueda con IA es Cara
El mes pasado, revisé los costos típicos de infraestructura de IA y me di cuenta de por qué tantas startups luchan para agregar búsqueda semántica.
Stack RAG tradicional (para ~10,000 búsquedas/mes):
- Base de datos vectorial Pinecone: $50-70/mes (plan Standard mínimo)
- API de embeddings de OpenAI: $30-50/mes (basado en uso)
- Servidor AWS EC2 (t3.medium): $35-50/mes
- Monitoreo/logging: $15-20/mes
Total: $130-190/mes para una característica que debería ser estándar.
¿Para una startup bootstrapped intentando agregar “búsqueda potenciada por IA” a su documentación? Eso es $1,560-2,280/año antes de haber ganado un solo dólar con la característica.
Algo tenía que cambiar.
La Hipótesis: ¿Y Si Todo Se Ejecutara en el Edge?
Había estado construyendo servidores MCP en Cloudflare Workers (escribí sobre ello aquí), y seguía pensando: ¿Por qué RAG no puede ejecutarse completamente en el edge?
La configuración tradicional tiene demasiados saltos:
Usuario → Servidor de Aplicación → OpenAI (embeddings) → Pinecone (búsqueda) → Usuario
Cada salto agrega latencia. Cada servicio agrega costo.
¿Y si pudiéramos hacer esto en su lugar:
Usuario → Edge de Cloudflare (embeddings + búsqueda + respuesta) → Usuario
Todo en un lugar. Sin viajes de ida y vuelta. Sin servidores inactivos quemando dinero.
La Arquitectura: Colocar Todo Junto
Esto es lo que construí:
Vectorize MCP Worker - Un único Cloudflare Worker que maneja:
- Generación de embeddings (Workers AI)
- Búsqueda vectorial (Vectorize)
- Formateo de resultados (en-worker)
- Autenticación (integrada)
Todo el stack se ejecuta en el edge de Cloudflare en 300+ ciudades globalmente.
Stack Técnico
- Workers AI: modelo
bge-small-en-v1.5(embeddings de 384 dimensiones) - Vectorize: base de datos vectorial gestionada de Cloudflare (indexación HNSW)
- TypeScript: seguridad de tipos completa
- API HTTP: funciona desde cualquier lugar
Código Principal (Simplificado)
Endpoint de búsqueda:
async function searchIndex(query: string, topK: number, env: Env) {
const startTime = Date.now();
// Generar embedding (se ejecuta en-edge)
const embeddingStart = Date.now();
const embedding = await env.AI.run("@cf/baai/bge-small-en-v1.5", {
text: query,
});
const embeddingTime = Date.now() - embeddingStart;
// Buscar vectores (también en-edge)
const searchStart = Date.now();
const results = await env.VECTORIZE.query(embedding, {
topK,
returnMetadata: true,
});
const searchTime = Date.now() - searchStart;
return {
query,
results: results.matches,
performance: {
embeddingTime: `${embeddingTime}ms`,
searchTime: `${searchTime}ms`,
totalTime: `${Date.now() - startTime}ms`
}
};
}
Eso es todo. Sin orquestación compleja. Sin malla de servicios. Solo Workers AI + Vectorize.
Arquitectura MCP Componible en la Práctica
Las discusiones recientes sobre MCP empresarial (la excelente serie de Workato) destacan que la mayoría de implementaciones fallan al exponer APIs crudas en lugar de habilidades componibles.
El Problema con Implementaciones MCP Ingenuas
Muchos equipos construyen servidores MCP envolviendo APIs existentes:
get_guest_by_emailget_booking_by_guestcreate_payment_intentcharge_payment_methodsend_receipt_email- … 47 herramientas en total
El LLM debe orquestar 6+ llamadas API por tarea. Resultado: lento, propenso a errores, UX terrible.
El Enfoque Componible
En su lugar, este worker expone habilidades de alto nivel alineadas con la intención del usuario:
semantic_search- Encontrar información relevanteintelligent_search- Búsqueda con síntesis de IA
Una llamada de herramienta. Resultado completo. El backend maneja toda la complejidad.
Los 9 Patrones Empresariales
Esta implementación sigue 8 de 9 patrones MCP empresariales recomendados:
1. Identificadores de Negocio Sobre IDs de Sistema
// Los usuarios buscan con lenguaje natural
{ "query": "¿Cómo funciona la computación en el edge?" }
// No con IDs de base de datos
{ "vector_id": "a0I8d000001pRmXEAU" }
2. Operaciones Atómicas
Una llamada de herramienta maneja todo el flujo de trabajo:
- Generar embedding (Workers AI)
- Buscar vectores (Vectorize)
- Formatear resultados
- Devolver métricas de rendimiento
No se necesita orquestación multi-paso.
3. Valores Predeterminados Inteligentes
{
"query": "requerido",
"topK": "por defecto 5" // Reducir carga cognitiva
}
4. Autorización Integrada
// El modo de producción requiere clave API
// El modo dev permite pruebas sin autenticación
// Las herramientas se limitan automáticamente
if (env.API_KEY && !isAuthorized(request)) {
return new Response("Unauthorized", { status: 401 });
}
5. Documentación de Errores
Cada error incluye sugerencias accionables:
{
"error": "topK debe estar entre 1 y 20",
"hint": "Ajusta tu parámetro topK a un valor entre 1-20"
}
6. Rendimiento Observable
Cronometraje integrado para cada solicitud:
{
"performance": {
"embeddingTime": "142ms",
"searchTime": "223ms",
"totalTime": "365ms"
}
}
7. Alineación con Lenguaje Natural
Los nombres de herramientas coinciden con cómo la gente realmente habla:
- “Buscar X” →
semantic_search - No “query_vector_database_with_cosine_similarity”
8. Composición Defensiva
El endpoint /populate es idempotente - seguro de llamar múltiples veces.
Comparación de Benchmarks
Diseño componible empresarial (de benchmarks de Workato):
- Tiempo de respuesta: 2-4 segundos
- Tasa de éxito: 94%
- Herramientas necesarias: 12
- Llamadas por tarea: 1.8
Esta implementación:
- Tiempo de respuesta: 365ms (6-10x más rápido)
- Tasa de éxito: ~100% (determinista)
- Herramientas necesarias: 2 (mínimo)
- Llamadas por tarea: 1 (una sola)
La diferencia: implementación en edge + abstracción adecuada.
El Principio de Arquitectura
Siguiendo la guía de Workato:
“Deja que los LLMs manejen la intención, deja que los backends manejen la ejecución.”
Responsabilidades del LLM (No-determinista):
- Entender consultas de usuarios
- Seleccionar semantic_search vs intelligent_search
- Interpretar resultados para usuarios
Responsabilidades del Backend (Determinista):
- Generar embeddings de manera confiable
- Consultar vectores atómicamente
- Manejar errores elegantemente
- Asegurar rendimiento consistente
- Gestionar autenticación
Esta separación crea herramientas MCP confiables, rápidas y amigables con el usuario - no envoltorios de API frágiles.
Los Resultados: Mejor Y Más Barato
Rendimiento (Datos Reales de Producción)
Probé esto desde Port Harcourt, Nigeria al edge de Cloudflare el 23 de diciembre de 2024:
| Operación | Tiempo |
|---|---|
| Generación de embedding | 142ms |
| Búsqueda vectorial | 223ms |
| Formateo de respuesta | <5ms |
| Total | 365ms |
Nota: El rendimiento varía según la región y la carga. Estas son mediciones reales de la implementación en producción.
Análisis de Costos (Uso Real)
Para 10,000 búsquedas/día (300K/mes):
Mi Solución:
- Workers: ~$3/mes (basado en tiempo de CPU)
- Workers AI: ~$3-5/mes (a $0.011 por 1K neuronas)
- Vectorize: ~$2/mes (dimensiones de consulta)
- Total: $8-10/mes
Alternativas Tradicionales (estimado para el mismo volumen):
- Pinecone Standard: $50-70/mes (mínimo + uso)
- Weaviate Cloud: $25-40/mes (depende del almacenamiento)
- pgvector auto-hospedado: $40-60/mes (servidor + mantenimiento)
Ahorros: 85-95% dependiendo de la alternativa elegida.
El Nivel Gratuito es Generoso
El nivel gratuito de Cloudflare cubre:
- 100,000 solicitudes de Workers/día
- 10,000 neuronas de IA/día
- 30M consultas de Vectorize/mes
La mayoría de proyectos secundarios y pequeños negocios nunca salen del nivel gratuito.
Características de Producción (Porque No Es Solo una Demo)
1. Autenticación
// Clave API opcional para producción
if (env.API_KEY && !isAuthorized(request)) {
return new Response("Unauthorized", { status: 401 });
}
```Dev mode funciona sin autenticación. Producción la requiere. Simple.
### 2. Monitoreo de Rendimiento
Cada respuesta incluye tiempos:
```json
{
"query": "edge computing",
"results": [...],
"performance": {
"embeddingTime": "142ms",
"searchTime": "223ms",
"totalTime": "365ms"
}
}
No se necesita herramienta APM separada. Está integrada.
3. API Autodocumentada
Accede a GET / para la documentación completa de la API:
{
"name": "Vectorize MCP Worker",
"endpoints": {
"POST /search": "Buscar en el índice",
"POST /populate": "Agregar documentos",
"GET /stats": "Estadísticas del índice"
}
}
4. Soporte CORS
Preconfigurado para aplicaciones web. Funciona sin más.
Casos de Uso que He Visto Funcionar
Búsqueda de Documentación Interna
Startup de 50 personas con documentos dispersos en Notion, Google Docs, Confluence.
Antes: Búsqueda manual. Los empleados perdían 30 minutos/día buscando respuestas.
Después: La búsqueda semántica encuentra el documento correcto en segundos.
Costo: $5/mes (vs. $70 por Algolia DocSearch)
Base de Conocimientos de Soporte al Cliente
SaaS con 500 artículos de soporte.
Antes: La búsqueda por palabras clave perdía artículos relevantes.
Después: La búsqueda impulsada por IA sugiere coincidencias perfectas.
Costo: $10/mes (vs. $200+ para soluciones empresariales)
Asistente de Investigación
Académico con 1,000 PDFs.
Antes: Ctrl+F en archivos individuales.
Después: Consultar toda la biblioteca semánticamente.
Costo: $8/mes
Lo Que Aprendí
Lo Que Funcionó
1. La arquitectura edge-first es transformadora
Colocar todo en el edge eliminó saltos de red. La mejora de rendimiento es inmediata y medible.
2. El diseño de herramientas componibles supera a los wrappers de API
Exponer habilidades de alto nivel en lugar de APIs crudas hizo el sistema más rápido y confiable. El LLM se enfoca en la intención, no en la orquestación.
3. Los precios serverless lo cambian todo
Cuando no pagas por servidores inactivos, puedes experimentar libremente. ¿Lanzar el viernes y el uso se dispara? Sin problema. Se escala automáticamente.
4. HTTP simple supera a SDKs sofisticados
Sin conflictos de versiones. Sin infierno de dependencias. Solo curl o fetch. Funciona desde Python, Node, Go, lo que sea.
Lo Que Podría Mejorar
1. El desarrollo local es incómodo
Vectorize no funciona en wrangler dev. Tienes que desplegar para probar la búsqueda. Compensación: iteración rápida en todo lo demás, despliegue para pruebas completas.
2. Las actualizaciones de la base de conocimientos requieren redespliegue
Actualmente, editas el código y redespliegas. Futuro: API de carga dinámica. Compensación: seguridad vs. conveniencia.
3. 384 dimensiones podrían no ser suficientes para dominios especializados
El modelo bge-small-en-v1.5 es excelente para texto general. Los dominios médicos o legales podrían beneficiarse de modelos más grandes. Compensación: velocidad vs. precisión.
Detalles de Comparación de Costos
Metodología: Todos los costos estimados para 10,000 búsquedas/día (300K/mes) con 10,000 vectores almacenados a 384 dimensiones.
| Solución | Costo Mensual | Notas |
|---|---|---|
| Este Worker | $8-10 | Tarifas publicadas de Cloudflare |
| Pinecone Standard | $50-70 | Mínimo $50 + uso |
| Weaviate Serverless | $25-40 | Precios basados en uso |
| Autohospedado + pgvector | $40-60 | Servidor + mantenimiento |
Precios a partir de diciembre de 2024. Tus costos reales pueden variar según los patrones de uso.
Cómo Desplegar Esto Tú Mismo
Es código abierto: GitHub - dannwaneri/vectorize-mcp-worker
Configuración en 5 minutos:
# Clonar
git clone https://github.com/dannwaneri/vectorize-mcp-worker
cd vectorize-mcp-worker
npm install
# Crear índice vectorial
wrangler vectorize create mcp-knowledge-base --dimensions=384 --metric=cosine
# Desplegar
wrangler deploy
# Establecer clave API para producción
openssl rand -base64 32 | wrangler secret put API_KEY
# Poblar con tus datos
curl -X POST https://your-worker.workers.dev/populate \
-H "Authorization: Bearer YOUR_KEY"
# Buscar
curl -X POST https://your-worker.workers.dev/search \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "tu pregunta", "topK": 3}'
Demo en vivo: https://vectorize-mcp-worker.fpl-test.workers.dev
El Caso de Negocio
Si eres:
Fundador de startup: Deja de pagar de más por infraestructura de IA. Despliega esto por $5/mes y enfoca tu presupuesto en características que te diferencien.
Consultor/Agencia: Ahora puedes incluir rentablemente búsqueda de IA en proyectos de precio fijo. Sin dolores de cabeza de infraestructura para gestionar.
Equipo empresarial: Despliega búsqueda por departamento sin obtener aprobación de presupuesto por $1,500+/año por equipo.
Constructor de Servidor MCP: Usa esto como implementación de referencia para diseño de herramientas componibles que sigue mejores prácticas empresariales.
La economía tiene sentido. Lo que solía requerir una partida presupuestaria es ahora más barato que el presupuesto de café diario de tu equipo.
¿Cómo Se Compara con Alternativas?
vs. BDs Vectoriales Gestionadas (Pinecone, Weaviate)
Cuándo usar esto: Necesitas reducir costos 90%+ manteniendo rendimiento
Cuándo usarlas: Necesitas características empresariales como espacios de nombres, RBAC, etc.
vs. Búsqueda Semántica Gestionada (Anvitra, Algolia)
Cuándo usar esto: Quieres control de infraestructura, soberanía de datos, código abierto
Cuándo usarlas: Quieres servicio gestionado sin operaciones con optimización de dominio
vs. Construir desde Cero
Cuándo usar esto: Necesitas patrones MCP listos para producción en 5 minutos
Cuándo usarlos: Tienes requisitos únicos que requieren arquitectura personalizada
Diferentes herramientas resuelven diferentes problemas. Este worker está optimizado para:
- Infraestructura autohospedada
- Costos transparentes y predecibles
- Patrones MCP componibles empresariales
- Personalización completa (código abierto)
Qué Viene Después
Estoy trabajando en:
- API de carga de documentos dinámica (sin cambios de código necesarios)
- Chunking semántico para documentos largos
- Soporte multimodal (imágenes, tablas)
- Suite de pruebas completa
Y estoy ayudando a algunas empresas a desplegar esto para sus casos de uso. Si estás gastando $100+/mes en búsqueda de IA o construyendo servidores MCP, hablemos.
Conecta
- GitHub: @dannwaneri
- Upwork: Perfil
- Twitter: @dannwaneri
¿Preguntas? ¿Comentarios? ¿También construyes herramientas MCP componibles? Déjalos abajo.
Y si te resultó útil, dale una estrella al repositorio: GitHub - dannwaneri/vectorize-mcp-worker
Relacionado: MCP Sampling en Cloudflare Workers - Cómo construir herramientas MCP inteligentes sin gestionar LLMs
Por Qué Edge Computing Me Obligó a Escribir Mejor Código - La función de fuerza económica detrás de esta arquitectura
Inspirado por: Más Allá del MCP Básico: Por Qué la IA Empresarial Necesita Arquitectura Componible y Diseño de Herramientas Componibles para MCP Empresarial
