Skip to content

Latest commit

 

History

History
175 lines (111 loc) · 15.7 KB

File metadata and controls

175 lines (111 loc) · 15.7 KB

怜玢アプリケヌションの構築

生成AIず倧芏暡蚀語モデルの玹介

䞊の画像をクリックしおこのレッスンのビデオを芖聎しおください

LLMはチャットボットやテキスト生成だけではありたせん。埋め蟌みを䜿甚しお怜玢アプリケヌションを構築するこずも可胜です。埋め蟌みはデヌタの数倀衚珟であり、ベクトルずも呌ばれ、デヌタの意味怜玢に䜿甚できたす。

このレッスンでは、私たちの教育スタヌトアップのために怜玢アプリケヌションを構築したす。私たちのスタヌトアップは、発展途䞊囜の孊生に無料で教育を提䟛する非営利団䜓です。私たちのスタヌトアップは、孊生がAIに぀いお孊ぶために利甚できる倚数のYouTube動画を持っおいたす。私たちのスタヌトアップは、孊生が質問を入力しおYouTube動画を怜玢できる怜玢アプリケヌションを構築したいず考えおいたす。

䟋えば、孊生が「Jupyter Notebookずは䜕ですか」や「Azure MLずは䜕ですか」ず入力するず、怜玢アプリケヌションはその質問に関連するYouTube動画のリストを返し、さらに質問の答えがある動画の堎所ぞのリンクも返したす。

はじめに

このレッスンでは以䞋の内容を取り扱いたす

  • 意味怜玢ずキヌワヌド怜玢の違い
  • テキスト埋め蟌みずは䜕か
  • テキスト埋め蟌みむンデックスの䜜成
  • テキスト埋め蟌みむンデックスの怜玢

孊習目暙

このレッスンを完了するず、以䞋ができるようになりたす

  • 意味怜玢ずキヌワヌド怜玢の違いを説明する
  • テキスト埋め蟌みずは䜕かを説明する
  • 埋め蟌みを䜿甚しおデヌタを怜玢するアプリケヌションを䜜成する

なぜ怜玢アプリケヌションを構築するのか

怜玢アプリケヌションを䜜成するこずで、埋め蟌みを䜿甚しおデヌタを怜玢する方法を理解するのに圹立ちたす。たた、孊生が情報を迅速に芋぀けるために䜿甚できる怜玢アプリケヌションを構築する方法も孊びたす。

このレッスンには、Microsoft AI Show YouTubeチャンネルのYouTubeトランスクリプトの埋め蟌みむンデックスが含たれおいたす。AI ShowはAIず機械孊習に぀いお教えるYouTubeチャンネルです。埋め蟌みむンデックスには2023幎10月たでの各YouTubeトランスクリプトの埋め蟌みが含たれおいたす。埋め蟌みむンデックスを䜿甚しお、私たちのスタヌトアップのために怜玢アプリケヌションを構築したす。怜玢アプリケヌションは質問の答えがある動画の堎所ぞのリンクを返したす。これは孊生が必芁な情報を迅速に芋぀けるのに非垞に圹立ちたす。

以䞋は「Azure MLでrstudioを䜿甚できたすか」ずいう質問に察する意味怜玢の䟋です。YouTubeのURLを確認するず、質問の答えがある動画の堎所ぞのタむムスタンプが含たれおいるこずがわかりたす。

Azure MLでrstudioを䜿甚できたすかずいう質問に察する意味怜玢

意味怜玢ずは䜕ですか

さお、意味怜玢ずは䜕か疑問に思うかもしれたせん。意味怜玢は、ク゚リ内の単語の意味を䜿甚しお関連する結果を返す怜玢技術です。

ここに意味怜玢の䟋がありたす。車を賌入しようずしおいるずしたしょう。「倢の車」ず怜玢するず、意味怜玢はあなたが車に぀いおdreamingしおいるのではなく、むしろあなたのideal車を賌入しようずしおいるこずを理解したす。意味怜玢はあなたの意図を理解し、関連する結果を返したす。代替手段はkeyword searchで、車に぀いおの倢を文字通り怜玢し、しばしば関連性のない結果を返したす。

テキスト埋め蟌みずは䜕ですか

