Klikkaa yllä olevaa kuvaa nähdäksesi tämän oppitunnin videon
Suuret kielimallit (LLM) tarjoavat enemmän kuin chatbotit ja tekstin luomisen. On myös mahdollista rakentaa hakusovelluksia käyttämällä upotuksia. Upotukset ovat datan numeerisia esityksiä, tunnetaan myös vektoreina, ja niitä voidaan käyttää semanttiseen datan hakuun.
Tässä oppitunnissa rakennat hakusovelluksen koulutusstartupillemme. Startupimme on voittoa tavoittelematon organisaatio, joka tarjoaa ilmaista koulutusta opiskelijoille kehittyvissä maissa. Startupillamme on suuri määrä YouTube-videoita, joita opiskelijat voivat käyttää oppiakseen tekoälystä. Startupimme haluaa rakentaa hakusovelluksen, jonka avulla opiskelijat voivat etsiä YouTube-videota kirjoittamalla kysymyksen.
Esimerkiksi opiskelija saattaa kirjoittaa 'Mitä ovat Jupyter-muistikirjat?' tai 'Mikä on Azure ML' ja hakusovellus palauttaa listan YouTube-videoista, jotka ovat relevantteja kysymykselle, ja vielä parempaa, hakusovellus palauttaa linkin siihen kohtaan videosta, jossa kysymyksen vastaus sijaitsee.
Tässä oppitunnissa käsitellään:
- Semanttinen vs avainsanahaku.
- Mitä ovat tekstin upotukset.
- Tekstin upotusindeksin luominen.
- Tekstin upotusindeksin hakeminen.
Oppitunnin jälkeen osaat:
- Erottaa semanttisen ja avainsanahaun toisistaan.
- Selittää, mitä tekstin upotukset ovat.
- Luoda sovelluksen, joka käyttää upotuksia datan hakemiseen.
Hakusovelluksen luominen auttaa sinua ymmärtämään, kuinka käyttää upotuksia datan hakemiseen. Opit myös, kuinka rakentaa hakusovelluksen, jota opiskelijat voivat käyttää tiedon nopeaan löytämiseen.
Oppitunnissa on mukana YouTube-transkriptien upotusindeksi Microsoftin AI Show YouTube-kanavalle. AI Show on YouTube-kanava, joka opettaa tekoälystä ja koneoppimisesta. Upotusindeksi sisältää upotukset kullekin YouTube-transkriptille lokakuuhun 2023 asti. Käytät upotusindeksiä rakentaaksesi hakusovelluksen startupillemme. Hakusovellus palauttaa linkin siihen kohtaan videosta, jossa kysymyksen vastaus sijaitsee. Tämä on loistava tapa opiskelijoille löytää tarvitsemaansa tietoa nopeasti.
Seuraavassa on esimerkki semanttisesta kyselystä kysymykselle 'voiko rstudioa käyttää azure ml:n kanssa?'. Katso YouTube-url, näet, että url sisältää aikaleiman, joka vie sinut siihen kohtaan videosta, jossa kysymyksen vastaus sijaitsee.
Saatat nyt ihmetellä, mitä semanttinen haku on? Semanttinen haku on hakutekniikka, joka käyttää kyselyn sanojen semantiikkaa eli merkitystä palauttaakseen relevantteja tuloksia.
Tässä on esimerkki semanttisesta hausta. Oletetaan, että etsit autoa ostettavaksi, saatat hakea 'unelma-autoni', semanttinen haku ymmärtää, että et ole dreaming autosta, vaan etsit ostettavaksi ideal autoa. Semanttinen haku ymmärtää aikomuksesi ja palauttaa relevantteja tuloksia. Vaihtoehtona on keyword search, joka kirjaimellisesti hakisi unelmia autoista ja usein palauttaisi epäolennaisia tuloksia.
Tekstin upotukset ovat tekstin esitystekniikka, jota käytetään luonnollisen kielen prosessoinnissa. Tekstin upotukset ovat tekstin semanttisia numeerisia esityksiä. Upotuksia käytetään esittämään dataa tavalla, joka on koneelle helppo ymmärtää. On monia malleja tekstin upotusten rakentamiseen, tässä oppitunnissa keskitymme upotusten luomiseen käyttämällä OpenAI:n upotusmallia.
Tässä on esimerkki, kuvittele seuraavan tekstin olevan transkriptissä yhdestä AI Show YouTube-kanavan jaksosta:
Today we are going to learn about Azure Machine Learning.
Lähetämme tekstin OpenAI:n upotus-API:lle ja se palauttaa seuraavan upotuksen, joka koostuu 1536 numerosta eli vektorista. Jokainen numero vektorissa edustaa eri aspektia tekstistä. Lyhyyden vuoksi tässä ovat vektorin ensimmäiset 10 numeroa.
[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...]Tämän oppitunnin upotusindeksi luotiin sarjalla Python-skriptejä. Löydät skriptit ja ohjeet README -tiedostosta 'scripts' -kansiosta tälle oppitunnille. Sinun ei tarvitse suorittaa näitä skriptejä suorittaaksesi tämän oppitunnin, sillä upotusindeksi on tarjottu sinulle.
Skriptit suorittavat seuraavat toiminnot:
- Transkripti kustakin YouTube-videosta AI Show -soittolistalla ladataan.
- Käyttäen OpenAI:n funktioita, yritetään poimia puhujan nimi YouTube-transkriptin ensimmäisiltä 3 minuutilta. Kunkin videon puhujan nimi tallennetaan upotusindeksiin nimeltä
embedding_index_3m.json. - Transkriptiteksti jaetaan 3 minuutin tekstisegmentteihin. Segmentti sisältää noin 20 sanaa päällekkäin seuraavasta segmentistä varmistaakseen, että segmentin upotus ei katkea ja tarjotakseen paremman hakukontekstin.
- Kukin tekstisegmentti lähetetään OpenAI:n chat-API:lle tiivistettäväksi 60 sanaan. Tiivistelmä tallennetaan myös upotusindeksiin
embedding_index_3m.json. - Lopuksi segmenttiteksti lähetetään OpenAI:n upotus-API:lle. Upotus-API palauttaa vektorin, joka koostuu 1536 numerosta, jotka edustavat segmentin semanttista merkitystä. Segmentti yhdessä OpenAI:n upotusvektorin kanssa tallennetaan upotusindeksiin
embedding_index_3m.json.
Oppitunnin yksinkertaisuuden vuoksi upotusindeksi tallennetaan JSON-tiedostoon nimeltä embedding_index_3m.json ja ladataan Pandas DataFrameen. Kuitenkin tuotannossa upotusindeksi tallennettaisiin vektoripohjaiseen tietokantaan, kuten Azure Cognitive Search, Redis, Pinecone, Weaviate, vain muutamia mainitakseni.
Olemme oppineet tekstin upotuksista, seuraava askel on oppia käyttämään tekstin upotuksia datan hakemiseen ja erityisesti löytämään samankaltaisimmat upotukset annetulle kyselylle kosinissamankaltaisuuden avulla.
Kosinissamankaltaisuus on kahden vektorin samankaltaisuuden mittari, tätä kutsutaan myös nearest neighbor search. Kosinissamankaltaisuushaku suoritetaan vektorisoimalla kyselyteksti OpenAI:n upotus-API:n avulla. Sitten lasketaan kosinissamankaltaisuus kyselyvektorin ja kunkin vektorin välillä upotusindeksissä. Muista, että upotusindeksissä on vektori kullekin YouTube-transkriptin tekstisegmentille. Lopuksi järjestä tulokset kosinissamankaltaisuuden mukaan, ja tekstisegmentit, joilla on korkeimmat kosinissamankaltaisuudet, ovat samankaltaisimpia kyselyyn nähden.
Matemaattisesta näkökulmasta kosinissamankaltaisuus mittaa kulman kosinia kahden vektorin välillä, jotka on projisoitu monidimensionaaliseen tilaan. Tämä mittaus on hyödyllinen, koska vaikka kaksi dokumenttia olisivat kaukana toisistaan euklidisella etäisyydellä koon vuoksi, niillä voisi silti olla pienempi kulma niiden välillä ja siten korkeampi kosinissamankaltaisuus. Lisätietoja kosinissamankaltaisuusyhtälöistä, katso Kosinissamankaltaisuus.
Seuraavaksi opimme rakentamaan hakusovelluksen käyttäen upotuksia. Hakusovellus sallii opiskelijoiden hakea videota kirjoittamalla kysymyksen. Hakusovellus palauttaa listan videoista, jotka ovat relevantteja kysymykselle. Hakusovellus palauttaa myös linkin siihen kohtaan videosta, jossa kysymyksen vastaus sijaitsee.
Tämä ratkaisu on rakennettu ja testattu Windows 11, macOS ja Ubuntu 22.04 -käyttöjärjestelmissä käyttäen Python 3.10 tai uudempi. Voit ladata Pythonin python.org -sivustolta.
Esittelimme startupimme tämän oppitunnin alussa. Nyt on aika mahdollistaa opiskelijoiden rakentaa hakusovellus heidän arviointeihinsa.
Tässä tehtävässä luot Azure OpenAI -palvelut, joita käytetään hakusovelluksen rakentamiseen. Luot seuraavat Azure OpenAI -palvelut. Tarvitset Azure-tilauksen suorittaaksesi tämän tehtävän.
- Kirjaudu sisään Azure-portaaliin.
- Valitse Cloud Shell -kuvake Azure-portaalin oikeasta yläkulmasta.
- Valitse Bash ympäristötyypiksi.
Näissä ohjeissa käytämme resurssiryhmää nimeltä "semantic-video-search" Itä-Yhdysvalloissa. Voit muuttaa resurssiryhmän nimeä, mutta kun muutat resurssien sijaintia, tarkista mallin saatavuustaulukko.
az group create --name semantic-video-search --location eastusSuorita Azure Cloud Shellistä seuraava komento luodaksesi Azure OpenAI -palveluresurssi.
az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \
--location eastus --kind OpenAI --sku s0Suorita Azure Cloud Shellistä seuraavat komennot saadaksesi päätepisteen ja avaimet Azure OpenAI -palveluresurssille.
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 .key1Suorita Azure Cloud Shellistä seuraava komento ottaaksesi käyttöön OpenAI:n upotusmalli.
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"Avaa ratkaisuvihko GitHub Codespacesissa ja seuraa ohjeita Jupyter-muistikirjassa.
Kun suoritat muistikirjan, sinua pyydetään syöttämään kysely. Syöttöruutu näyttää tältä:
Oppitunnin suorittamisen jälkeen tutustu Generatiivisen tekoälyn oppimiskokoelmaan jatkaaksesi generatiivisen tekoälyosaamisen kehittämistä!
Siirry oppituntiin 9, jossa tarkastelemme kuinka rakentaa kuvien luomissovelluksia!
Vastuuvapauslauseke:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua Co-op Translator. Vaikka pyrimme tarkkuuteen, on hyvä huomata, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Tärkeissä tiedoissa suositellaan ammattimaisen ihmiskääntäjän käyttöä. Emme ole vastuussa väärinkäsityksistä tai virheellisistä tulkinnoista, jotka johtuvat tämän käännöksen käytöstä.


