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")const passages = [
"Either party may terminate with three months' notice.",
"Invoices are payable within thirty days.",
]
const result = await client.embeddings.create({
model: "learnya-embed",
input: passages,
})
const vectors = result.data.map((item) => item.embedding)
console.log(
vectors.length,
"vectors of",
vectors[0].length,
"numbers",
)const passages: string[] = [
"Either party may terminate with three months' notice.",
"Invoices are payable within thirty days.",
]
const result = await client.embeddings.create({
model: "learnya-embed",
input: passages,
})
const vectors: number[][] = result.data.map(
(item) => item.embedding,
)
console.log(
vectors.length,
"vectors of",
vectors[0].length,
"numbers",
)curl https://api.learnya.ai/v1/embeddings \
-H "Authorization: Bearer $LEARNYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "learnya-embed",
"input": ["Invoices are payable within thirty days."]
}'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])const cosine = (a, b) => {
let dot = 0,
na = 0,
nb = 0
for (let i = 0; i < a.length; i++) {
dot += a[i] * b[i]
na += a[i] * a[i]
nb += b[i] * b[i]
}
return dot / (Math.sqrt(na) * Math.sqrt(nb))
}
const question = await client.embeddings.create({
model: "learnya-embed",
input: ["Can we end the contract early?"],
})
const q = question.data[0].embedding
const scores = vectors.map((v) => cosine(q, v))
console.log(passages[scores.indexOf(Math.max(...scores))])const cosine = (a: number[], b: number[]): number => {
let dot = 0,
na = 0,
nb = 0
for (let i = 0; i < a.length; i++) {
dot += a[i] * b[i]
na += a[i] * a[i]
nb += b[i] * b[i]
}
return dot / (Math.sqrt(na) * Math.sqrt(nb))
}
const question = await client.embeddings.create({
model: "learnya-embed",
input: ["Can we end the contract early?"],
})
const q: number[] = question.data[0].embedding
const scores = vectors.map((v) => cosine(q, v))
console.log(passages[scores.indexOf(Math.max(...scores))])