DocumentaçãoEmbeddings

Construir

Embeddings

Um embedding converte um texto numa lista de números. Dois textos com significado próximo dão listas próximas.

Criar vetores

Envia um texto ou uma lista de textos. Cada um volta com o seu vetor, pela mesma ordem.

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")
Resposta
{
  "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 }
}

Procurar pelo significado

Compara o vetor de uma pergunta com os dos teus excertos. O mais próximo fala do assunto, mesmo com outras palavras.

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])