Kattints a fenti képre a lecke videójának megtekintéséhez
A nagy nyelvi modellek (LLM-ek) nem csak chatbotok és szöveggenerálás céljára használhatók. Beágyazások (Embeddings) segítségével keresőalkalmazásokat is építhetünk. A beágyazások numerikus adatábrázolások, más néven vektorok, amelyeket szemantikus keresésre használhatunk.
Ebben a leckében egy keresőalkalmazást fogsz építeni az oktatási startupunk számára. A startupunk egy nonprofit szervezet, amely ingyenes oktatást biztosít fejlődő országok diákjai számára. Nagyszámú YouTube videónk van, amelyeket a diákok az MI tanulásához használhatnak. A startup szeretne egy keresőalkalmazást készíteni, amely lehetővé teszi a diákok számára, hogy kérdés beírásával keressenek YouTube videókat.
Például egy diák beírhatja, hogy „Mik azok a Jupyter Notebookok?” vagy „Mi az az Azure ML?”, és a keresőalkalmazás releváns YouTube videók listáját adja vissza, sőt, még azt a videórészletet is megmutatja, ahol a kérdésre adott válasz található.
Ebben a leckében a következőkről lesz szó:
- Szemantikus és kulcsszavas keresés közötti különbség.
- Mi az a szövegbeágyazás (Text Embeddings).
- Szövegbeágyazás index létrehozása.
- Szövegbeágyazás index keresése.
A lecke elvégzése után képes leszel:
- Megkülönböztetni a szemantikus és kulcsszavas keresést.
- Elmagyarázni, mi az a szövegbeágyazás.
- Olyan alkalmazást készíteni, amely beágyazások segítségével keres adatokat.
Egy keresőalkalmazás elkészítése segít megérteni, hogyan használhatók a beágyazások az adatok keresésére. Emellett megtanulod, hogyan építs olyan keresőalkalmazást, amely gyorsan segíti a diákokat az információ megtalálásában.
A lecke tartalmaz egy beágyazás indexet a Microsoft AI Show YouTube csatorna átirataiból. Az AI Show egy olyan YouTube csatorna, amely az MI-ről és gépi tanulásról tanít. Az index tartalmazza az összes átirat beágyazását 2023 októberéig. Ezt az indexet fogod használni a keresőalkalmazás építéséhez. Az alkalmazás visszaad egy linket a videó azon részéhez, ahol a kérdésre adott válasz található. Ez nagyszerű módja annak, hogy a diákok gyorsan megtalálják a szükséges információt.
Az alábbi példa egy szemantikus lekérdezés a „can you use rstudio with azure ml?” kérdésre. Nézd meg a YouTube URL-t, amely tartalmaz egy időbélyeget, ami a videó azon részére visz, ahol a válasz található.
Most talán azon tűnődsz, mi is az a szemantikus keresés? A szemantikus keresés egy olyan keresési technika, amely a lekérdezés szavainak jelentését használja a releváns találatok visszaadásához.
Íme egy példa a szemantikus keresésre. Tegyük fel, hogy autót szeretnél venni, és beírod, hogy „az álomautóm”. A szemantikus keresés megérti, hogy nem az autókról álmodozol, hanem a „tökéletes” autót keresed. A szemantikus keresés megérti a szándékodat, és releváns találatokat ad. Ezzel szemben a kulcsszavas keresés szó szerint az „álom” és „autó” szavakat keresi, ami gyakran irreleváns találatokat eredményez.
A szövegbeágyazások egy szövegábrázolási technika a természetes nyelvfeldolgozásban. A szövegbeágyazások szemantikus, numerikus ábrázolásai a szövegnek. Ezek segítségével az adatokat olyan formában lehet megjeleníteni, amelyet a gép könnyen értelmez. Számos modell létezik szövegbeágyazások létrehozására, ebben a leckében az OpenAI Embedding Model használatára fókuszálunk.
Például képzeld el, hogy a következő szöveg egy AI Show epizód átiratából származik:
Today we are going to learn about Azure Machine Learning.
A szöveget átadjuk az OpenAI Embedding API-nak, amely visszaad egy 1536 számból álló beágyazást, azaz egy vektort. A vektor minden egyes száma a szöveg egy-egy aspektusát reprezentálja. Rövidség kedvéért itt az első 10 szám a vektorban.
[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...]A lecke beágyazás indexét egy sor Python szkript segítségével hozták létre. A szkripteket és az utasításokat megtalálod a README fájlban, a lecke scripts mappájában. Ezeket a szkripteket nem kell lefuttatnod a lecke elvégzéséhez, mert az index már rendelkezésre áll.
A szkriptek a következő műveleteket végzik el:
- Letöltik az összes YouTube videó átiratát az AI Show lejátszási listából.
- Az OpenAI Functions segítségével megpróbálják kinyerni az előadó nevét az átirat első 3 percéből. Az előadó neveket az
embedding_index_3m.jsonnevű beágyazás indexben tárolják. - Az átiratot 3 perces szövegszegmensekre bontják. A szegmensek között kb. 20 szó átfedés van, hogy a beágyazás ne legyen megszakítva, és jobb keresési kontextust biztosítson.
- Minden szegmenst az OpenAI Chat API-nak adnak át, amely 60 szavas összefoglalót készít. Az összefoglaló szintén az
embedding_index_3m.jsonindexben tárolódik. - Végül a szegmens szövegét átadják az OpenAI Embedding API-nak, amely egy 1536 számból álló vektort ad vissza, ami a szegmens szemantikus jelentését reprezentálja. A szegmens és a vektor együtt kerül az
embedding_index_3m.jsonindexbe.
A lecke egyszerűsége miatt az index egy JSON fájlban (embedding_index_3m.json) van tárolva, és Pandas DataFrame-be töltve. Azonban éles környezetben az indexet vektoradatbázisban tárolnánk, például az Azure Cognitive Search, Redis, Pinecone, vagy Weaviate használatával, hogy csak néhányat említsünk.
Megismertük a szövegbeágyazásokat, a következő lépés, hogy megtanuljuk, hogyan használjuk őket adatkeresésre, különösen, hogyan találjuk meg a lekérdezéshez leginkább hasonló beágyazásokat koszinusz hasonlóság segítségével.
A koszinusz hasonlóság két vektor közötti hasonlóság mértéke, más néven legközelebbi szomszéd keresés. A koszinusz hasonlóság kereséshez először a lekérdezést vektorrá kell alakítani az OpenAI Embedding API segítségével. Ezután kiszámoljuk a lekérdezés vektora és az indexben lévő minden vektor közötti koszinusz hasonlóságot. Ne feledd, az index minden YouTube átirat szövegszegmenséhez tartalmaz egy vektort. Végül a találatokat koszinusz hasonlóság szerint rendezzük, és a legmagasabb értékű szegmensek a leginkább hasonlóak a lekérdezéshez.
Matematikailag a koszinusz hasonlóság a két vektor által bezárt szög koszinuszát méri egy többdimenziós térben. Ez azért hasznos, mert ha két dokumentum távol van egymástól euklideszi távolságban a méretük miatt, mégis lehet kisebb szög közöttük, így magasabb koszinusz hasonlóságuk. További információkért lásd a Koszinusz hasonlóság oldalt.
Most megtanuljuk, hogyan építsünk keresőalkalmazást beágyazások segítségével. Az alkalmazás lehetővé teszi, hogy a diákok kérdés beírásával keressenek videókat. Az alkalmazás releváns videók listáját adja vissza, és megmutatja a videó azon részét, ahol a kérdésre adott válasz található.
A megoldást Windows 11, macOS és Ubuntu 22.04 rendszereken teszteltük Python 3.10 vagy újabb verzióval. A Python letölthető a python.org oldalról.
A lecke elején bemutattuk a startupunkat. Most itt az ideje, hogy a diákok számára lehetőséget adjunk egy keresőalkalmazás elkészítésére a feladataikhoz.
Ebben a feladatban létrehozod az Azure OpenAI szolgáltatásokat, amelyeket a keresőalkalmazás építéséhez használsz. A következő Azure OpenAI szolgáltatásokat kell létrehoznod. Ehhez szükséged lesz egy Azure előfizetésre.
- Jelentkezz be az Azure portálba.
- Kattints a Cloud Shell ikonra az Azure portál jobb felső sarkában.
- Válaszd a Bash környezetet.
Ezekhez az utasításokhoz az „semantic-video-search” nevű erőforráscsoportot használjuk az East US régióban. Az erőforráscsoport nevét megváltoztathatod, de ha a régiót módosítod, ellenőrizd a modell elérhetőségi táblázatot.
az group create --name semantic-video-search --location eastusAz Azure Cloud Shellből futtasd a következő parancsot az Azure OpenAI szolgáltatás létrehozásához.
az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \
--location eastus --kind OpenAI --sku s0Az Azure Cloud Shellből futtasd a következő parancsokat az Azure OpenAI szolgáltatás endpointjának és kulcsainak lekéréséhez.
az cognitiveservices account show --name semantic-video-openai \
--resource-group semantic-video-search | jq -r .properties.endpoint
az cognitiveservices account keys list --name semantic-video-openai \
--resource-group semantic-video-search | jq -r .key1Az Azure Cloud Shellből futtasd a következő parancsot az OpenAI Embedding modell telepítéséhez.
az cognitiveservices account deployment create \
--name semantic-video-openai \
--resource-group semantic-video-search \
--deployment-name text-embedding-ada-002 \
--model-name text-embedding-ada-002 \
--model-version "2" \
--model-format OpenAI \
--sku-capacity 100 --sku-name "Standard"Nyisd meg a megoldás jegyzetfüzetet a GitHub Codespaces-ben, és kövesd a Jupyter Notebook utasításait.
A jegyzetfüzet futtatásakor megkérdezi a lekérdezést. A beviteli mező így fog kinézni:
A lecke elvégzése után nézd meg a Generatív MI tanulási gyűjteményünket, hogy tovább fejleszd a generatív MI ismereteidet!
Lépj tovább a 9. leckére, ahol megnézzük, hogyan lehet képgeneráló alkalmazásokat építeni!
Jogi nyilatkozat:
Ez a dokumentum az AI fordító szolgáltatás, a Co-op Translator segítségével készült. Bár a pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Fontos információk esetén szakmai, emberi fordítást javaslunk. Nem vállalunk felelősséget a fordítás használatából eredő félreértésekért vagy téves értelmezésekért.


