Resumen
Convierte una o varias strings en vectores densos de hasta 4 096 dimensiones. Diseñado para RAG, semantic search, clustering y deduplicación. Multilingüe — funciona igual en español, inglés, portugués, catalán y muchos otros idiomas. Soporta el parámetro `dimensions` (Matryoshka) para reducir el tamaño del vector sin reentrenar.
Endpoint y modelo
POST `https://api.tesseraai.cloud/v1/embeddings`. El campo `model` en el request es el literal `Qwen/Qwen3-Embedding-8B`.
| Atributo | Valor |
|---|---|
| Dimensiones | 4 096 nativas; configurable hacia abajo (32–4 096) con el parámetro `dimensions` |
| Idiomas | Multilingüe (100+ idiomas, incluyendo ES, EN, PT, CA, IT, FR, DE) |
| Tipo de input | string o array de strings |
| Longitud máxima | 8 192 tokens por entrada |
| Quantización | Q8_0 GGUF (calidad casi idéntica a FP16) |
| Licencia | Apache 2.0 |
Dimensiones de salida
El modelo está entrenado con Matryoshka Representation Learning (MRL): los primeros N componentes del vector codifican una representación auto-contenida del input. Esto te permite pedir vectores más cortos sin reentrenar el modelo y con pérdida mínima de calidad. Pasa el parámetro estándar `dimensions` (compatible con la API de OpenAI) y Tessera trunca el vector y lo re-normaliza a longitud unitaria server-side, listo para usar con cosine similarity.
- `dimensions` es opcional. Sin él recibes el vector nativo de 4 096 dimensiones.
- Acepta cualquier valor entre 32 y 4 096. Valores típicos: 1 536 (límite HNSW de pgvector), 1 024, 768, 512.
- No hay coste extra de inferencia: la truncación se aplica post-inferencia en el gateway.
- Los vectores devueltos son L2-normalizados — listos para `cosine_distance` en pgvector / Qdrant / Weaviate sin pasos extra.
# cURL
curl https://api.tesseraai.cloud/v1/embeddings \
-H "Authorization: Bearer $TESSERA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3-Embedding-8B",
"input": ["Texto 1", "Texto 2"],
"dimensions": 1536
}'
# Python con el SDK de OpenAI
from openai import OpenAI
client = OpenAI(
base_url="https://api.tesseraai.cloud/v1",
api_key=os.environ["TESSERA_API_KEY"],
)
resp = client.embeddings.create(
model="Qwen/Qwen3-Embedding-8B",
input=["Texto 1", "Texto 2"],
dimensions=1536,
)
# resp.data[0].embedding → lista de 1 536 floats, L2-normalizada
# Lista para INSERT INTO docs (embedding) VALUES (%s) en pgvectorRequest
curl https://api.tesseraai.cloud/v1/embeddings \
-H "Authorization: Bearer $TESSERA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3-Embedding-8B",
"input": [
"Quiero saber el saldo de mi factura",
"Cancelar mi suscripción"
]
}'Response
Estructura idéntica a OpenAI: `data[].embedding` es un array de 4 096 floats por cada input (o de la longitud pedida vía `dimensions`), L2-normalizado.
{
"object": "list",
"model": "Qwen/Qwen3-Embedding-8B",
"data": [
{"object": "embedding", "index": 0, "embedding": [0.013, 0.0062, ...]},
{"object": "embedding", "index": 1, "embedding": [-0.022, 0.041, ...]}
],
"usage": {"prompt_tokens": 12, "total_tokens": 12}
}Casos de uso típicos
- RAG: indexar tu corpus en Qdrant / pgvector / Weaviate y recuperar pasajes por similitud antes de enviarlos al chat model.
- Búsqueda semántica: replace de búsqueda por keywords donde "factura impagada" debe encontrar "saldo pendiente".
- Clustering / topic modeling: agrupar tickets, documentos o correos por similitud para análisis no supervisado.
- Deduplicación: detectar contenido casi idéntico (FAQ duplicadas, leads repetidos) por umbral de similitud coseno.