Klõpsa ülaloleval pildil, et vaadata selle õppetunni videot
LLM-id (suured keelemudelid) ei piirdu ainult vestlusrobotite ja tekstigeneratsiooniga. Nende abil on võimalik luua ka otsingurakendusi, kasutades sisendvektoreid (Embeddings). Sisendvektorid on andmete numbrilised esitlused, mida tuntakse ka vektorite nime all, ja neid saab kasutada semantilise otsingu jaoks.
Selles õppetunnis loome otsingurakenduse meie haridusalgatuse jaoks. Meie algatus on mittetulundusühing, mis pakub tasuta haridust arengumaade õpilastele. Algatusel on suur hulk YouTube'i videoid, mida õpilased saavad kasutada tehisintellekti õppimiseks. Algatus soovib luua otsingurakenduse, mis võimaldab õpilastel otsida YouTube'i videoid, sisestades küsimuse.
Näiteks võib õpilane sisestada küsimuse "Mis on Jupyter Notebooks?" või "Mis on Azure ML?" ja otsingurakendus tagastab nimekirja YouTube'i videotest, mis on küsimusega seotud. Veelgi enam, otsingurakendus tagastab lingi video sellele kohale, kus küsimusele vastus asub.
Selles õppetunnis käsitleme:
- Semantiline vs märksõnaotsing.
- Mis on tekstisisendvektorid (Text Embeddings).
- Tekstisisendvektorite indeksi loomine.
- Tekstisisendvektorite indeksi otsing.
Pärast selle õppetunni läbimist oskad:
- Eristada semantilist ja märksõnaotsingut.
- Selgitada, mis on tekstisisendvektorid.
- Luua rakenduse, mis kasutab sisendvektoreid andmete otsimiseks.
Otsingurakenduse loomine aitab sul mõista, kuidas kasutada sisendvektoreid andmete otsimiseks. Samuti õpid, kuidas luua otsingurakendust, mida õpilased saavad kasutada teabe kiireks leidmiseks.
Õppetund sisaldab sisendvektorite indeksit Microsofti AI Show YouTube'i kanali transkriptsioonide jaoks. AI Show on YouTube'i kanal, mis õpetab tehisintellekti ja masinõppe kohta. Sisendvektorite indeks sisaldab kõigi YouTube'i transkriptsioonide sisendvektoreid kuni oktoobrini 2023. Kasutad sisendvektorite indeksit, et luua meie algatuse jaoks otsingurakendus. Otsingurakendus tagastab lingi video sellele kohale, kus küsimusele vastus asub. See on suurepärane viis, kuidas õpilased saavad kiiresti vajaliku teabe leida.
Allpool on näide semantilisest päringust küsimuse "Kas Azure ML-i saab kasutada koos RStudio-ga?" kohta. Vaata YouTube'i URL-i, näed, et URL sisaldab ajatemplit, mis viib sind video sellele kohale, kus küsimusele vastus asub.
Võid küsida, mis on semantiline otsing? Semantiline otsing on otsingutehnika, mis kasutab päringus olevate sõnade tähendust, et tagastada asjakohaseid tulemusi.
Siin on näide semantilisest otsingust. Oletame, et otsid autot ja sisestad otsingusse "minu unistuste auto". Semantiline otsing mõistab, et sa ei "unista" autost, vaid otsid oma "ideaalset" autot. Semantiline otsing mõistab sinu kavatsust ja tagastab asjakohased tulemused. Alternatiiviks on "märksõnaotsing", mis otsiks sõna otseses mõttes unenägusid autode kohta ja tagastaks sageli ebaolulisi tulemusi.
Tekstisisendvektorid on tekstiesituse tehnika, mida kasutatakse loomuliku keele töötlemises. Tekstisisendvektorid on teksti semantilised numbrilised esitlused. Sisendvektoreid kasutatakse andmete esitamiseks viisil, mis on masinale kergesti mõistetav. Tekstisisendvektorite loomiseks on palju mudeleid, kuid selles õppetunnis keskendume sisendvektorite genereerimisele OpenAI sisendvektori mudeli abil.
Siin on näide: kujutame ette, et järgmine tekst on ühe AI Show YouTube'i kanali episoodi transkriptsioonist:
Today we are going to learn about Azure Machine Learning.
Edastame teksti OpenAI sisendvektori API-le ja see tagastab järgmise sisendvektori, mis koosneb 1536 numbrist ehk vektorist. Iga number vektoris esindab teksti erinevat aspekti. Lühiduse huvides on siin vektori esimesed 10 numbrit.
[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...]Selle õppetunni sisendvektorite indeks loodi mitme Python skripti abil. Leiad skriptid koos juhistega README failist õppetunni 'scripts' kaustas. Sa ei pea neid skripte käivitama, et õppetundi lõpetada, kuna sisendvektorite indeks on sulle juba ette antud.
Skriptid teevad järgmised toimingud:
- Laetakse alla iga YouTube'i video transkriptsioon AI Show esitusloendist.
- Kasutades OpenAI funktsioone, tehakse katse tuvastada kõneleja nimi YouTube'i transkriptsiooni esimese 3 minuti jooksul. Iga video kõneleja nimi salvestatakse sisendvektorite indeksisse nimega
embedding_index_3m.json. - Transkriptsiooni tekst jagatakse 3-minutilisteks tekstisegmentideks. Segment sisaldab umbes 20 sõna kattumist järgmise segmendiga, et tagada, et segmendi sisendvektor ei katkeks ja et otsingukontekst oleks parem.
- Iga tekstisegment edastatakse OpenAI Chat API-le, et kokku võtta tekst 60 sõnaga. Kokkuvõte salvestatakse samuti sisendvektorite indeksisse
embedding_index_3m.json. - Lõpuks edastatakse segmendi tekst OpenAI sisendvektori API-le. Sisendvektori API tagastab vektori, mis koosneb 1536 numbrist ja esindab segmendi semantilist tähendust. Segment koos OpenAI sisendvektori vektoriga salvestatakse sisendvektorite indeksisse
embedding_index_3m.json.
Õppetunni lihtsuse huvides salvestatakse sisendvektorite indeks JSON-faili nimega embedding_index_3m.json ja laaditakse Pandas DataFrame'i. Kuid tootmises salvestatakse sisendvektorite indeks vektorandmebaasi, nagu näiteks Azure Cognitive Search, Redis, Pinecone, Weaviate, ja teised.
Oleme õppinud tekstisisendvektorite kohta, järgmine samm on õppida, kuidas kasutada tekstisisendvektoreid andmete otsimiseks ja eriti leida kõige sarnasemad sisendvektorid antud päringule, kasutades kosinuse sarnasust.
Kosinuse sarnasus on sarnasuse mõõt kahe vektori vahel, mida nimetatakse ka lähima naabri otsinguks. Kosinuse sarnasuse otsingu tegemiseks tuleb vektoriseerida päringu tekst OpenAI sisendvektori API abil. Seejärel arvutatakse kosinuse sarnasus päringu vektori ja iga sisendvektorite indeksis oleva vektori vahel. Pea meeles, et sisendvektorite indeksis on vektor iga YouTube'i transkriptsiooni tekstisegmendi jaoks. Lõpuks sorteeritakse tulemused kosinuse sarnasuse järgi ja tekstisegmendid, millel on kõige suurem kosinuse sarnasus, on päringule kõige sarnasemad.
Matemaatilisest vaatenurgast mõõdab kosinuse sarnasus kahe vektori vahelist nurka mitmemõõtmelises ruumis. See mõõtmine on kasulik, sest kui kaks dokumenti on Eukleidese kauguse järgi kaugel, kuna nende suurus erineb, võivad nad siiski olla väiksema nurga all ja seega suurema kosinuse sarnasusega. Lisateavet kosinuse sarnasuse valemite kohta leiad Kosinuse sarnasus.
Järgmisena õpime, kuidas luua otsingurakendust, kasutades sisendvektoreid. Otsingurakendus võimaldab õpilastel otsida videot, sisestades küsimuse. Otsingurakendus tagastab nimekirja videotest, mis on küsimusega seotud. Otsingurakendus tagastab ka lingi video sellele kohale, kus küsimusele vastus asub.
See lahendus loodi ja testiti Windows 11, macOS-i ja Ubuntu 22.04 operatsioonisüsteemides, kasutades Python 3.10 või uuemat versiooni. Sa saad Python'i alla laadida python.org veebilehelt.
Tutvustasime oma algatust selle õppetunni alguses. Nüüd on aeg võimaldada õpilastel luua otsingurakendus oma ülesannete jaoks.
Selles ülesandes lood Azure OpenAI teenused, mida kasutatakse otsingurakenduse loomiseks. Lood järgmised Azure OpenAI teenused. Selle ülesande täitmiseks on sul vaja Azure'i tellimust.
- Logi sisse Azure'i portaali.
- Vali Azure'i portaali paremas ülanurgas Cloud Shelli ikoon.
- Vali Bash keskkonna tüübiks.
Nendes juhistes kasutame ressursigruppi nimega "semantic-video-search" East US piirkonnas. Ressursigrupi nime muutmisel kontrolli mudelite saadavuse tabelit.
az group create --name semantic-video-search --location eastusKäivita Azure Cloud Shellis järgmine käsk, et luua Azure OpenAI teenuse ressurss.
az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \
--location eastus --kind OpenAI --sku s0Käivita Azure Cloud Shellis järgmised käsud, et hankida endpoint ja võtmed Azure OpenAI teenuse ressursi jaoks.
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 .key1Käivita Azure Cloud Shellis järgmine käsk, et juurutada OpenAI sisendvektori mudel.
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"Ava lahenduse märkmik GitHub Codespaces'is ja järgi Jupyter Notebookis antud juhiseid.
Kui käivitad märkmiku, palutakse sul sisestada päring. Sisendkast näeb välja selline:
Pärast selle õppetunni lõpetamist tutvu meie Generatiivse tehisintellekti õppekollektsiooniga, et jätkata oma teadmiste täiendamist generatiivse tehisintellekti valdkonnas!
Liigu edasi 9. õppetundi, kus uurime, kuidas luua pildigeneratsiooni rakendusi!
Lahtiütlus:
See dokument on tõlgitud AI tõlketeenuse Co-op Translator abil. Kuigi püüame tagada täpsust, palume arvestada, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Algne dokument selle algses keeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitame kasutada professionaalset inimtõlget. Me ei vastuta arusaamatuste või valesti tõlgenduste eest, mis võivad tuleneda selle tõlke kasutamisest.


