Klik op de afbeelding hierboven om de video van deze les te bekijken
Er is meer mogelijk met LLM's dan alleen chatbots en tekstgeneratie. Het is ook mogelijk om zoekapplicaties te bouwen met behulp van Embeddings. Embeddings zijn numerieke representaties van data, ook wel vectoren genoemd, en kunnen worden gebruikt voor semantisch zoeken naar data.
In deze les ga je een zoekapplicatie bouwen voor ons educatieve startup. Onze startup is een non-profitorganisatie die gratis onderwijs biedt aan studenten in ontwikkelingslanden. Onze startup heeft een groot aantal YouTube-video's die studenten kunnen gebruiken om meer te leren over AI. Onze startup wil een zoekapplicatie bouwen waarmee studenten een YouTube-video kunnen zoeken door een vraag in te typen.
Bijvoorbeeld, een student kan typen: 'Wat zijn Jupyter Notebooks?' of 'Wat is Azure ML?' en de zoekapplicatie zal een lijst met YouTube-video's teruggeven die relevant zijn voor de vraag. Nog beter, de zoekapplicatie zal een link teruggeven naar het specifieke moment in de video waar het antwoord op de vraag te vinden is.
In deze les behandelen we:
- Semantisch versus Keyword zoeken.
- Wat zijn Text Embeddings.
- Het maken van een Text Embeddings Index.
- Het zoeken in een Text Embeddings Index.
Na het voltooien van deze les kun je:
- Het verschil uitleggen tussen semantisch en keyword zoeken.
- Uitleggen wat Text Embeddings zijn.
- Een applicatie maken die Embeddings gebruikt om data te zoeken.
Het maken van een zoekapplicatie helpt je te begrijpen hoe je Embeddings kunt gebruiken om data te zoeken. Je leert ook hoe je een zoekapplicatie kunt bouwen die door studenten kan worden gebruikt om snel informatie te vinden.
De les bevat een Embedding Index van de YouTube-transcripten van het Microsoft AI Show YouTube-kanaal. De AI Show is een YouTube-kanaal dat je leert over AI en machine learning. De Embedding Index bevat de Embeddings voor elk van de YouTube-transcripten tot oktober 2023. Je zult de Embedding Index gebruiken om een zoekapplicatie te bouwen voor onze startup. De zoekapplicatie geeft een link terug naar het specifieke moment in de video waar het antwoord op de vraag te vinden is. Dit is een geweldige manier voor studenten om snel de informatie te vinden die ze nodig hebben.
Hieronder staat een voorbeeld van een semantische zoekopdracht voor de vraag 'kun je rstudio gebruiken met azure ml?'. Bekijk de YouTube-URL, je zult zien dat de URL een timestamp bevat die je naar het specifieke moment in de video brengt waar het antwoord op de vraag te vinden is.
Je vraagt je misschien af, wat is semantisch zoeken? Semantisch zoeken is een zoektechniek die de semantiek, of betekenis, van de woorden in een zoekopdracht gebruikt om relevante resultaten te retourneren.
Hier is een voorbeeld van semantisch zoeken. Stel dat je een auto wilt kopen, je zou kunnen zoeken naar 'mijn droomauto'. Semantisch zoeken begrijpt dat je niet droomt over een auto, maar dat je op zoek bent naar je ideale auto. Semantisch zoeken begrijpt je intentie en retourneert relevante resultaten. Het alternatief is keyword zoeken, dat letterlijk zoekt naar dromen over auto's en vaak irrelevante resultaten retourneert.
Text embeddings zijn een techniek voor tekstrepresentatie die wordt gebruikt in natural language processing. Text embeddings zijn semantische numerieke representaties van tekst. Embeddings worden gebruikt om data te representeren op een manier die gemakkelijk te begrijpen is voor een machine. Er zijn veel modellen voor het bouwen van text embeddings, in deze les richten we ons op het genereren van embeddings met behulp van het OpenAI Embedding Model.
Hier is een voorbeeld: stel je voor dat de volgende tekst in een transcript staat van een van de afleveringen op het AI Show YouTube-kanaal:
Today we are going to learn about Azure Machine Learning.
We zouden de tekst doorgeven aan de OpenAI Embedding API en deze zou de volgende embedding retourneren, bestaande uit 1536 nummers, ook wel een vector genoemd. Elk nummer in de vector vertegenwoordigt een ander aspect van de tekst. Voor de duidelijkheid, hier zijn de eerste 10 nummers in de vector.
[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...]De Embedding Index voor deze les is gemaakt met een reeks Python-scripts. Je vindt de scripts samen met instructies in de README in de 'scripts'-map van deze les. Je hoeft deze scripts niet uit te voeren om deze les te voltooien, aangezien de Embedding Index al voor je beschikbaar is.
De scripts voeren de volgende bewerkingen uit:
- Het transcript van elke YouTube-video in de AI Show afspeellijst wordt gedownload.
- Met behulp van OpenAI Functions wordt geprobeerd de naam van de spreker te extraheren uit de eerste 3 minuten van het YouTube-transcript. De naam van de spreker voor elke video wordt opgeslagen in de Embedding Index genaamd
embedding_index_3m.json. - De transcripttekst wordt vervolgens opgedeeld in tekstsegmenten van 3 minuten. Het segment bevat ongeveer 20 overlappende woorden van het volgende segment om ervoor te zorgen dat de Embedding van het segment niet wordt afgebroken en om een betere zoekcontext te bieden.
- Elk tekstsegment wordt vervolgens doorgegeven aan de OpenAI Chat API om de tekst samen te vatten in 60 woorden. De samenvatting wordt ook opgeslagen in de Embedding Index
embedding_index_3m.json. - Ten slotte wordt de segmenttekst doorgegeven aan de OpenAI Embedding API. De Embedding API retourneert een vector van 1536 nummers die de semantische betekenis van het segment vertegenwoordigen. Het segment samen met de OpenAI Embedding vector wordt opgeslagen in een Embedding Index
embedding_index_3m.json.
Voor de eenvoud in deze les wordt de Embedding Index opgeslagen in een JSON-bestand genaamd embedding_index_3m.json en geladen in een Pandas DataFrame. In een productieomgeving zou de Embedding Index echter worden opgeslagen in een vector database zoals Azure Cognitive Search, Redis, Pinecone, Weaviate, om er maar een paar te noemen.
We hebben geleerd over text embeddings, de volgende stap is leren hoe je text embeddings kunt gebruiken om data te zoeken en in het bijzonder de meest vergelijkbare embeddings kunt vinden voor een gegeven zoekopdracht met behulp van cosine similarity.
Cosine similarity is een maatstaf voor de gelijkenis tussen twee vectoren, ook wel nearest neighbor search genoemd. Om een cosine similarity zoekopdracht uit te voeren, moet je de query tekst vectoriseren met behulp van de OpenAI Embedding API. Vervolgens bereken je de cosine similarity tussen de query vector en elke vector in de Embedding Index. Onthoud dat de Embedding Index een vector heeft voor elk tekstsegment van het YouTube-transcript. Ten slotte sorteer je de resultaten op cosine similarity en de tekstsegmenten met de hoogste cosine similarity zijn het meest vergelijkbaar met de zoekopdracht.
Vanuit een wiskundig perspectief meet cosine similarity de cosine van de hoek tussen twee vectoren geprojecteerd in een multidimensionale ruimte. Deze meting is nuttig, omdat als twee documenten ver uit elkaar liggen in Euclidische afstand vanwege grootte, ze nog steeds een kleinere hoek tussen zich kunnen hebben en daardoor een hogere cosine similarity. Voor meer informatie over cosine similarity vergelijkingen, zie Cosine similarity.
Vervolgens gaan we leren hoe je een zoekapplicatie kunt bouwen met Embeddings. De zoekapplicatie stelt studenten in staat om een video te zoeken door een vraag in te typen. De zoekapplicatie retourneert een lijst met video's die relevant zijn voor de vraag. De zoekapplicatie geeft ook een link terug naar het specifieke moment in de video waar het antwoord op de vraag te vinden is.
Deze oplossing is gebouwd en getest op Windows 11, macOS en Ubuntu 22.04 met Python 3.10 of later. Je kunt Python downloaden van python.org.
We hebben onze startup geïntroduceerd aan het begin van deze les. Nu is het tijd om de studenten in staat te stellen een zoekapplicatie te bouwen voor hun assessments.
In deze opdracht maak je de Azure OpenAI Services die worden gebruikt om de zoekapplicatie te bouwen. Je zult de volgende Azure OpenAI Services maken. Je hebt een Azure-abonnement nodig om deze opdracht te voltooien.
- Log in op het Azure portal.
- Selecteer het Cloud Shell-icoon in de rechterbovenhoek van het Azure portal.
- Selecteer Bash als omgevingstype.
Voor deze instructies gebruiken we de resourcegroep genaamd "semantic-video-search" in East US.
Je kunt de naam van de resourcegroep wijzigen, maar bij het wijzigen van de locatie voor de resources,
controleer de modelbeschikbaarheidstabel.
az group create --name semantic-video-search --location eastusVoer vanuit de Azure Cloud Shell het volgende commando uit om een Azure OpenAI Service resource te maken.
az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \
--location eastus --kind OpenAI --sku s0Voer vanuit de Azure Cloud Shell de volgende commando's uit om de endpoint en sleutels voor de Azure OpenAI Service resource te verkrijgen.
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 .key1Voer vanuit de Azure Cloud Shell het volgende commando uit om het OpenAI Embedding model te implementeren.
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"Open het oplossingsnotebook in GitHub Codespaces en volg de instructies in het Jupyter Notebook.
Wanneer je het notebook uitvoert, wordt je gevraagd om een zoekopdracht in te voeren. Het invoerveld ziet er als volgt uit:
Na het voltooien van deze les, bekijk onze Generatieve AI Leercollectie om je kennis over Generatieve AI verder te ontwikkelen!
Ga verder naar Les 9, waar we gaan kijken hoe je applicaties voor beeldgeneratie kunt bouwen!
Disclaimer:
Dit document is vertaald met behulp van de AI-vertalingsservice Co-op Translator. Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor kritieke informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.


