Callsistdocs
Guías

Embeddings y RAG

Devolvemos los vectores. El almacén y la búsqueda los pones tú.

POST /v1/embeddings. Scope: embeddings:invoke.

{ "model": "callsist-embed-1", "input": ["texto 1", "texto 2"], "dimensions": 768 }
  • input: cadena o array. Máximo 256 elementos por petición.
  • dimensions: opcional. Por defecto 768. Si lo pides distinto y el proveedor devuelve otra cosa, la petición falla en vez de guardar vectores de dimensión equivocada.
  • Ventana: 32 000 tokens.
{
  "object": "list",
  "model": "callsist-embed-1",
  "data": [ { "object": "embedding", "index": 0, "embedding": [0.0123, -0.0456] } ],
  "usage": { "prompt_tokens": 412, "total_tokens": 412 }
}

El orden de data corresponde al de input por el campo index, no por la posición del array.

Precio: 0,28 €/M tokens. Reembeber una base de conocimiento de un millón de tokens cuesta 0,28 €; no es ahí donde está el gasto.

Callsist no almacena ni busca vectores

/v1/embeddings devuelve los vectores y ahí acaba su trabajo. No existen colecciones, ni upsert, ni búsqueda semántica. Quien monte un RAG guarda los vectores en su propio pgvector, Qdrant o lo que use.

No es una carencia pendiente de tapar: un almacén de vectores es un producto distinto, con su propio ciclo de vida, sus copias de seguridad y su modelo de permisos. Preferimos no fingir que lo tenemos.

El patrón completo

1. POST /v1/embeddings          ← embeber los documentos, una vez
2. (tu almacén)                 ← guardar los vectores, dimensión 768
3. POST /v1/embeddings          ← embeber la consulta
4. (tu almacén)                 ← recuperar los k fragmentos más cercanos
5. POST /v1/chat/completions    ← prompt + fragmentos, con response_format json_object

El paso que la gente se salta es el 2 con la dimensión correcta: si tu tabla de pgvector está declarada como vector(1536) porque venías de otro proveedor, la inserción falla o —peor— truncas. 768.

Reembeber cuando cambie el modelo

Los vectores de dos modelos distintos no son comparables. Si algún día callsist-embed-1 se sustituye por otro identificador, hay que reembeber la colección entera: mezclar vectores de dos modelos en el mismo índice da resultados que parecen funcionar y no lo hacen.

A 0,28 €/M tokens, reembeber es la parte barata del problema; lo caro es no darse cuenta.

On this page