Tabla comparativa
Vista de pájaro
Sección titulada «Vista de pájaro»Antes de leer 4 capítulos individuales, esta tabla. Si tu caso encaja claro con uno, podés saltearte los otros tres y pasar directo al cap 07 (mismo input → outputs reales) y al 09 (¿cuál elegir?).
| Eje | Vercel AI SDK | LangChain.js | LlamaIndex.TS | Mastra |
|---|---|---|---|---|
| DX | A | C | B | B |
| Tipos (TS strict) | A | C | C | B |
| Velocidad (latencia base) | A | A | B | C |
| Ecosistema (integraciones) | C | A | B | C |
| LOC mínimo (un query end-to-end) | 21 | 15 | 15 | 13 |
| Target audience | minimalismo + control | ”lo quiero todo en una lib” | RAG-first | agentes + workflow |
Escala A/B/C/D: A es lo mejor en su columna, D sería lo peor. Ningún framework saca D en ningún eje — los 4 son utilizables. Las diferencias son trade-offs, no defectos.
Cómo leer cada eje
Sección titulada «Cómo leer cada eje»DX (developer experience)
Sección titulada «DX (developer experience)»Cuán rápido y placentero es escribir código nuevo. Mide cosas concretas:
- ¿Tu IDE te autocompleta bien?
- ¿Los errores son entendibles?
- ¿La documentación tiene ejemplos del caso simple?
- ¿Cuándo algo falla, sabés dónde mirar?
Vercel AI SDK = A: API mínima, nombres claros, errores explícitos. LangChain.js = C: muchos conceptos abstractos (Runnables, Chains, LCEL), errores que requieren saber el internals para debuggear.
Tipos (TS strict-friendly)
Sección titulada «Tipos (TS strict-friendly)»Qué tan bien funciona tu RAG con tsconfig.strict = true y noUncheckedIndexedAccess.
Vercel AI SDK = A: tipos limpios, generics bien usados, casi cero any en surface.
LangChain.js / LlamaIndex.TS = C: ambos tienen any o unknown en lugares donde tu código tiene que castear. Para evals tuvimos que hacer workarounds para acceder a contextos.
Velocidad (latencia base)
Sección titulada «Velocidad (latencia base)»Latencia del path base sin optimizaciones (sin caché, sin reranker). Promedio sobre las 12 preguntas del golden set.
Vercel AI SDK / LangChain.js = A (~1800-2000 ms con llama3.2:3b).
LlamaIndex.TS = B (~2200 ms — un poco más por capas de abstracción).
Mastra = C (~2400 ms en el path Naive — bookkeeping interno extra).
Ecosistema (integraciones, providers)
Sección titulada «Ecosistema (integraciones, providers)»Cuántas baterías incluidas tiene el framework.
LangChain.js = A: docenas de vector stores, providers de LLM, document loaders, retrievers, integraciones con servicios (Slack, Notion, Confluence, etc.). Si necesitás conectar con algo raro, casi seguro tiene módulo. LlamaIndex.TS = B: ecosistema rico para RAG específicamente (índices avanzados, document agents, knowledge graphs). Vercel AI SDK / Mastra = C: minimalistas. Los providers de LLM/embedder están cubiertos pero el resto lo construís vos.
LOC mínimo (un query end-to-end)
Sección titulada «LOC mínimo (un query end-to-end)»Líneas de código de un script que: lee la pregunta, embedea, retrievea, genera, imprime. Sin imports, sin comentarios.
| Framework | LOC | Por qué |
|---|---|---|
| Vercel AI SDK | 21 | Componés cada paso. Más LOC, más control. |
| LangChain.js | 15 | LCEL pipeline reduce verbosidad. |
| LlamaIndex.TS | 15 | index.asQueryEngine().query() colapsa stages. |
| Mastra | 13 | El más conciso. Costo: más magia. |
LOC no es bondad. Más cortó != mejor. La pregunta real: cuando algo falla, ¿cuántas líneas tenés que leer para entender qué pasó? Las 21 líneas de Vercel se leen en orden, las 13 de Mastra requieren entender qué hace Agent.generate() por dentro.
Target audience
Sección titulada «Target audience»A quién está pensado el framework. No es ranking — es match.
- Vercel AI SDK apunta a equipos que prefieren control granular y tipos limpios. Si tu equipo migra a edge, este. Si querés implementar tus propios retrievers (Nivel 3), este.
- LangChain.js apunta a equipos que necesitan moverse rápido con muchas integraciones pre-armadas. Si tu RAG conecta con SharePoint + Confluence + Slack + Postgres, este.
- LlamaIndex.TS apunta a equipos donde RAG es el centro del producto. Si querés graph indexes, document agents, summary indexes con poco esfuerzo, este.
- Mastra apunta a equipos donde RAG es uno de varios tools dentro de un agente. Si tu chatbot tiene RAG + búsqueda web + APIs propias + memoria persistente, este.
El disclaimer obligatorio
Sección titulada «El disclaimer obligatorio»Los puntajes son cualitativos. Para métricas duras (faithfulness, retrieval@k, latencia mediana), el cap 08 te muestra los números reales del harness side-by-side. Lo que ves acá es DX y trade-offs estructurales, no benchmark.
Y ojo: en software, “mejor” siempre es relativo a tu caso. La tabla te da una orientación; la decisión final pasa por:
- Tu equipo: ¿qué framework conoce o quiere aprender?
- Tu caso: ¿el RAG es el centro o un componente?
- Tu corpus: ¿necesitás integraciones específicas?
- Tu deploy target: ¿edge, serverless, container, dedicated?
Lo que viene
Sección titulada «Lo que viene»Los 4 análisis individuales con el mismo template: filosofía, snippets de código real, tipos, brilla/sufre. Empezamos por el minimalista — Vercel AI SDK.