DocumentaciónEmbeddings

Construir

Embeddings

Un embedding convierte un texto en una lista de números. Dos textos de significado parecido dan listas parecidas.

Crear vectores

Envía un texto o una lista de textos. Cada uno vuelve con su vector, en el mismo orden.

passages = [
    "Either party may terminate with three months' notice.",
    "Invoices are payable within thirty days.",
]
result = client.embeddings.create(
    model="learnya-embed", input=passages
)
vectors = [item.embedding for item in result.data]
print(len(vectors), "vectors of", len(vectors[0]), "numbers")
Respuesta
{
  "object": "list",
  "model": "learnya-embed",
  "data": [
    { "object": "embedding", "index": 0, "embedding": [0.0123, -0.0481, 0.0277, -0.0019] }
  ],
  "usage": { "prompt_tokens": 9, "total_tokens": 9 }
}

Buscar por el significado

Compara el vector de una pregunta con los de tus fragmentos. El más cercano trata de lo mismo, aunque use otras palabras.

import math


def cosine(a, b):
    dot = sum(x * y for x, y in zip(a, b))
    return dot / (
        math.sqrt(sum(x * x for x in a))
        * math.sqrt(sum(y * y for y in b))
    )


question = client.embeddings.create(
    model="learnya-embed",
    input=["Can we end the contract early?"],
)
q = question.data[0].embedding
best = max(
    range(len(passages)), key=lambda i: cosine(q, vectors[i])
)
print(passages[best])