Embeddings por API

Convierte textos en vectores y busca por significado, no por palabras. Una clave, el formato OpenAI /v1/embeddings y pago en rublos solo por los tokens de entrada.

Qué es un embedding

Un embedding es una lista de números (un vector) que describe el significado de un texto. El modelo lee una frase, un párrafo o un documento y devuelve un vector de varios cientos a varios miles de números.

Los textos con significado parecido reciben vectores parecidos aunque no compartan palabras. «¿Cómo devuelvo un producto?» y «Política de devoluciones y cambios» quedan cerca, mientras que «¿Cómo devuelvo un préstamo?» queda más lejos. La cercanía se mide con la similitud del coseno: cuanto más cerca de 1, más parecido el significado.

Guardas los vectores una vez en una base de datos (pgvector, Qdrant, Milvus, Elasticsearch, Redis) y luego encuentras en milisegundos los más cercanos a la consulta del usuario.

Para qué sirven los embeddings

  • Búsqueda semántica

    Búsqueda en una base de conocimiento, catálogo o documentación que entiende consultas reformuladas y erratas.

  • RAG para chatbots

    Encuentra los fragmentos de documentos adecuados y pásalos a un modelo de lenguaje para que responda con tus datos.

  • Recomendaciones

    Productos, artículos y preguntas similares por el significado de su descripción, sin etiquetado manual.

  • Clustering y análisis

    Agrupa reseñas, tickets de soporte y solicitudes por tema y detecta problemas recurrentes.

  • Clasificación

    Determina el tema, el tono o el departamento de una solicitud por su cercanía a ejemplos de cada clase.

  • Detección de duplicados

    Encuentra anuncios, preguntas y documentos repetidos aunque estén redactados de otra forma.

Cómo conectarse

  1. Regístrate y recarga tu saldo: los embeddings cuestan una fracción de kopek por solicitud.
  2. Crea una clave API en tu perfil. La clave se muestra una sola vez, así que guárdala.
  3. Indica la base URL y la clave en el SDK de OpenAI o en cualquier aplicación compatible con la API de OpenAI y envía textos a /v1/embeddings.

Base URL: https://sujik.ru/v1

Ejemplos de solicitud
from openai import OpenAI

client = OpenAI(base_url="https://sujik.ru/v1", api_key="sk-sujik-...")

result = client.embeddings.create(
    model="text-embedding-3-small",
    input=["¿Cómo devuelvo un producto?", "Política de devoluciones y cambios"],
)
print(len(result.data[0].embedding), result.usage.total_tokens)
Ejemplo de respuesta
{
  "object": "list",
  "data": [
    { "object": "embedding", "index": 0, "embedding": [0.0123, -0.0456, 0.0789, …] },
    { "object": "embedding", "index": 1, "embedding": [0.0098, -0.0411, 0.0802, …] }
  ],
  "model": "text-embedding-3-small",
  "usage": { "prompt_tokens": 14, "total_tokens": 14 }
}

Puedes enviar hasta 2048 textos por solicitud. El parámetro dimensions acorta el vector en los modelos que lo admiten y encoding_format: base64 reduce el tamaño de la respuesta.

Búsqueda semántica en 15 líneas

Obtén los vectores de los documentos una vez y compara con ellos el vector de la consulta.

import numpy as np
from openai import OpenAI

client = OpenAI(base_url="https://sujik.ru/v1", api_key="sk-sujik-...")
docs = ["Política de devoluciones y cambios", "...", "..."]

def embed(texts):
    result = client.embeddings.create(model="text-embedding-3-small", input=texts)
    return np.array([item.embedding for item in result.data])

doc_vectors = embed(docs)
query = embed(["¿Cómo devuelvo un producto?"])[0]
scores = doc_vectors @ query  # unit vectors: dot product = cosine
best = int(scores.argmax())
print(docs[best], round(float(scores[best]), 3))

Modelos y precios

Precio por 1 M de tokens de entrada. Por API es un 10% más barato que la prueba en la web.

Los precios no se cargaron ahora. La lista actual está en la página de precios.

Todos los precios

Consejos

  • Compara solo vectores del mismo modelo: cada modelo tiene su propio espacio.
  • Divide los documentos largos en fragmentos de 200–800 tokens con un pequeño solapamiento para una búsqueda más precisa.
  • Guarda junto a cada vector el texto original y el id del modelo para poder recalcular el índice si cambias de modelo.
  • Un vector corto (dimensions 256–1024) ahorra espacio en la base de datos casi sin perder calidad.

Preguntas frecuentes

¿Cuánto cuestan los embeddings?

Solo pagas los tokens de entrada al precio del modelo. Mil frases cortas suelen costar menos de un rublo. Si el modelo devuelve un error, el cargo vuelve a tu saldo.

¿Funcionará mi código para OpenAI?

Sí. El endpoint es compatible con OpenAI /v1/embeddings: cambia la base URL y la clave, y el resto del código y los SDK oficiales funcionan sin cambios.

¿Qué modelo elegir?

Text Embedding 3 Small es rápido y barato para la mayoría de las tareas. Text Embedding 3 Large y Gemini Embedding son más precisos con textos complejos y en varios idiomas.

¿Funcionan los embeddings en español?

Sí, todos los modelos son multilingües: puedes mezclar español, inglés y otros idiomas en un mismo índice.

¿Gastan los límites gratuitos?

No. Los embeddings se pagan con el saldo, así que no consumen generaciones gratuitas ni suscripciones.