Tekoälyagentit · Oppitunti

Upotusten luominen text-embedding-3:lla

Muuntaa merkkijonot 1536- tai 3072-ulotteisiksi vektoreiksi OpenAI:n text-embedding-3-small/large-mallien avulla.

Oppitunti 2/413 vaihetta

Upotusten luominen text-embedding-3:lla on ilmainen Tekoälyagentit-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Tekoälyagentit-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Tekoälyagentit-kurssilla on yhteensä 4 oppituntia.

OpenAI-upotusmallit

OpenAI tarjoaa kaksi tuotantokäyttöön tarkoitettua upotusmallia:

  • text-embedding-3-small — 1536 ulottuvuutta, edullinen ja nopea
  • text-embedding-3-large — 3072 ulottuvuutta, parempi laatu ja hitaampi

Käyttäkää small-mallia useimmissa tapauksissa ja large-mallia vain silloin, kun laatu on kustannuksia tärkeämpää.

Ensimmäinen upotuksenne

Yksi rivi SDK-koodia:

from openai import OpenAI
client = OpenAI()

resp = client.embeddings.create(
    model='text-embedding-3-small',
    input='Hello, world!'
)
vector = resp.data[0].embedding
print(len(vector))      # 1536

Upotusten muodostaminen erissä

API tukee luetteloita, mikä on paljon nopeampaa kuin kutsujen tekeminen yksi kerrallaan:

texts = ['cat', 'dog', 'pizza', 'sushi']
resp = client.embeddings.create(
    model='text-embedding-3-small',
    input=texts
)
vectors = [d.embedding for d in resp.data]
# vectors[0] is for 'cat', vectors[1] for 'dog', etc.

Tokenirajat

Jokaisella syötteellä on tokenien enimmäisraja (8192 text-embedding-3-mallissa). Pitkät asiakirjat on jaettava osiin ensin.

Ulottuvuuksien vähentäminen

Voitte pyytää pienempää ulottuvuuksien määrää (Matryoshka-upotukset), mikä on hyödyllistä tallennustilan säästämiseksi:

resp = client.embeddings.create(
    model='text-embedding-3-large',
    input='Hello',
    dimensions=512    # default would be 3072
)

Kustannukset

Tämän kirjoitushetkellä:

  • text-embedding-3-small: $0.02 / 1M tokenia
  • text-embedding-3-large: $0.13 / 1M tokenia

Miljoonan sanan upottaminen small-mallilla maksaa noin $0.025 — käytännössä ei mitään.

Upota kerran, käytä uudelleen aina

Upotukset eivät muutu, kun muodostatte ne uudelleen — voitte laskea ne kerran ja tallentaa ne. Välimuisti on välttämätön kaikissa tuotantojärjestelmissä.

Vektorien normalisointi

OpenAI-upotukset on jo normalisoitu L2-normilla (pituus = 1). Tämä tarkoittaa, että kosinisamankaltaisuus = pistetulo, mikä säästää laskentaa:

import numpy as np
a = np.array(vec_a)
b = np.array(vec_b)
sim = np.dot(a, b)     # since |a| = |b| = 1

Asynkroninen upotus

Käyttäkää suuren läpimenon tapauksessa asynkronista asiakasta:

from openai import AsyncOpenAI
import asyncio

client = AsyncOpenAI()

async def embed_batch(texts):
    resp = await client.embeddings.create(
        model='text-embedding-3-small',
        input=texts
    )
    return [d.embedding for d in resp.data]

vectors = asyncio.run(embed_batch(['a', 'b', 'c']))

Yritä uudelleen virheen jälkeen

Upotuskutsut epäonnistuvat muiden HTTP-kutsujen tavoin. Käärikää ne uudelleenyritykseen ja kasvavaan viiveeseen:

from tenacity import retry, wait_exponential, stop_after_attempt

@retry(wait=wait_exponential(multiplier=1, max=10), stop=stop_after_attempt(5))
def safe_embed(text):
    return client.embeddings.create(model='text-embedding-3-small', input=text)

Upotusten tallentaminen

Kolme yleistä tallennusvaihtoehtoa:

  • SQLite ja sqlite-vec-laajennus
  • Postgres ja pgvector-laajennus
  • erillinen vektoritietokanta (Pinecone, Qdrant, Weaviate)

Kustannusten huomioiminen

Kuinka paljon miljoonan sanan upottaminen text-embedding-3-small-mallilla maksaa suunnilleen?

Yhteenveto

Valitkaa text-embedding-3-small, tehkää kutsut erissä, tallentakaa vektorit, ja teillä on semanttisen haun perusta.

Aloita maksutta

Opi Tekoälyagentit tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
60
Oppitunnit
239

Usein kysytyt kysymykset

Onko oppitunti ”Upotusten luominen text-embedding-3:lla” ilmainen?

Kyllä – oppitunnin ”Upotusten luominen text-embedding-3:lla” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Tekoälyagentit-kurssin, päivitä CoddyKit PROhon. Tekoälyagentit-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Upotusten luominen text-embedding-3:lla”?

Muuntaa merkkijonot 1536- tai 3072-ulotteisiksi vektoreiksi OpenAI:n text-embedding-3-small/large-mallien avulla. Harjoittelet Tekoälyagentit-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Tekoälyagentit-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Tekoälyagentit-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Upotusten luominen text-embedding-3:lla”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Tekoälyagentit-oppitunnilla?

Kyllä. Jokainen Tekoälyagentit-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Mitä upotukset ovat (vektorimuotoiset esitykset)
  2. Upotusten luominen text-embedding-3:lla
  3. Kosinisamankaltaisuus hakua varten
  4. Upotusmallien vertailu (OpenAI, Cohere ja OSS)
← Takaisin: Tekoälyagentit