Klikk på bildet ovenfor for å se videoen til denne leksjonen
LLM-er handler om mer enn bare chatbots og tekstgenerering. Det er også mulig å bygge søkeapplikasjoner ved hjelp av Embeddings. Embeddings er numeriske representasjoner av data, også kjent som vektorer, og kan brukes til semantisk søk etter data.
I denne leksjonen skal du bygge en søkeapplikasjon for vår utdanningsstartup. Vår startup er en ideell organisasjon som tilbyr gratis utdanning til studenter i utviklingsland. Startuppen har et stort antall YouTube-videoer som studenter kan bruke for å lære om AI. Startuppen ønsker å bygge en søkeapplikasjon som lar studenter søke etter en YouTube-video ved å skrive inn et spørsmål.
For eksempel kan en student skrive inn 'Hva er Jupyter Notebooks?' eller 'Hva er Azure ML', og søkeapplikasjonen vil returnere en liste over YouTube-videoer som er relevante for spørsmålet. Enda bedre, søkeapplikasjonen vil returnere en lenke til stedet i videoen hvor svaret på spørsmålet finnes.
I denne leksjonen vil vi dekke:
- Semantisk vs nøkkelordssøk.
- Hva er tekstembeddings.
- Opprette en tekstembedding-indeks.
- Søke i en tekstembedding-indeks.
Etter å ha fullført denne leksjonen, vil du kunne:
- Skille mellom semantisk og nøkkelordssøk.
- Forklare hva tekstembeddings er.
- Lage en applikasjon som bruker embeddings for å søke etter data.
Å lage en søkeapplikasjon vil hjelpe deg å forstå hvordan du bruker embeddings for å søke etter data. Du vil også lære hvordan du bygger en søkeapplikasjon som kan brukes av studenter for å finne informasjon raskt.
Leksjonen inkluderer en embedding-indeks av YouTube-transkriptene for Microsoft AI Show YouTube-kanalen. AI Show er en YouTube-kanal som lærer deg om AI og maskinlæring. Embedding-indeksen inneholder embeddings for hvert av YouTube-transkriptene frem til oktober 2023. Du vil bruke embedding-indeksen for å bygge en søkeapplikasjon for vår startup. Søkeapplikasjonen returnerer en lenke til stedet i videoen hvor svaret på spørsmålet finnes. Dette er en flott måte for studenter å finne informasjonen de trenger raskt.
Følgende er et eksempel på et semantisk søk for spørsmålet 'kan du bruke rstudio med azure ml?'. Sjekk ut YouTube-URL-en, du vil se at URL-en inneholder et tidsstempel som tar deg til stedet i videoen hvor svaret på spørsmålet finnes.
Nå lurer du kanskje på, hva er semantisk søk? Semantisk søk er en søketeknikk som bruker semantikken, eller betydningen, av ordene i en forespørsel for å returnere relevante resultater.
Her er et eksempel på et semantisk søk. La oss si at du ønsker å kjøpe en bil, du kan søke etter 'min drømmebil'. Semantisk søk forstår at du ikke drømmer om en bil, men heller ser etter din ideelle bil. Semantisk søk forstår intensjonen din og returnerer relevante resultater. Alternativet er nøkkelordssøk, som bokstavelig talt ville søkt etter drømmer om biler og ofte returnert irrelevante resultater.
Tekstembeddings er en teknikk for tekstrepresentasjon som brukes i naturlig språkbehandling. Tekstembeddings er semantiske numeriske representasjoner av tekst. Embeddings brukes til å representere data på en måte som er lett for en maskin å forstå. Det finnes mange modeller for å lage tekstembeddings, i denne leksjonen vil vi fokusere på å generere embeddings ved hjelp av OpenAI Embedding Model.
Her er et eksempel: Tenk deg at følgende tekst er i et transkript fra en av episodene på AI Show YouTube-kanalen:
Today we are going to learn about Azure Machine Learning.
Vi sender teksten til OpenAI Embedding API, og den returnerer følgende embedding som består av 1536 tall, også kjent som en vektor. Hvert tall i vektoren representerer et annet aspekt av teksten. For korthetens skyld er her de første 10 tallene i vektoren.
[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...]Embedding-indeksen for denne leksjonen ble opprettet med en serie Python-skript. Du finner skriptene sammen med instruksjoner i README i 'scripts'-mappen for denne leksjonen. Du trenger ikke å kjøre disse skriptene for å fullføre denne leksjonen, da embedding-indeksen er gitt til deg.
Skriptene utfører følgende operasjoner:
- Transkriptet for hver YouTube-video i AI Show-spillelisten lastes ned.
- Ved hjelp av OpenAI Functions forsøkes det å hente ut navnet på foredragsholderen fra de første 3 minuttene av YouTube-transkriptet. Navnet på foredragsholderen for hver video lagres i embedding-indeksen kalt
embedding_index_3m.json. - Transkriptteksten deles deretter opp i 3-minutters tekstsegmenter. Segmentet inkluderer omtrent 20 ord som overlapper fra neste segment for å sikre at embedding for segmentet ikke blir avbrutt og for å gi bedre søkekontekst.
- Hvert tekstsegment sendes deretter til OpenAI Chat API for å oppsummere teksten til 60 ord. Sammendraget lagres også i embedding-indeksen
embedding_index_3m.json. - Til slutt sendes segmentteksten til OpenAI Embedding API. Embedding API returnerer en vektor med 1536 tall som representerer den semantiske betydningen av segmentet. Segmentet sammen med OpenAI Embedding-vektoren lagres i embedding-indeksen
embedding_index_3m.json.
For enkelhetens skyld i leksjonen lagres embedding-indeksen i en JSON-fil kalt embedding_index_3m.json og lastes inn i en Pandas DataFrame. Men i produksjon ville embedding-indeksen bli lagret i en vektordatabase som Azure Cognitive Search, Redis, Pinecone, Weaviate, for å nevne noen.
Vi har lært om tekstembeddings, neste steg er å lære hvordan man bruker tekstembeddings for å søke etter data, og spesielt finne de mest like embeddings til en gitt forespørsel ved hjelp av kosinuslikhet.
Kosinuslikhet er et mål på likhet mellom to vektorer, du vil også høre dette referert til som nærmeste nabo-søk. For å utføre et kosinuslikhetssøk må du vektorisere for forespørselstekst ved hjelp av OpenAI Embedding API. Deretter beregner du kosinuslikheten mellom forespørselsvektoren og hver vektor i embedding-indeksen. Husk at embedding-indeksen har en vektor for hvert YouTube-transkripttekstsegment. Til slutt sorterer du resultatene etter kosinuslikhet, og tekstsegmentene med høyest kosinuslikhet er de mest like forespørselen.
Fra et matematisk perspektiv måler kosinuslikhet kosinus til vinkelen mellom to vektorer projisert i et flerdimensjonalt rom. Denne målingen er nyttig, fordi hvis to dokumenter er langt fra hverandre i euklidisk avstand på grunn av størrelse, kan de fortsatt ha en mindre vinkel mellom seg og derfor høyere kosinuslikhet. For mer informasjon om kosinuslikhetsligninger, se Cosine similarity.
Neste steg er å lære hvordan man bygger en søkeapplikasjon ved hjelp av embeddings. Søkeapplikasjonen vil la studenter søke etter en video ved å skrive inn et spørsmål. Søkeapplikasjonen vil returnere en liste over videoer som er relevante for spørsmålet. Søkeapplikasjonen vil også returnere en lenke til stedet i videoen hvor svaret på spørsmålet finnes.
Denne løsningen ble bygget og testet på Windows 11, macOS og Ubuntu 22.04 ved bruk av Python 3.10 eller nyere. Du kan laste ned Python fra python.org.
Vi introduserte vår startup i begynnelsen av denne leksjonen. Nå er det på tide å hjelpe studentene med å bygge en søkeapplikasjon for deres vurderinger.
I denne oppgaven vil du opprette Azure OpenAI Services som vil bli brukt til å bygge søkeapplikasjonen. Du vil opprette følgende Azure OpenAI Services. Du trenger et Azure-abonnement for å fullføre denne oppgaven.
- Logg inn på Azure-portalen.
- Velg Cloud Shell-ikonet øverst til høyre i Azure-portalen.
- Velg Bash som miljøtype.
For disse instruksjonene bruker vi ressursgruppen kalt "semantic-video-search" i East US. Du kan endre navnet på ressursgruppen, men når du endrer plasseringen for ressursene, sjekk modelltilgjengelighetstabellen.
az group create --name semantic-video-search --location eastusFra Azure Cloud Shell, kjør følgende kommando for å opprette en Azure OpenAI Service-ressurs.
az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \
--location eastus --kind OpenAI --sku s0Fra Azure Cloud Shell, kjør følgende kommandoer for å hente endepunkt og nøkler for Azure OpenAI Service-ressursen.
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 .key1Fra Azure Cloud Shell, kjør følgende kommando for å distribuere OpenAI Embedding-modellen.
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"Åpne løsningsnotatboken i GitHub Codespaces og følg instruksjonene i Jupyter Notebook.
Når du kjører notatboken, vil du bli bedt om å skrive inn en forespørsel. Inndataboksen vil se slik ut:
Etter å ha fullført denne leksjonen, sjekk ut vår Generativ AI læringssamling for å fortsette å utvikle din kunnskap om Generativ AI!
Gå videre til leksjon 9 hvor vi skal se på hvordan man bygger applikasjoner for bildegenerering!
Ansvarsfraskrivelse:
Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten Co-op Translator. Selv om vi tilstreber nøyaktighet, vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.


