Klicka på bilden ovan för att se videon för denna lektion
Det finns mer att utforska med LLMs än bara chatbotar och textgenerering. Det är också möjligt att bygga sökapplikationer med hjälp av Embeddings. Embeddings är numeriska representationer av data, även kända som vektorer, och kan användas för semantisk sökning av data.
I denna lektion ska du bygga en sökapplikation för vår utbildningsstartup. Vår startup är en ideell organisation som erbjuder gratis utbildning till studenter i utvecklingsländer. Startupen har ett stort antal YouTube-videor som studenter kan använda för att lära sig om AI. Startupen vill bygga en sökapplikation som gör det möjligt för studenter att söka efter en YouTube-video genom att skriva en fråga.
Till exempel kan en student skriva in 'Vad är Jupyter Notebooks?' eller 'Vad är Azure ML' och sökapplikationen kommer att returnera en lista med YouTube-videor som är relevanta för frågan, och ännu bättre, sökapplikationen kommer att returnera en länk till den plats i videon där svaret på frågan finns.
I denna lektion kommer vi att täcka:
- Semantisk vs nyckelordssökning.
- Vad är Text Embeddings.
- Skapa ett Text Embeddings Index.
- Söka i ett Text Embeddings Index.
Efter att ha avslutat denna lektion kommer du att kunna:
- Förstå skillnaden mellan semantisk och nyckelordssökning.
- Förklara vad Text Embeddings är.
- Skapa en applikation med Embeddings för att söka efter data.
Att skapa en sökapplikation hjälper dig att förstå hur man använder Embeddings för att söka efter data. Du kommer också att lära dig hur man bygger en sökapplikation som kan användas av studenter för att snabbt hitta information.
Lektionens Embedding Index innehåller transkriptioner från YouTube-videor på Microsofts AI Show YouTube-kanal. AI Show är en YouTube-kanal som lär dig om AI och maskininlärning. Embedding Index innehåller Embeddings för varje YouTube-transkription fram till oktober 2023. Du kommer att använda Embedding Index för att bygga en sökapplikation för vår startup. Sökapplikationen returnerar en länk till den plats i videon där svaret på frågan finns. Detta är ett utmärkt sätt för studenter att snabbt hitta den information de behöver.
Följande är ett exempel på en semantisk fråga för frågan 'kan du använda rstudio med azure ml?'. Kolla in YouTube-URL:en, du kommer att se att URL:en innehåller en tidsstämpel som tar dig till den plats i videon där svaret på frågan finns.
Nu kanske du undrar, vad är semantisk sökning? Semantisk sökning är en sökteknik som använder semantiken, eller betydelsen, av orden i en fråga för att returnera relevanta resultat.
Här är ett exempel på semantisk sökning. Låt oss säga att du letar efter att köpa en bil, du kanske söker efter 'min drömbil', semantisk sökning förstår att du inte drömmer om en bil, utan snarare letar efter att köpa din ideala bil. Semantisk sökning förstår din avsikt och returnerar relevanta resultat. Alternativet är nyckelordssökning som bokstavligen skulle söka efter drömmar om bilar och ofta returnera irrelevanta resultat.
Text embeddings är en teknik för textrepresentation som används inom naturlig språkbehandling. Text embeddings är semantiska numeriska representationer av text. Embeddings används för att representera data på ett sätt som är lätt för en maskin att förstå. Det finns många modeller för att skapa text embeddings, och i denna lektion kommer vi att fokusera på att generera embeddings med OpenAI Embedding Model.
Här är ett exempel, föreställ dig att följande text finns i en transkription från ett avsnitt på AI Show YouTube-kanalen:
Today we are going to learn about Azure Machine Learning.
Vi skickar texten till OpenAI Embedding API och det skulle returnera följande embedding bestående av 1536 siffror, även kallad en vektor. Varje siffra i vektorn representerar en annan aspekt av texten. För korthetens skull är här de första 10 siffrorna i vektorn.
[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...]Embedding Index för denna lektion skapades med en serie Python-skript. Du hittar skripten tillsammans med instruktioner i README i mappen 'scripts' för denna lektion. Du behöver inte köra dessa skript för att slutföra denna lektion eftersom Embedding Index tillhandahålls för dig.
Skripten utför följande operationer:
- Transkriptionen för varje YouTube-video i AI Show spellistan laddas ner.
- Med hjälp av OpenAI Functions görs ett försök att extrahera talarens namn från de första 3 minuterna av YouTube-transkriptionen. Talarens namn för varje video lagras i Embedding Index som heter
embedding_index_3m.json. - Transkriptionstexten delas sedan upp i 3-minuters textsegment. Segmentet inkluderar cirka 20 ord som överlappar från nästa segment för att säkerställa att Embedding för segmentet inte avbryts och för att ge bättre sökkontext.
- Varje textsegment skickas sedan till OpenAI Chat API för att sammanfatta texten till 60 ord. Sammanfattningen lagras också i Embedding Index
embedding_index_3m.json. - Slutligen skickas segmenttexten till OpenAI Embedding API. Embedding API returnerar en vektor med 1536 siffror som representerar den semantiska betydelsen av segmentet. Segmentet tillsammans med OpenAI Embedding-vektorn lagras i Embedding Index
embedding_index_3m.json.
För enkelhetens skull i lektionen lagras Embedding Index i en JSON-fil som heter embedding_index_3m.json och laddas in i en Pandas DataFrame. Men i produktion skulle Embedding Index lagras i en vektordatabas som Azure Cognitive Search, Redis, Pinecone, Weaviate, för att nämna några.
Vi har lärt oss om text embeddings, nästa steg är att lära oss hur man använder text embeddings för att söka efter data och särskilt hitta de mest liknande embeddings till en given fråga med hjälp av kosinuslikhet.
Kosinuslikhet är ett mått på likhet mellan två vektorer, du kommer också att höra detta refereras till som närmaste grann-sökning. För att utföra en kosinuslikhetssökning behöver du vektorisera för _fråge_text med hjälp av OpenAI Embedding API. Sedan beräknar du kosinuslikheten mellan frågevektorn och varje vektor i Embedding Index. Kom ihåg att Embedding Index har en vektor för varje YouTube-transkriptionstextsegment. Slutligen sorterar du resultaten efter kosinuslikhet och textsegmenten med högst kosinuslikhet är de mest liknande frågan.
Ur ett matematiskt perspektiv mäter kosinuslikhet kosinus för vinkeln mellan två vektorer projicerade i ett multidimensionellt utrymme. Denna mätning är fördelaktig, eftersom om två dokument är långt ifrån varandra enligt euklidiskt avstånd på grund av storlek, kan de fortfarande ha en mindre vinkel mellan sig och därmed högre kosinuslikhet. För mer information om kosinuslikhetsekvationer, se Cosine similarity.
Nästa steg är att lära oss hur man bygger en sökapplikation med Embeddings. Sökapplikationen gör det möjligt för studenter att söka efter en video genom att skriva en fråga. Sökapplikationen returnerar en lista med videor som är relevanta för frågan. Sökapplikationen returnerar också en länk till den plats i videon där svaret på frågan finns.
Denna lösning byggdes och testades på Windows 11, macOS och Ubuntu 22.04 med Python 3.10 eller senare. Du kan ladda ner Python från python.org.
Vi introducerade vår startup i början av denna lektion. Nu är det dags att möjliggöra för studenterna att bygga en sökapplikation för sina bedömningar.
I denna uppgift kommer du att skapa Azure OpenAI Services som kommer att användas för att bygga sökapplikationen. Du kommer att skapa följande Azure OpenAI Services. Du behöver ett Azure-abonnemang för att slutföra denna uppgift.
- Logga in på Azure-portalen.
- Välj Cloud Shell-ikonen i det övre högra hörnet av Azure-portalen.
- Välj Bash som miljötyp.
För dessa instruktioner använder vi resursgruppen med namnet "semantic-video-search" i East US. Du kan ändra namnet på resursgruppen, men när du ändrar platsen för resurserna, kontrollera modellens tillgänglighetstabell.
az group create --name semantic-video-search --location eastusFrån Azure Cloud Shell, kör följande kommando för att skapa en Azure OpenAI Service-resurs.
az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \
--location eastus --kind OpenAI --sku s0Från Azure Cloud Shell, kör följande kommandon för att hämta endpoint och nycklar för Azure OpenAI Service-resursen.
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 .key1Från Azure Cloud Shell, kör följande kommando för att distribuera 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"Öppna lösningsnotebooken i GitHub Codespaces och följ instruktionerna i Jupyter Notebook.
När du kör notebooken kommer du att bli ombedd att ange en fråga. Inmatningsrutan kommer att se ut så här:
Efter att ha avslutat denna lektion, kolla in vår Generativ AI Learning-samling för att fortsätta utveckla din kunskap om Generativ AI!
Gå vidare till Lektion 9 där vi kommer att titta på hur man bygger applikationer för bildgenerering!
Ansvarsfriskrivning:
Detta dokument har översatts med hjälp av AI-översättningstjänsten Co-op Translator. Även om vi strävar efter noggrannhet, bör det noteras att automatiserade översättningar kan innehålla fel eller felaktigheter. Det ursprungliga dokumentet på dess originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning.