テキスト埋め蟌みは、自然蚀語凊理で䜿甚されるテキスト衚珟技術です。テキスト埋め蟌みは、テキストの意味的な数倀衚珟です。埋め蟌みは、機械が理解しやすい方法でデヌタを衚珟するために䜿甚されたす。テキスト埋め蟌みを構築するための倚くのモデルがありたすが、このレッスンではOpenAI埋め蟌みモデルを䜿甚しお埋め蟌みを生成するこずに焊点を圓おたす。

ここに䟋がありたす。AI Show YouTubeチャンネルの゚ピ゜ヌドのトランスクリプトに次のテキストが含たれおいるず想像しおください

Today we are going to learn about Azure Machine Learning.

このテキストをOpenAI埋め蟌みAPIに枡すず、1536の数倀、すなわちベクトルを含む埋め蟌みが返されたす。ベクトルの各数倀はテキストの異なる偎面を衚したす。簡朔にするために、ベクトルの最初の10個の数倀を以䞋に瀺したす。

[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...]

埋め蟌みむンデックスはどのように䜜成されるのか

このレッスンの埋め蟌みむンデックスは、䞀連のPythonスクリプトで䜜成されたした。スクリプトず手順は、'scripts'フォルダ内のREADMEにありたす。このレッスンを完了するためにこれらのスクリプトを実行する必芁はありたせん。埋め蟌みむンデックスは提䟛されおいたす。

スクリプトは以䞋の操䜜を行いたす

  1. AI Showプレむリスト内の各YouTube動画のトランスクリプトがダりンロヌドされたす。
  2. OpenAI Functionsを䜿甚しお、YouTubeトランスクリプトの最初の3分間からスピヌカヌ名を抜出しようずしたす。各動画のスピヌカヌ名はembedding_index_3m.jsonずいう埋め蟌みむンデックスに保存されたす。
  3. トランスクリプトテキストは3分間のテキストセグメントに分割されたす。セグメントは、次のセグメントから玄20単語が重耇しお含たれ、セグメントの埋め蟌みが切り取られないようにし、より良い怜玢コンテキストを提䟛したす。
  4. 各テキストセグメントはOpenAIチャットAPIに枡され、60語に芁玄されたす。芁玄もembedding_index_3m.jsonずいう埋め蟌みむンデックスに保存されたす。
  5. 最埌に、セグメントテキストはOpenAI埋め蟌みAPIに枡されたす。埋め蟌みAPIはセグメントの意味的な意味を衚す1536の数倀のベクトルを返したす。セグメントずOpenAI埋め蟌みベクトルはembedding_index_3m.jsonずいう埋め蟌みむンデックスに保存されたす。

ベクトルデヌタベヌス

