Kliknite zgornjo sliko za ogled videoposnetka te lekcije
LLM-ji niso namenjeni le klepetalnikom in generiranju besedil. Z uporabo vektorskih predstav (Embeddings) je mogoče zgraditi tudi iskalne aplikacije. Vektorske predstavitve so numerične reprezentacije podatkov, znane tudi kot vektorji, ki jih je mogoče uporabiti za semantično iskanje podatkov.
V tej lekciji boste zgradili iskalno aplikacijo za naš izobraževalni startup. Naš startup je neprofitna organizacija, ki zagotavlja brezplačno izobraževanje študentom v državah v razvoju. Naš startup ima veliko število YouTube videoposnetkov, ki jih študenti lahko uporabijo za učenje o umetni inteligenci. Naš startup želi zgraditi iskalno aplikacijo, ki študentom omogoča iskanje YouTube videoposnetkov z vnosom vprašanja.
Na primer, študent lahko vnese 'Kaj so Jupyter zvezki?' ali 'Kaj je Azure ML' in iskalna aplikacija bo vrnila seznam YouTube videoposnetkov, ki so relevantni za vprašanje, še bolje pa je, da bo iskalna aplikacija vrnila povezavo na mesto v videoposnetku, kjer se nahaja odgovor na vprašanje.
V tej lekciji bomo obravnavali:
- Semantično iskanje v primerjavi s ključnimi besedami.
- Kaj so vektorske predstavitve besedila.
- Ustvarjanje indeksa vektorskih predstavitev besedila.
- Iskanje v indeksu vektorskih predstavitev besedila.
Po zaključku te lekcije boste lahko:
- Razlikovali med semantičnim iskanjem in iskanjem po ključnih besedah.
- Razložili, kaj so vektorske predstavitve besedila.
- Ustvarili aplikacijo z uporabo vektorskih predstavitev za iskanje podatkov.
Ustvarjanje iskalne aplikacije vam bo pomagalo razumeti, kako uporabiti vektorske predstavitve za iskanje podatkov. Prav tako se boste naučili, kako zgraditi iskalno aplikacijo, ki jo lahko študenti uporabijo za hitro iskanje informacij.
Lekcija vključuje indeks vektorskih predstavitev prepisov YouTube videoposnetkov iz Microsoftovega AI Show YouTube kanala. AI Show je YouTube kanal, ki vas uči o umetni inteligenci in strojnem učenju. Indeks vektorskih predstavitev vsebuje vektorske predstavitve za vsak prepis YouTube videoposnetkov do oktobra 2023. Ta indeks boste uporabili za gradnjo iskalne aplikacije za naš startup. Iskalna aplikacija bo vrnila povezavo na mesto v videoposnetku, kjer se nahaja odgovor na vprašanje. To je odličen način, da študenti hitro najdejo potrebne informacije.
Spodaj je primer semantičnega iskanja za vprašanje 'Ali lahko uporabite rstudio z azure ml?'. Oglejte si URL YouTube videoposnetka, videli boste, da URL vsebuje časovno oznako, ki vas popelje na mesto v videoposnetku, kjer se nahaja odgovor na vprašanje.
Morda se sprašujete, kaj je semantično iskanje? Semantično iskanje je tehnika iskanja, ki uporablja semantiko ali pomen besed v poizvedbi za vrnitev relevantnih rezultatov.
Tukaj je primer semantičnega iskanja. Recimo, da želite kupiti avto, morda iščete 'moj sanjski avto', semantično iskanje razume, da ne sanjarite o avtu, ampak iščete svoj idealni avto. Semantično iskanje razume vaš namen in vrne relevantne rezultate. Alternativa je iskanje po ključnih besedah, ki bi dobesedno iskalo sanje o avtomobilih in pogosto vrnilo nerelevantne rezultate.
Vektorske predstavitve besedila so tehnika reprezentacije besedila, ki se uporablja v obdelavi naravnega jezika. Vektorske predstavitve so semantične numerične reprezentacije besedila. Uporabljajo se za predstavitev podatkov na način, ki ga stroj zlahka razume. Obstaja veliko modelov za ustvarjanje vektorskih predstavitev besedila, v tej lekciji se bomo osredotočili na generiranje vektorskih predstavitev z uporabo OpenAI Embedding Model.
Tukaj je primer, predstavljajte si, da je naslednje besedilo v prepisu ene od epizod na YouTube kanalu AI Show:
Today we are going to learn about Azure Machine Learning.
Besedilo bi posredovali OpenAI Embedding API-ju, ki bi vrnil naslednjo vektorsko predstavitev, sestavljeno iz 1536 številk, imenovano vektor. Vsaka številka v vektorju predstavlja drugačen vidik besedila. Zaradi preglednosti so tukaj prikazane prve 10 številke vektorja.
[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...]Indeks vektorskih predstavitev za to lekcijo je bil ustvarjen s serijo Python skriptov. Skripte skupaj z navodili najdete v README v mapi 'scripts' za to lekcijo. Teh skriptov ni treba zagnati za dokončanje te lekcije, saj je indeks vektorskih predstavitev že na voljo.
Skripti izvajajo naslednje operacije:
- Prepis za vsak YouTube videoposnetek v AI Show seznamu predvajanja se prenese.
- Z uporabo OpenAI funkcij se poskuša izluščiti ime govorca iz prvih 3 minut prepisov YouTube videoposnetkov. Ime govorca za vsak videoposnetek se shrani v indeks vektorskih predstavitev z imenom
embedding_index_3m.json. - Besedilo prepisa se nato razdeli na 3-minutne tekstovne segmente. Segment vključuje približno 20 besed, ki se prekrivajo z naslednjim segmentom, da se zagotovi, da vektorska predstavitev segmenta ni prekinjena in da se zagotovi boljši kontekst iskanja.
- Vsak tekstovni segment se nato posreduje OpenAI Chat API-ju, da povzame besedilo v 60 besed. Povzetek se prav tako shrani v indeks vektorskih predstavitev
embedding_index_3m.json. - Na koncu se besedilo segmenta posreduje OpenAI Embedding API-ju. Embedding API vrne vektor s 1536 številkami, ki predstavljajo semantični pomen segmenta. Segment skupaj z OpenAI vektorsko predstavitvijo se shrani v indeks vektorskih predstavitev
embedding_index_3m.json.
Za poenostavitev lekcije je indeks vektorskih predstavitev shranjen v JSON datoteki z imenom embedding_index_3m.json in naložen v Pandas DataFrame. V produkciji pa bi bil indeks vektorskih predstavitev shranjen v vektorski bazi podatkov, kot so Azure Cognitive Search, Redis, Pinecone, Weaviate, da naštejemo le nekaj.
Spoznali smo vektorske predstavitve besedila, naslednji korak je, da se naučimo, kako uporabiti vektorske predstavitve za iskanje podatkov, zlasti kako najti najbolj podobne vektorske predstavitve za dano poizvedbo z uporabo kosinusne podobnosti.
Kosinusna podobnost je merilo podobnosti med dvema vektorjema, pogosto imenovano tudi iskanje najbližjega soseda. Za izvedbo iskanja s kosinusno podobnostjo morate vektorizirati besedilo poizvedbe z uporabo OpenAI Embedding API-ja. Nato izračunate kosinusno podobnost med vektorjem poizvedbe in vsakim vektorjem v indeksu vektorskih predstavitev. Ne pozabite, indeks vektorskih predstavitev ima vektor za vsak segment besedila prepisa YouTube videoposnetkov. Na koncu razvrstite rezultate po kosinusni podobnosti, pri čemer so segmenti besedila z najvišjo kosinusno podobnostjo najbolj podobni poizvedbi.
Z matematičnega vidika kosinusna podobnost meri kosinus kota med dvema vektorjema, projiciranima v večdimenzionalni prostor. Ta meritev je koristna, saj če sta dva dokumenta med seboj oddaljena po Evklidski razdalji zaradi velikosti, lahko še vedno imata manjši kot med njima in zato višjo kosinusno podobnost. Za več informacij o enačbah kosinusne podobnosti si oglejte Kosinusna podobnost.
Naslednje, naučili se bomo, kako zgraditi iskalno aplikacijo z uporabo vektorskih predstavitev. Iskalna aplikacija bo študentom omogočila iskanje videoposnetka z vnosom vprašanja. Iskalna aplikacija bo vrnila seznam videoposnetkov, ki so relevantni za vprašanje. Iskalna aplikacija bo prav tako vrnila povezavo na mesto v videoposnetku, kjer se nahaja odgovor na vprašanje.
Ta rešitev je bila zgrajena in testirana na Windows 11, macOS in Ubuntu 22.04 z uporabo Python 3.10 ali novejše različice. Python lahko prenesete s python.org.
Na začetku te lekcije smo predstavili naš startup. Zdaj je čas, da omogočimo študentom gradnjo iskalne aplikacije za njihove naloge.
V tej nalogi boste ustvarili Azure OpenAI storitve, ki bodo uporabljene za gradnjo iskalne aplikacije. Ustvarili boste naslednje Azure OpenAI storitve. Za dokončanje te naloge boste potrebovali naročnino na Azure.
- Prijavite se v Azure portal.
- Izberite ikono Cloud Shell v zgornjem desnem kotu Azure portala.
- Izberite Bash za vrsto okolja.
Za ta navodila uporabljamo skupino virov z imenom "semantic-video-search" v East US. Ime skupine virov lahko spremenite, vendar pri spreminjanju lokacije virov preverite tabelo razpoložljivosti modelov.
az group create --name semantic-video-search --location eastusIz Azure Cloud Shell zaženite naslednji ukaz za ustvarjanje vira Azure OpenAI Service.
az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \
--location eastus --kind OpenAI --sku s0Iz Azure Cloud Shell zaženite naslednje ukaze za pridobitev končne točke in ključev za vir Azure OpenAI Service.
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 .key1Iz Azure Cloud Shell zaženite naslednji ukaz za namestitev OpenAI Embedding modela.
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"Odprite rešitveni zvezek v GitHub Codespaces in sledite navodilom v Jupyter Notebooku.
Ko zaženete zvezek, boste pozvani, da vnesete poizvedbo. Vnosno polje bo videti takole:
Po zaključku te lekcije si oglejte našo zbirko učenja o generativni umetni inteligenci, da še naprej nadgrajujete svoje znanje o generativni umetni inteligenci!
Pojdite na lekcijo 9, kjer bomo pogledali, kako zgraditi aplikacije za generiranje slik!
Omejitev odgovornosti:
Ta dokument je bil preveden z uporabo storitve za prevajanje z umetno inteligenco Co-op Translator. Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku naj se šteje za avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda.


