← capítulo

Embeddings

Capítulo 9 · convertir texto en geometría

La hora

La idea

"Refund my order" y "how do I get my money back"

no comparten palabras — pero sus embeddings son vecinos. El significado se vuelve distancia.

Embebe un batch

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

Una llamada por batch, no por string. Mismo modelo → mismo largo → comparable.

Cosine similarity

def cosine(a, b):
    dot = sum(x*y for x, y in zip(a, b))
    na = math.sqrt(sum(x*x for x in a))
    nb = math.sqrt(sum(y*y for y in b))
    return dot / (na*nb) if na and nb else 0.0

1.0 = misma dirección. 0.0 = sin relación. La magnitud se ignora.

Query "a friendly canine companion"

0.61  A dog is a loyal and affectionate pet.
0.58  Golden retrievers are gentle family companions.
0.11  The stock market fell sharply on Tuesday.
0.09  Photosynthesis converts sunlight into energy.

Cero keywords compartidas. El significado hizo el ranking.

Ponlo a trabajar — tres apps

Sin modelo de chat. Embed + coseno es todo el motor.

Dos reglas

Lo que te llevas

Embebe un batch, compara por coseno. Esas dos operaciones cargan una cantidad enorme de software en producción. Sigue: el loop de Python se topa con una base de datos vectorial.