Saltar al contenido principal

Capítulo 3: Selección del Modelo de Embedding Adecuado

Introducción​

Seleccionar el modelo de embedding adecuado depende de sus requisitos específicos: calidad, costo, latencia, soporte de idiomas y restricciones de despliegue.

Marco de Decisión​

Benchmarks MTEB​

El Massive Text Embedding Benchmark (MTEB) es el estándar para comparar modelos de embedding:

Tabla de Clasificación (Mejores Modelos)​

PuestoModeloPuntaje PromedioDimensiones
1text-embedding-3-large64.593072
2Cohere embed-v364.471024
3BGE-large-en-v1.564.231024
4E5-large-v262.251024
5text-embedding-3-small62.261536

Rendimiento por Tarea​

ModeloRecuperaciónSTSClasificación
text-embedding-3-large59.265.471.2
Cohere embed-v358.964.870.1
BGE-large57.863.969.5

Análisis de Costos​

Por Millón de Tokens​

def calculate_monthly_cost(
docs_per_month: int,
avg_tokens_per_doc: int,
model: str
):
prices = {
"text-embedding-3-small": 0.02,
"text-embedding-3-large": 0.13,
"cohere-embed-v3": 0.10,
"self-hosted": 0.0 # Infrastructure costs separate
}

total_tokens = docs_per_month * avg_tokens_per_doc
millions = total_tokens / 1_000_000

return millions * prices[model]

# Example: 1M documents, 500 tokens each
cost = calculate_monthly_cost(1_000_000, 500, "text-embedding-3-small")
# Result: $10/month for embedding

Comparación de Costos Totales​

EscalaOpenAI SmallOpenAI LargeSelf-Hosted
100K docs$1$6.50~$50/mes (infra)
1M docs$10$65~$100/mes
10M docs$100$650~$200/mes

Consideraciones de Latencia​

Latencia de API​

ModeloLatencia PromedioLatencia P99
text-embedding-3-small50ms150ms
text-embedding-3-large80ms200ms
Cohere embed-v360ms180ms
Self-hosted (GPU)10ms30ms

Estrategia de Batching​

import asyncio
from openai import AsyncOpenAI

client = AsyncOpenAI()

async def batch_embed(texts, batch_size=100):
"""Efficient batching for large datasets"""
embeddings = []

for i in range(0, len(texts), batch_size):
batch = texts[i:i + batch_size]
response = await client.embeddings.create(
input=batch,
model="text-embedding-3-small"
)
embeddings.extend([e.embedding for e in response.data])

return embeddings

Soporte de Idiomas​

Modelos Multilingües​

ModeloIdiomasCalidad
text-embedding-3100+Excelente
Cohere multilingual100+Excelente
BGE-m3100+Excelente
paraphrase-multilingual50+Buena

Específicos por Idioma​

# For specific languages, dedicated models may be better
models_by_language = {
"en": "BAAI/bge-large-en-v1.5",
"zh": "BAAI/bge-large-zh-v1.5",
"multilingual": "BAAI/bge-m3"
}

Opciones de Despliegue​

Opción 1: API (Recomendado para la mayoría)​

# Pros: No infrastructure, always updated
# Cons: Ongoing cost, latency, data leaves your network

from langchain.embeddings import OpenAIEmbeddings
embeddings = OpenAIEmbeddings()

Opción 2: Self-Hosted​

# Pros: No per-token cost, lower latency, data stays internal
# Cons: Infrastructure cost, maintenance

from sentence_transformers import SentenceTransformer

model = SentenceTransformer('BAAI/bge-large-en-v1.5')
# Load once, use many times

Opción 3: Híbrido​

# Use self-hosted for high volume, API for edge cases
def get_embeddings(texts, use_api=False):
if use_api or len(texts) < 10:
return api_embeddings.embed_documents(texts)
else:
return local_model.encode(texts)

Lista de Verificación para la Selección​

FactorPreguntaRecomendación
Presupuesto¿Presupuesto mensual?>$100: API, <$100: Self-host
Volumen¿Documentos/mes?>10M: Considere self-host
Latencia¿Necesita tiempo real?<20ms: Requiere self-host
Idiomas¿Multilingüe?Use modelos multilingües
Privacidad¿Sensibilidad de datos?Self-host si es crítico
Calidad¿Precisión crítica?Pague por el mejor modelo

Matriz de Recomendación​

Caso de UsoModelo Recomendado
Startup / MVPtext-embedding-3-small
Empresa (calidad)text-embedding-3-large
Empresa (costo)BGE-large (self-hosted)
MultilingüeCohere multilingual
Edge / Offlineall-MiniLM-L6-v2
Máxima calidadCohere embed-v3

Resumen​

  1. Comience con API (OpenAI small) para prototipos
  2. Evalúe los puntajes MTEB para su tipo de tarea
  3. Calcule los costos según su escala esperada
  4. Considere self-hosting para alto volumen
  5. Pruebe con sus datos antes de comprometerse

Próximos Pasos​

¡Ponga a prueba sus conocimientos con el Quiz del Módulo 3!