DocumentationEmbeddings

Build

Embeddings

An embedding turns a text into a list of numbers. Two texts with similar meanings give similar lists.

Create vectors

Send one text or a list of texts. Each comes back with its vector, in the same order.

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

Search by meaning

Compare a question’s vector with those of your passages. The closest passage is about it, even in different words.

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