Kliknite na obrázok vyššie, aby ste si pozreli video k tejto lekcii
LLM (veľké jazykové modely) nie sú len o chatbotoch a generovaní textu. Je možné vytvárať aj aplikácie na vyhľadávanie pomocou vektorových reprezentácií (Embeddings). Embeddings sú číselné reprezentácie dát, známe aj ako vektory, a môžu byť použité na sémantické vyhľadávanie dát.
V tejto lekcii budete vytvárať aplikáciu na vyhľadávanie pre náš vzdelávací startup. Náš startup je nezisková organizácia, ktorá poskytuje bezplatné vzdelávanie študentom v rozvojových krajinách. Máme veľké množstvo YouTube videí, ktoré študenti môžu použiť na učenie sa o AI. Náš startup chce vytvoriť aplikáciu na vyhľadávanie, ktorá umožní študentom vyhľadávať YouTube video zadaním otázky.
Napríklad, študent môže zadať otázku ako 'Čo sú Jupyter Notebooks?' alebo 'Čo je Azure ML?' a aplikácia na vyhľadávanie vráti zoznam YouTube videí, ktoré sú relevantné k otázke. Ešte lepšie, aplikácia na vyhľadávanie vráti odkaz na miesto vo videu, kde sa nachádza odpoveď na otázku.
V tejto lekcii sa budeme venovať:
- Rozdielu medzi sémantickým a kľúčovým vyhľadávaním.
- Čo sú textové embeddings.
- Vytváraniu indexu textových embeddings.
- Vyhľadávaniu v indexe textových embeddings.
Po dokončení tejto lekcie budete schopní:
- Rozlíšiť sémantické vyhľadávanie od kľúčového vyhľadávania.
- Vysvetliť, čo sú textové embeddings.
- Vytvoriť aplikáciu na vyhľadávanie dát pomocou embeddings.
Vytvorenie aplikácie na vyhľadávanie vám pomôže pochopiť, ako používať embeddings na vyhľadávanie dát. Naučíte sa tiež, ako vytvoriť aplikáciu na vyhľadávanie, ktorú môžu študenti použiť na rýchle nájdenie informácií.
Lekcia obsahuje index embeddings pre prepisy YouTube videí z kanála Microsoft AI Show. AI Show je YouTube kanál, ktorý vás učí o AI a strojovom učení. Index embeddings obsahuje embeddings pre každý prepis YouTube videí až do októbra 2023. Použijete tento index embeddings na vytvorenie aplikácie na vyhľadávanie pre náš startup. Aplikácia na vyhľadávanie vráti odkaz na miesto vo videu, kde sa nachádza odpoveď na otázku. Toto je skvelý spôsob, ako študenti môžu rýchlo nájsť potrebné informácie.
Nasleduje príklad sémantického dotazu na otázku 'môžete použiť rstudio s azure ml?'. Pozrite si URL YouTube, uvidíte, že URL obsahuje časovú značku, ktorá vás zavedie na miesto vo videu, kde sa nachádza odpoveď na otázku.
Možno sa pýtate, čo je sémantické vyhľadávanie? Sémantické vyhľadávanie je technika vyhľadávania, ktorá používa význam slov v dotaze na vrátenie relevantných výsledkov.
Tu je príklad sémantického vyhľadávania. Povedzme, že chcete kúpiť auto, môžete vyhľadávať 'moje vysnívané auto'. Sémantické vyhľadávanie chápe, že nehľadáte sny o aute, ale skôr hľadáte svoje ideálne auto. Sémantické vyhľadávanie chápe váš zámer a vráti relevantné výsledky. Alternatívou je kľúčové vyhľadávanie, ktoré by doslovne hľadalo sny o autách a často vrátilo nerelevantné výsledky.
Textové embeddings sú technika reprezentácie textu používaná v spracovaní prirodzeného jazyka. Textové embeddings sú sémantické číselné reprezentácie textu. Embeddings sa používajú na reprezentáciu dát spôsobom, ktorý je pre stroj ľahko pochopiteľný. Existuje mnoho modelov na vytváranie textových embeddings, v tejto lekcii sa zameriame na generovanie embeddings pomocou modelu OpenAI Embedding.
Tu je príklad, predstavte si nasledujúci text v prepise jednej z epizód na YouTube kanáli AI Show:
Today we are going to learn about Azure Machine Learning.
Text by sme odoslali do OpenAI Embedding API a vrátil by sa nasledujúci embedding pozostávajúci z 1536 čísel, známych ako vektor. Každé číslo vo vektore predstavuje iný aspekt textu. Pre stručnosť uvádzame prvých 10 čísel vo vektore.
[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...]Index embeddings pre túto lekciu bol vytvorený pomocou série Python skriptov. Skripty spolu s pokynmi nájdete v README v priečinku 'scripts' pre túto lekciu. Na dokončenie tejto lekcie nemusíte spúšťať tieto skripty, pretože index embeddings je pre vás pripravený.
Skripty vykonávajú nasledujúce operácie:
- Prepis každého YouTube videa v zozname AI Show sa stiahne.
- Pomocou OpenAI Functions sa pokúsi extrahovať meno rečníka z prvých 3 minút prepisu YouTube. Meno rečníka pre každé video sa uloží do indexu embeddings s názvom
embedding_index_3m.json. - Text prepisu sa potom rozdelí na 3-minútové textové segmenty. Segment obsahuje približne 20 slov, ktoré sa prekrývajú s nasledujúcim segmentom, aby sa zabezpečilo, že embedding segmentu nebude prerušený a aby poskytoval lepší kontext vyhľadávania.
- Každý textový segment sa potom odošle do OpenAI Chat API, aby sa text zhrnul do 60 slov. Zhrnutie sa tiež uloží do indexu embeddings
embedding_index_3m.json. - Nakoniec sa text segmentu odošle do OpenAI Embedding API. Embedding API vráti vektor 1536 čísel, ktoré reprezentujú sémantický význam segmentu. Segment spolu s OpenAI embedding vektorom sa uloží do indexu embeddings
embedding_index_3m.json.
Pre zjednodušenie lekcie je index embeddings uložený v JSON súbore s názvom embedding_index_3m.json a načítaný do Pandas DataFrame. Avšak v produkcii by bol index embeddings uložený vo vektorovej databáze, ako napríklad Azure Cognitive Search, Redis, Pinecone, Weaviate, a ďalšie.
Už sme sa naučili o textových embeddings, ďalším krokom je naučiť sa, ako používať textové embeddings na vyhľadávanie dát, a konkrétne, ako nájsť najpodobnejšie embeddings k danému dotazu pomocou kosínovej podobnosti.
Kosínová podobnosť je mierou podobnosti medzi dvoma vektormi, často sa označuje ako vyhľadávanie najbližšieho suseda. Na vykonanie vyhľadávania pomocou kosínovej podobnosti je potrebné vektorizovať text dotazu pomocou OpenAI Embedding API. Potom vypočítať kosínovú podobnosť medzi vektorom dotazu a každým vektorom v indexe embeddings. Pamätajte, že index embeddings má vektor pre každý textový segment prepisu YouTube. Nakoniec zoradiť výsledky podľa kosínovej podobnosti a textové segmenty s najvyššou kosínovou podobnosťou sú najpodobnejšie dotazu.
Z matematického hľadiska kosínová podobnosť meria kosínus uhla medzi dvoma vektormi premietnutými v multidimenzionálnom priestore. Toto meranie je užitočné, pretože ak sú dva dokumenty vzdialené podľa euklidovskej vzdialenosti kvôli veľkosti, môžu mať stále menší uhol medzi nimi a teda vyššiu kosínovú podobnosť. Pre viac informácií o rovniciach kosínovej podobnosti si pozrite Kosínová podobnosť.
Ďalej sa naučíme, ako vytvoriť aplikáciu na vyhľadávanie pomocou embeddings. Aplikácia na vyhľadávanie umožní študentom vyhľadávať video zadaním otázky. Aplikácia na vyhľadávanie vráti zoznam videí, ktoré sú relevantné k otázke. Aplikácia na vyhľadávanie tiež vráti odkaz na miesto vo videu, kde sa nachádza odpoveď na otázku.
Toto riešenie bolo vytvorené a testované na Windows 11, macOS a Ubuntu 22.04 pomocou Pythonu 3.10 alebo novšieho. Python si môžete stiahnuť z python.org.
Na začiatku tejto lekcie sme predstavili náš startup. Teraz je čas umožniť študentom vytvoriť aplikáciu na vyhľadávanie pre ich úlohy.
V tejto úlohe vytvoríte služby Azure OpenAI, ktoré budú použité na vytvorenie aplikácie na vyhľadávanie. Vytvoríte nasledujúce služby Azure OpenAI. Na dokončenie tejto úlohy budete potrebovať predplatné Azure.
- Prihláste sa do Azure portálu.
- Vyberte ikonu Cloud Shell v pravom hornom rohu Azure portálu.
- Vyberte Bash ako typ prostredia.
Pre tieto pokyny používame skupinu zdrojov s názvom "semantic-video-search" vo východných USA. Môžete zmeniť názov skupiny zdrojov, ale pri zmene umiestnenia zdrojov si overte tabuľku dostupnosti modelov.
az group create --name semantic-video-search --location eastusZ Azure Cloud Shell spustite nasledujúci príkaz na vytvorenie zdroja služby Azure OpenAI.
az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \
--location eastus --kind OpenAI --sku s0Z Azure Cloud Shell spustite nasledujúce príkazy na získanie koncového bodu a kľúčov pre zdroj služby Azure OpenAI.
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 .key1Z Azure Cloud Shell spustite nasledujúci príkaz na nasadenie modelu OpenAI Embedding.
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"Otvorte notebook s riešením v GitHub Codespaces a postupujte podľa pokynov v Jupyter Notebooku.
Keď spustíte notebook, budete vyzvaní na zadanie dotazu. Vstupné pole bude vyzerať takto:
Po dokončení tejto lekcie si pozrite našu zbierku vzdelávania o generatívnej AI, aby ste si rozšírili svoje vedomosti o generatívnej AI!
Prejdite na lekciu 9, kde sa pozrieme na to, ako vytvárať aplikácie na generovanie obrázkov!
Zrieknutie sa zodpovednosti:
Tento dokument bol preložený pomocou služby AI prekladu Co-op Translator. Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.