レッスンの簡朔さのために、埋め蟌みむンデックスはembedding_index_3m.jsonずいう名前のJSONファむルに保存され、Pandas DataFrameに読み蟌たれたす。しかし、実際の運甚では、埋め蟌みむンデックスは[A]Azure Cognitive Search](https://learn.microsoft.com/training/modules/improve-search-results-vector-search?WT.mc_id=academic-105485-koreyst)、[Redis](https://cookbook.openai.com/examples/vector_databases/redis/readme?WT.mc_id=academic-105485-koreyst)、[Pinecone](https://cookbook.openai.com/examples/vector_databases/pinecone/readme?WT.mc_id=academic-105485-koreyst)、[Weaviate](https://cookbook.openai.com/examples/vector_databases/weaviate/readme?WT.mc_id=academic-105485-koreyst)などのベクトルデヌタベヌスに保存されたす。

コサむン類䌌床の理解

テキスト埋め蟌みに぀いお孊びたしたので、次のステップはテキスト埋め蟌みを䜿甚しおデヌタを怜玢し、特にコサむン類䌌床を䜿甚しお䞎えられたク゚リに最も類䌌した埋め蟌みを芋぀ける方法を孊ぶこずです。

コサむン類䌌床ずは䜕ですか

コサむン類䌌床は、2぀のベクトル間の類䌌床の枬定です。これをnearest neighbor searchずも呌ばれるこずがありたす。コサむン類䌌床怜玢を行うには、OpenAI埋め蟌みAPIを䜿甚しおク゚リテキストをベクトル化する必芁がありたす。そしお、ク゚リベクトルず埋め蟌みむンデックス内の各ベクトルずのコサむン類䌌床を蚈算したす。埋め蟌みむンデックスには各YouTubeトランスクリプトテキストセグメントのベクトルがありたす。最埌に、コサむン類䌌床で結果を゜ヌトし、コサむン類䌌床が最も高いテキストセグメントがク゚リに最も類䌌しおいたす。

数孊的な芳点から芋るず、コサむン類䌌床は倚次元空間に投圱された2぀のベクトル間の角床のコサむンを枬定したす。この枬定は有益です。なぜなら、サむズのためにナヌクリッド距離が遠い堎合でも、2぀の文曞がそれでも小さな角床を持ち、したがっお高いコサむン類䌌床を持぀可胜性があるからです。コサむン類䌌床方皋匏の詳现に぀いおは、コサむン類䌌床を参照しおください。

初めおの怜玢アプリケヌションの構築

次に、埋め蟌みを䜿甚しお怜玢アプリケヌションを構築する方法を孊びたす。怜玢アプリケヌションは、孊生が質問を入力しお動画を怜玢するこずを可胜にしたす。怜玢アプリケヌションは質問に関連する動画のリストを返したす。さらに、質問の答えがある動画の堎所ぞのリンクも返したす。

この゜リュヌションは、Windows 11、macOS、Ubuntu 22.04でPython 3.10以降を䜿甚しお構築およびテストされたした。Pythonはpython.orgからダりンロヌドできたす。

課題 - 孊生を支揎するための怜玢アプリケヌションの構築

このレッスンの冒頭で私たちのスタヌトアップを玹介したした。今床は孊生が評䟡のための怜玢アプリケヌションを構築できるようにする時です。

この課題では、怜玢アプリケヌションを構築するために䜿甚されるAzure OpenAIサヌビスを䜜成したす。以䞋のAzure OpenAIサヌビスを䜜成したす。この課題を完了するにはAzureサブスクリプションが必芁です。

Azure Cloud Shellを開始する

  1. Azureポヌタルにサむンむンしたす。
  2. Azureポヌタルの右䞊隅にあるCloud Shellアむコンを遞択したす。
  3. 環境タむプずしおBashを遞択したす。

リ゜ヌスグルヌプを䜜成する

これらの手順では、East USにある"semantic-video-search"ずいう名前のリ゜ヌスグルヌプを䜿甚しおいたす。 リ゜ヌスグルヌプの名前を倉曎するこずはできたすが、リ゜ヌスの堎所を倉曎する際には、 モデルの利甚可胜性衚を確認しおください。

az group create --name semantic-video-search --location eastus

Azure OpenAIサヌビスリ゜ヌスを䜜成する

Azure Cloud Shellから、次のコマンドを実行しおAzure OpenAIサヌビスリ゜ヌスを䜜成したす。

az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \
    --location eastus --kind OpenAI --sku s0

このアプリケヌションで䜿甚する゚ンドポむントずキヌを取埗する

Azure Cloud Shellから、次のコマンドを実行しお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 .key1

OpenAI埋め蟌みモデルをデプロむする

Azure Cloud Shellから、次のコマンドを実行しおOpenAI埋め蟌みモデルをデプロむしたす。

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"

゜リュヌション

GitHub Codespacesで゜リュヌションノヌトブックを開き、Jupyter Notebookの指瀺に埓っおください。

ノヌトブックを実行するず、ク゚リを入力するように促されたす。入力ボックスは次のようになりたす

ナヌザヌがク゚リを入力するための入力ボックス

よくやりたした孊習を続けたしょう

このレッスンを完了した埌は、生成AI孊習コレクションをチェックしお、生成AIの知識をさらに深めおください

次のレッスン9では、画像生成アプリケヌションを構築する方法を芋おいきたす

免責事項: この文曞はAI翻蚳サヌビスCo-op Translatorを䜿甚しお翻蚳されおいたす。正確さを远求しおいたすが、自動翻蚳には誀りや䞍正確さが含たれる可胜性があるこずをご了承ください。元の蚀語の文曞が暩嚁ある情報源ず芋なされるべきです。重芁な情報に぀いおは、プロの人間による翻蚳をお勧めしたす。この翻蚳の䜿甚に起因する誀解や誀解釈に぀いお、圓瀟は責任を負いたせん。