Upgrade to Pro — share decks privately, control downloads, hide ads and more …

生成AI時代の検索手法〜スターウォーズの登場人物で紐解くベクトル/セマンティック/ハイブリッド...

 生成AI時代の検索手法〜スターウォーズの登場人物で紐解くベクトル/セマンティック/ハイブリッド検索〜/wakarimiaisearch

最近は御存知の通り生成AIがブームですよね。これに伴い、検索技術の世界でも新たな波が押し寄せてきています。キーワード中心の従来の検索方法は、文書中の単語の出現頻度を基準にしていましたが、最近では、文章自体の意味を把握する「ベクトル検索」という技術が注目を集め、検索の精度が飛躍的に向上しています。更に精度を高める手段として、マイクロソフトが提供するマネージドな全文検索サービス「Azure AI Search」があります。。これを使うことで、キーワード検索とベクトル検索を巧みに組み合わせた「ハイブリッド検索」により、より高度な検索結果を得ることができます。

さらに、生成AIに外部の情報源を組み込むことによって回答の質を向上させるRAG(Retrieval-Augmented Generation)の登場も、このベクトル検索やハイブリッド検索の需要を推し進めているとも言えます。

本資料では、従来のキーワード検索から最新のベクトル検索、さらにはAzure AI Searchを駆使したハイブリッド検索の実践的な応用について、スターウォーズの登場人物を例に上げて実際に検索を行うことで、分かりやすくご紹介します。もちろん、スターウォーズをご存知ない方でも、十分にご理解いただける内容となっております。

Noriyuki TAKEI

January 30, 2024
Tweet

More Decks by Noriyuki TAKEI

Other Decks in Technology

Transcript

  1. Noriyuki TAKEI ෢Ҫ ٓߦ Information • サイオステクノロジー株式会社 • Microsoft MVP

    for Microsoft Azure Favorites • Azure • パデル • スキー • ライブ配信 • ⽢いもの • ⾛ること blog https://tech-lab.sios.jp/ core skill Azureによるクラウドネイティブな アプリ開発 Twitter @noriyukitakei
  2. 様々な検索⼿法 これは従来から使われている検索⽅法で、転置インデックスというもの を作成し、その転置インデックスから検索をして、対象のドキュメント を引っ張ってくる⽅法である。 キーワード検索 ベクトル検索は、テキストや画像などのデータを多次元のベクトルに変 換し、これらのベクトル間の類似度を計算することで、関連性の⾼い情 報を迅速に検索する技術である。 ベクトル検索 キーワード検索で得られた検索結果に対して、マイクロソフト独⾃のAI

    モデルによって検索結果をさらに並べ替える⼿法である。 セマンティック 検索 キーワード検索とベクトル検索による検索結果を組み合わせて、さらに 精度を⾼める⽅法である。 ハイブリッド 検索 キーワード検索とベクトル検索に加えて、さらにセマンティック検索に よる検索結果を組み合わせて、さらに精度を⾼める⽅法である。 セマンティック ハイブリッド 検索
  3. テキストの前処理 ドキュメント1を形態素解析する。 猫 は 素晴らしい ペット です 。 猫 は

    とても 可愛い です 。 猫 素晴らしい ペット とても 可愛い 重複単語を削除 助詞などを削除 猫 は 素晴らしい ペット です とても 可愛い 。 猫は素晴らしいペットです。猫はとても可愛いです。 ⽂章を最⼩の意味を持つ単位に分割
  4. テキストの前処理 猫 素晴らしい ペット とても 可愛い ドキュメント1 ⽝ 素晴らしい ペット

    忠実 ドキュメント2 ⿃ 素晴らしい 歌 歌う 美しい ドキュメント3 猫 ⽝ ⼈気 ペット ドキュメント4 ドキュメントを2〜4も合わせて形態素解析を⾏う。結果は以下の通り。
  5. 転置インデックスの作成 猫 ドキュメント1, ドキュメント4 素晴らしい ドキュメント1, ドキュメント2, ドキュメント3 ペット ドキュメント1,

    ドキュメント2, ドキュメント4 とても ドキュメント1 可愛い ドキュメント1 ⽝ ドキュメント2, ドキュメント4 忠実 ドキュメント2 ⿃ ドキュメント3 歌 ドキュメント3 歌う ドキュメント3 美しい ドキュメント3 ⼈気 ドキュメント3 前処理の結果をもとに転置インデックスを以下のように作成する。
  6. 検索結果の順位付け 𝑇𝐹!,# = $!,# ∑#$% & $!,# = 特定の単語の出現回数 ドキュメント内の総単語数

    𝐼𝐷𝐹' = 𝑙𝑜𝑔 𝑁 𝑑𝑓' = 𝑙𝑜𝑔 ドキュメントの総数 その単語を含むドキュメント数 各⽂書中に含まれる各単語が、その⽂書内でどれくらい重要かを表す尺度 term frequency - inverse document frequency TF-IDF = TF ✕ IDF
  7. 検索結果の順位付け 「猫」 という単語で検索した場合を考えてみる。 まずは TF を求める。 ドキュメント1の猫という単語のTF = 猫という単語の出現回数! ドキュメント"の総単語数#

    = 0.4 ドキュメント2の猫という単語のTF = 猫という単語の出現回数$ ドキュメント!の総単語数# = 0 ドキュメント3の猫という単語のTF = 猫という単語の出現回数$ ドキュメント%の総単語数& = 0 ドキュメント4の猫という単語のTF = 猫という単語の出現回数" ドキュメント'の総単語数' = 0.25 ドキュメント1が最も猫という単語の出現頻度が⾼い⽂書である
  8. 検索結果の順位付け 「猫」 という単語 IDF を求める。 猫という単語のIDF = 𝑙𝑜𝑔 ドキュメントの総数! 猫という単語を含むドキュメント数"

    = 0.301 「猫」 という単語が含まれるドキュメントは、 全体のドキュメントの中でも 希少価値が⾼い︕︕
  9. 検索結果の順位付け ドキュメント1の猫という単語のTF-IDF = 0.12 ドキュメント2の猫という単語のTF-IDF = 0 ドキュメント3の猫という単語のTF-IDF = 0

    ドキュメント4の猫という単語のTF-IDF = 0.06 ドキュメント1が最もユーザーの求めるものに近いドキュメント である。 「猫」 という単語 TF-IDF を求める。
  10. 検索結果の順位付け 「素晴らしい」という単語で検索した場合を考えてみる。 まずは TF を求める。 ドキュメント1の 「素晴らしい」 という単語のTF = 「素晴らしい」という単語の出現回数!

    ドキュメント!の総単語数" = 0.25 ドキュメント2の 「素晴らしい」 という単語のTF = 「素晴らしい」という単語の出現回数! ドキュメント#の総単語数$ = 0.2 ドキュメント3の 「素晴らしい」 という単語のTF = 「素晴らしい」という単語の出現回数! ドキュメント%の総単語数& = 0.167 ドキュメント4の 「素晴らしい」 という単語のTF = 「素晴らしい」という単語の出現回数' ドキュメント"の総単語数" = 0 ドキュメント1が最も「素晴らしい」という単語の出現頻度が⾼ い⽂書である
  11. 検索結果の順位付け 「素晴らしい」という単語 TF-IDF を求める。 ドキュメント1の「素晴らしい」という単語のTF-IDF = 0.031 ドキュメント2の 「素晴らしい」 という単語のTF-IDF

    = 0.025 ドキュメント3の 「素晴らしい」 という単語のTF-IDF = 0.02 ドキュメント4の 「素晴らしい」 という単語のTF-IDF = 0.031
  12. 検索結果の順位付け TF IDF TF ✕ IDF 猫 ドキュメント1 0.4 0.301

    0.12 ドキュメント2 0 0 ドキュメント3 0 0 ドキュメント4 0.25 0.06 素晴らしい ドキュメント1 0.25 0.125 0.031 ドキュメント2 0.2 0.025 ドキュメント3 0.167 0.02 ドキュメント4 0.25 0.031 ドキュメント4を⽐べてみると、「猫」も「素晴らしい」もTF(ドキュメント内の 単語の出現頻度)は同じだが、IDF(ドキュメントの希少性)は「猫」のほうが⼤きい。 「猫」で検索したときのほうがよりユーザーの望むドキュメントと⾔える。
  13. 様々な検索⼿法 これは従来から使われている検索⽅法で、転置インデックスというもの を作成し、その転置インデックスから検索をして、対象のドキュメント を引っ張ってくる⽅法である。 キーワード検索 ベクトル検索は、テキストや画像などのデータを多次元のベクトルに変 換し、これらのベクトル間の類似度を計算することで、関連性の⾼い情 報を迅速に検索する技術である。 ベクトル検索 キーワード検索で得られた検索結果に対して、マイクロソフト独⾃のAI

    モデルによって検索結果をさらに並べ替える⼿法である。 セマンティック 検索 キーワード検索とベクトル検索による検索結果を組み合わせて、さらに 精度を⾼める⽅法である。 ハイブリッド 検索 キーワード検索とベクトル検索に加えて、さらにセマンティック検索に よる検索結果を組み合わせて、さらに精度を⾼める⽅法である。 セマンティック ハイブリッド 検索
  14. C( , ) = 0.999 コサイン類似度 C( , ) =

    0.786 と の⽅が 似ている りんご いちご りんご ハバネロ りんご いちご と より りんご ハバネロ
  15. タイトル 本⽂ ベクトルデータ ダース・ベイダー01 ジェダイ時代のアナキンは、愛 する者を守りたいという純粋な 願望と… [0.014032107,- 0.0075616054,…] ダース・ベイダー02

    危機を察して駆けつけたシディ アスにより救出され、サイボー グ化⼿術を施されて… [0.014539597,- 0.015440392,…] ダース・ベイダー03 そんな折、息⼦であるルーク・ スカイウォーカーと出会い皇帝 すら凌ぐ可能性を秘めた類稀な る才能に⽬をつける。… [0.035118327,0.0351 18327,…] Azure AI Search Azure OpenAI Service Wikipedia ジェダイ時代のアナキンは、 愛する者を守りたいという 純粋な願望と若さ故の激情 から、ジェダイの掟を何度 となく破ってしまう… ダース・ベイダー ① Wikipedia本⽂取得 ジェダイ時代のアナキンは、 愛する者を守りたいという 純粋な願望と若さ故の激情 から、ジェダイの掟を何度 となく破ってしまう… ダース・ベイダー-03.txt ジェダイ時代のアナキンは、 愛する者を守りたいという 純粋な願望と若さ故の激情 から、ジェダイの掟を何度 となく破ってしまう… ダース・ベイダー-02.txt ジェダイ時代のアナキンは、 愛する者を守りたいという 純粋な願望と… ダース・ベイダー-01.txt ジェダイ時代のアナキンは、 愛する者を守りたいという 純粋な願望と… ダース・ベイダー-01.txt ② LangChainによる ドキュメントのチャンク化 [0.014032107,- 0.0075616054,…] ダース・ベイダー-01.txt ③ Embeddings API発⾏ ④ ベクトル化データ取得 ⑤ ドキュメント登録 [0.014032107,- 0.0075616054,…] ダース・ベイダー-01.txt
  16. タイトル 本⽂ ベクトルデータ ダース・ベイダー01 ジェダイ時代のアナキンは、愛 する者を守りたいという純粋な 願望と… [0.014032107,- 0.0075616054,…] ダース・ベイダー02

    危機を察して駆けつけたシディ アスにより救出され、サイボー グ化⼿術を施されて… [0.014539597,- 0.015440392,…] ダース・ベイダー03 そんな折、息⼦であるルーク・ スカイウォーカーと出会い皇帝 すら凌ぐ可能性を秘めた類稀な る才能に⽬をつける。… [0.035118327,0.0351 18327,…] Azure AI Search Azure OpenAI Service Wikipedia ジェダイ時代のアナキンは、 愛する者を守りたいという 純粋な願望と若さ故の激情 から、ジェダイの掟を何度 となく破ってしまう… ダース・ベイダー ① Wikipedia本⽂取得 ジェダイ時代のアナキンは、 愛する者を守りたいという 純粋な願望と若さ故の激情 から、ジェダイの掟を何度 となく破ってしまう… ダース・ベイダー-03.txt ジェダイ時代のアナキンは、 愛する者を守りたいという 純粋な願望と若さ故の激情 から、ジェダイの掟を何度 となく破ってしまう… ダース・ベイダー-02.txt ジェダイ時代のアナキンは、 愛する者を守りたいという 純粋な願望と… ダース・ベイダー-01.txt ジェダイ時代のアナキンは、 愛する者を守りたいという 純粋な願望と… ダース・ベイダー-01.txt ② LangChainによる ドキュメントのチャンク化 [0.014032107,- 0.0075616054,…] ダース・ベイダー-01.txt ③ Embeddings API発⾏ ④ ベクトル化データ取得 ⑤ ドキュメント登録 [0.014032107,- 0.0075616054,…] ダース・ベイダー-01.txt
  17. ベクトル検索の検証 ドキュメントを登録するためのインデックスをAzure AI Searchに作成します。 1. Wikipedia本⽂取得 / 2.LangChainによるドキュメントのチャンク化 import wikipedia

    from langchain.text_splitter import RecursiveCharacterTextSplitter import os def save_chunks_to_files(title, chunk_size, chunk_overlap, output_dir='data', lang='ja‘): # Wikipediaページの取得 wikipedia.set_lang(lang) page = wikipedia.page(title) text = page.content # テキストをチャンクに分割 splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder( encoding_name='cl100k_base‘, chunk_size=chunk_size, chunk_overlap=chunk_overlap ) chunks = splitter.split_text(text) …省略…
  18. ベクトル検索の検証 今回は以下の登場⼈物の情報を取得します。 • ルーク・スカイウォーカー • ダース・ベイダー • レイア・オーガナ • ハン・ソロ

    • ヨーダ • オビ=ワン・ケノービ • チューバッカ • シーヴ・パルパティーン • アナキン・スカイウォーカー • ランド・カルリジアン • パドメ・アミダラ • ボバ・フェット • キャプテン・ファズマ • C-3PO • レイ (スター・ウォーズ)
  19. ベクトル検索の検証 ジェダイ時代のアナキン は、愛する者を守りたい という純粋な願望と若さ 故の激情から、ジェダイ の掟を何度となく破って しまう。特に、妻パド メ・アミダラが死の運命 にあるという予知夢を⾒ た後は[注

    1]、妻を救う ⼒を得たいと願うあまり にシスの暗⿊卿ダース・ シディアス(後の銀河帝 国皇帝)の… ジェダイ時代のアナキンは、愛する 者を守りたいという純粋な願望と若 さ故の激情から、ジェダイの掟を何 度となく破ってしまう。… ダース・ベイダー-01.txt 危機を察して駆けつけたシディアス により救出され、サイボーグ化⼿術 を施されて⼀命は取り留めたものの シディアスが… ダース・ベイダー-02.txt 以降は帝国軍の指揮官として反乱同 盟軍によるレジスタンス活動の制圧 に従事することとなり、『反乱者た ち』ではその反乱軍として… ダース・ベイダー-03.txt Azure OpenAI Service チャンク化 ベクトル化 [0.014032107, -0.0075616054,…] [0.014032107, -0.0075616054,…] [0.014032107, -0.0075616054,…] Azure AI Search テキストをベクトル化するEmbeddings APIは、リクエストのトークン数に限度(text-embedding-ada-002で は8191トークン)があるのでテキストを細かく分割する(チャンク化)が必要になります。
  20. タイトル 本⽂ ベクトルデータ ダース・ベイダー01 ジェダイ時代のアナキンは、愛 する者を守りたいという純粋な 願望と… [0.014032107,- 0.0075616054,…] ダース・ベイダー02

    危機を察して駆けつけたシディ アスにより救出され、サイボー グ化⼿術を施されて… [0.014539597,- 0.015440392,…] ダース・ベイダー03 そんな折、息⼦であるルーク・ スカイウォーカーと出会い皇帝 すら凌ぐ可能性を秘めた類稀な る才能に⽬をつける。… [0.035118327,0.0351 18327,…] Azure AI Search Azure OpenAI Service Wikipedia ジェダイ時代のアナキンは、 愛する者を守りたいという 純粋な願望と若さ故の激情 から、ジェダイの掟を何度 となく破ってしまう… ダース・ベイダー ① Wikipedia本⽂取得 ジェダイ時代のアナキンは、 愛する者を守りたいという 純粋な願望と若さ故の激情 から、ジェダイの掟を何度 となく破ってしまう… ダース・ベイダー-03.txt ジェダイ時代のアナキンは、 愛する者を守りたいという 純粋な願望と若さ故の激情 から、ジェダイの掟を何度 となく破ってしまう… ダース・ベイダー-02.txt ジェダイ時代のアナキンは、 愛する者を守りたいという 純粋な願望と… ダース・ベイダー-01.txt ジェダイ時代のアナキンは、 愛する者を守りたいという 純粋な願望と… ダース・ベイダー-01.txt ② LangChainによる ドキュメントのチャンク化 [0.014032107,- 0.0075616054,…] ダース・ベイダー-01.txt ③ Embeddings API発⾏ ④ ベクトル化データ取得 ⑤ ドキュメント登録 [0.014032107,- 0.0075616054,…] ダース・ベイダー-01.txt
  21. ベクトル検索の検証 3. Embeddings API発⾏ / 4. ベクトル化データ取得 / 5. ドキュメント登録

    import requests # HTTPリクエストを送信するためのライブラリ import os # OSの機能を利⽤するためのライブラリ import base64 # データをBase64形式でエンコード/デコードするためのライブラリ # ファイルをAzure AI SearchのAPIに登録する関数 def post_file_to_search_api(file_path): # Azure AI SearchのAPIのエンドポイントURL srch_api_endpoint = "https://[Azure AI Searchのサービス名].search.windows.net/indexes/wiki/docs/index?api- version=2023-11-01" # Azure AI SearchのAPIのキー srch_api_key = "XXXXXX" # AOAI APIのエンドポイントURL aoai_api_endpoint = "https://[Azure OpenAI Serviceのサービス名].openai.azure.com/openai/deployments/[モデルtext- embedding-ada-002のデプロイ名]/embeddings?api-version=2023-05-15" # AOAI APIのキー aoai_api_key = "XXXXXX" …省略…
  22. ベクトル検索の検証 以下のクエリを⽤いて、キーワード検索とベクトル検索の結果を⽐較します。 エピソード1〜3で語られるダースベーダーの本当の名前は︖ まずはキーワード検索を⾏い、その結果を取得します。 $ curl -X POST "https://[Azure AI

    Searchのサービス名].search.windows.net/indexes/wiki/docs/search?api-version=2023- 11-01" \ -H "Content-Type: application/json" \ -H "api-key: [Azure AI SearchのAPIキー]" \ -d ‘{ "queryType": "simple", "search": "エピソード1〜3で語られるダースベーダーの本当の名前は?", "searchFields":"content", "select": "title, content", "highlight": "content", "highlightPreTag": "<b>", "highlightPostTag": "</b>", "count": true }' \ | jq queryTypeをsimpleにする。
  23. ベクトル検索の検証 次にベクトル検索を⾏います。 まずは検索クエリ「エピソード1〜3で語られるダースベーダーの本当の名前は︖」のベクトル化を⾏います。 $ embedding=$(curl -s -X POST "https://[Azure OpenAI

    Serviceのサービス名].openai.azure.com/openai/deployments/[ モデルtext-embedding-ada-002のデプロイ名]/embeddings?api-version=2023-05-15" \ -H 'Content-Type: application/json' \ -H 'api-key: [Azure OpenAI ServiceのAPIキー]' \ -d '{"input": "エピソード1〜3で語られるダースベーダーの本当の名前は?"}' \ | jq '.data[0].embedding')
  24. ベクトル検索の検証 $ curl -X POST "https://[Azure AI Searchのサービス名].search.windows.net/indexes/wiki/docs/search?api-version=2023- 11-01" \

    -H "Content-Type: application/json" \ -H "api-key: [Azure AI SearchのAPIキー]" \ -d '{ "count": true, "select": "title, content", "vectorQueries": [ { "fields": "contentVector", "kind": "vector", "vector": '$embedding', "exhaustive": true } ] }' | jq ベクトル化したクエリを⽤いて、Azure AI Searchに登録されたドキュメントに対してベクトル検索を⾏いま す。 ここにベクトル化されたクエリを指定する。
  25. ベクトル検索の検証 キーワード検索 ベクトル検索 == 備考 ==『エピソード6』にて、ルークがレ イアに「本当の⺟親」の印象について尋ねる場⾯ がある。この時、ルークは既にレイアが⾃⾝の双 ⼦の妹である事を知っていた事と、“本当の”と前 置きしていることから、…

    アナキン・スカイウォーカーを主⼈公とする3部 作(『エピソード1 ファントム・メナス』、『エ ピソード2 クローンの攻撃』、『エピソード3 シ スの復讐』)のヒロインとして登場。… 検索クエリ: エピソード1〜3で語られるダースベーダーの本当の名前は︖ 形態素解析: エピソード 1 3 語る ダースベーダー 本当 名前 レイア・オーガナ-12.txt パドメ・アミダラ-01.txt === 『エピソード6』での配役変更 ===\n2004年製作以降の映像ソフトでは死後 フォースと⼀体化し霊体として登場するアナキ ン・スカイウォーカーの姿がセバスチャン・ショ ウが演じる姿から『エピソード2』 。… ダース・ベイダー-25.txt ︙ …本名およびジェダイの騎⼠であった頃の名はア ナキン・スカイウォーカーで、天性の才能の持ち 主に加えて優れた戦闘能⼒、技術⼒に⻑けた騎⼠ であったがフォースの暗⿊⾯に囚われ銀河帝国皇 帝… 旧三部作(オリジナル・トリロジー、エピソード 4 - 6)\nシリーズ第1作『エピソード4/新たなる 希望』(1977年公開)では直接の登場はないが、 帝国軍デス・スター 司令官ターキン総督が … ダース・ベイダー-01.txt シーヴ・パルパティーン-02.txt == キャラクター制作 ==\n名前は「ダーク・ ファーザー」のもじりで、ルーカス⾃⾝の⽗親と の確執が反映されたキャラクターなどとされてい る(別説あり)。実際オランダ語では、⽗親のこ とを「vader(ファーダー)」と⾔う。 ダース・ベイダー-17.txt ︙ ベクトル検索は、ユーザーの意図した回答が 最も⾼いスコアになっている。 1位 2位 10位 キーワード検索は、クエリ内の「エピソー ド」「本当」という単語に引っ張られすぎて、 関連のないドキュメントのスコアが⾼くなっ ている。
  26. 様々な検索⼿法 これは従来から使われている検索⽅法で、転置インデックスというもの を作成し、その転置インデックスから検索をして、対象のドキュメント を引っ張ってくる⽅法である。 キーワード検索 ベクトル検索は、テキストや画像などのデータを多次元のベクトルに変 換し、これらのベクトル間の類似度を計算することで、関連性の⾼い情 報を迅速に検索する技術である。 ベクトル検索 キーワード検索で得られた検索結果に対して、マイクロソフト独⾃のAI

    モデルによって検索結果をさらに並べ替える⼿法である。 セマンティック 検索 キーワード検索とベクトル検索による検索結果を組み合わせて、さらに 精度を⾼める⽅法である。 ハイブリッド 検索 キーワード検索とベクトル検索に加えて、さらにセマンティック検索に よる検索結果を組み合わせて、さらに精度を⾼める⽅法である。 セマンティック ハイブリッド 検索
  27. セマンティック検索の検証 === エピソード9/スカイウォーカーの夜明け ===\nカイロとの激戦の後、パルパティーン の孫… ルーク・スカイウォーカー-23.txt …ローグ中隊のリーダーでもあった。師匠はオ ビ=ワン・ケノービとヨーダ。⽗は後のシスの 暗⿊卿ダース・ベイダーである… ルーク・スカイウォーカー-02.txt

    BM25もしくはRRFによるランキング ︙ 1位 3位 ︙ ︙ "幼少時代から奴隷として過ごしてきたために 上から抑えつけられる事を根っから嫌う旺盛な 反⾻⼼を持つ故、師匠のオビ=ワンと… アナキン・スカイウォーカー-03.txt 50位 Bingから変化した深層学習モデルによる 再ランキング セマンティックアンサーや セマンティックキャプションの⽣成 "== 経歴 ==\nエピソード3/シスの復讐\n銀 河共和国が滅び、銀河帝国が誕⽣した⽇に⽣ま れたルーク・スカイウォーカーの双⼦の… レイア・オーガナ-02.txt 100位 …ローグ中隊のリーダーでもあった。師匠はオ ビ=ワン・ケノービとヨーダ。⽗は後のシスの 暗⿊卿ダース・ベイダーである… ルーク・スカイウォーカー-02.txt ︙ ︙ "幼少時代から奴隷として過ごしてきたために 上から抑えつけられる事を根っから嫌う旺盛な 反⾻⼼を持つ故、師匠のオビ=ワンと… アナキン・スカイウォーカー-03.txt そんな折、息⼦であるルーク・スカイウォー カーと出会い皇帝すら凌ぐ可能性を秘めた類稀 なる才能に⽬をつける。… ダース・ベイダー-07.txt ルーク・スカイウォーカー-02.txt 師匠はオビ=ワン・ケノービとヨーダ。 ⽗ は後のシスの暗⿊卿ダース・ベイダーであ るアナキン・スカイウォーカー。 … セマンティックアンサー 師匠はオビ=ワン・ケノービとヨーダ。 ⽗ は後のシスの暗⿊卿ダース・ベイダーであ るアナキン・スカイウォーカー。… セマンティックキャプション ︙ "幼少時代から奴隷として過ごしてきたために 上から抑えつけられる事を根っから嫌う旺盛な 反⾻⼼を持つ故、師匠のオビ=ワンと… アナキン・スカイウォーカー-03.txt 深層学習モデルによる再ランキング は、BM25もしくはRFFによるラン キングの結果の中から50位以内のも のに限定
  28. セマンティック検索の検証 以下のクエリを⽤いて、キーワード検索とセマンティック検索の結果を⽐較します。 ルーク・スカイウォーカーの師匠はだれですか︖ セマンティック検索は以下のように⾏います。 $ curl -X POST "https://[Azure AI

    Searchのサービス名].search.windows.net/indexes/wiki/docs/search?api-version=2023- 11-01" \ -H "Content-Type: application/json" \ -H "api-key: [Azure AI SearchのAPIキー]" \ -d '{ "queryType": "semantic", "search": "ルーク・スカイウォーカーの師匠はだれですか?", "semanticConfiguration": "config1", "answers": "extractive", "select": "title, content", "count": true, "top": 5 }' | jq queryTypeにsemanticを指定する。
  29. セマンティック検索の検証 キーワード検索 セマンティック検索 === エピソード9/スカイウォーカーの夜明け ===\nカイロとの激戦の後、パルパティーンの 孫として⾃⾝が暗⿊⾯に堕ちることを恐れたレイ は⽣前のルークと同じように惑星オク=トに⾝を 沈めようとした。… だがパルパティーンのフォースの暗⿊⾯の誘惑に

    屈しなかった姿を⾒てそれに激怒したパルパ ティーンの電撃に苦しむルークの姿や良⼼を信じ 続けたルークの叫びを聞き、再びジェダイとして の⼼を思い出して… 検索クエリ: ルーク・スカイウォーカーの師匠はだれですか︖ 形態素解析: ルーク スカイウォーカ 師匠 だれる ルーク・スカイウォーカー-23.txt アナキン・スカイウォーカー-05.txt …ローグ中隊のリーダーでもあった。師匠はオビ =ワン・ケノービとヨーダ。⽗は後のシスの暗⿊ 卿ダース・ベイダーであるアナキン・スカイ ウォーカー。ルークは幼少時代を奴隷として⽣活 した⽗アナキンとは異なり普通の家庭に… ルーク・スカイウォーカー-02.txt ルーク・スカイウォーカー-02.txt == 創造とキャスティング ==\n脚本家のマイケ ル・アーントは2012年中頃にルーカスフィルム社 ⻑のキャスリーン・ケネディから『スター・ ウォーズ』続編三部作の脚本執筆を依頼され、彼 は⼥性ジェダイのオリジンを描く物語である… レイ (スター・ウォーズ)-02.txt ︙ 師匠はオビ=ワン・ケノービとヨーダ。 ⽗は 後のシスの暗⿊卿ダース・ベイダーであるアナ キン・スカイウォーカー。 … セマンティックアンサー 師匠はオビ=ワン・ケノービとヨーダ。 ⽗は 後のシスの暗⿊卿ダース・ベイダーであるアナ キン・スカイウォーカー。… セマンティックキャプション 3位から1位に浮上した 1位 2位 3位 セマンティックアンサ ー・セマンティックキ ャプションが⽣成され る
  30. 様々な検索⼿法 これは従来から使われている検索⽅法で、転置インデックスというもの を作成し、その転置インデックスから検索をして、対象のドキュメント を引っ張ってくる⽅法である。 キーワード検索 ベクトル検索は、テキストや画像などのデータを多次元のベクトルに変 換し、これらのベクトル間の類似度を計算することで、関連性の⾼い情 報を迅速に検索する技術である。 ベクトル検索 キーワード検索で得られた検索結果に対して、マイクロソフト独⾃のAI

    モデルによって検索結果をさらに並べ替える⼿法である。 セマンティック 検索 キーワード検索とベクトル検索による検索結果を組み合わせて、さらに 精度を⾼める⽅法である。 ハイブリッド 検索 キーワード検索とベクトル検索に加えて、さらにセマンティック検索に よる検索結果を組み合わせて、さらに精度を⾼める⽅法である。 セマンティック ハイブリッド 検索
  31. ハイブリッド検索の検証 キーワード検索 アナキン・スカイウォーカーを主⼈公と する3部作(『エピソード1 ファント ム・メナス』、『エピソード2 クローン の攻撃』 … パドメ・アミダラ-01.txt

    ︙ …ルーク・スカイウォーカーやレイア・ オーガナは当初本名で呼んでいたが… またベーシックを話せたとしても、ウー キー族の… ダース・ベイダー-01.txt … 『エピソード1』の中で、C-3PO は 後のダース・ベイダーであるアナキン・ スカイウォーカーの⼿によって、廃品を 結集し作られたことがわかる。 C-3PO-03.txt チューバッカ (Chewbacca) は、映画 『スター・ウォーズシリーズ』に登場す る架空の⼈物である。 チューバッカ-01.txt ︙ ︙ ベクトル検索 …新三部作に向けて⼥性主⼈公を創造す るにあたり、監督・脚本のJ・J・エイブ ラムスは脚本のローレンス・カスダンと の最初の会談から⼥性を物語の中⼼に… レイ (スター・ウォーズ)-02.txt ︙ == 経歴 ==\nエピソード3/シスの復讐 \n銀河共和国が滅び、銀河帝国が誕⽣し た⽇に⽣まれたルーク・スカイウォー カーの双⼦の妹で、 … レイア・オーガナ-02.txt … 『エピソード1』の中で、C-3PO は 後のダース・ベイダーであるアナキン・ スカイウォーカーの⼿によって、廃品を 結集し作られたことがわかる。 C-3PO-03.txt ︙ ︙ ジェダイ時代のアナキンは、愛する者を 守りたいという純粋な願望と若さ故の激 情から、ジェダイの掟を何度となく破っ てしまう… ダース・ベイダー-02.txt ハイブリッド検索 オビ=ワン・ケノービ(Obi-Wan Kenobi、ベン・ケノービ)は、アメリ カのSF映画『スター・ウォーズ』シリー ズに登場する架空の⼈物… オビ=ワン・ケノービ-01.txt ︙ 危機を察して駆けつけたシディアスによ り救出され、サイボーグ化⼿術を施され て⼀命は取り留めたもののシディアスが 期待していた… ダース・ベイダー-04.txt アナキンから報告を受け、ジェダイ・マ スター、メイス・ウィンドゥは、同⾏を 申し出たアナキンをジェダイ聖堂に留め 置き、エージェン・コーラー、 … シーヴ・パルパティーン-10.txt ︙ ︙ … 『エピソード1』の中で、C-3PO は 後のダース・ベイダーであるアナキン・ スカイウォーカーの⼿によって、廃品を 結集し作られたことがわかる。 C-3PO-03.txt + = キーワード検索とベクトル検索の結果をRRF(Reciprocal Rank Fusion、逆ランク融合)を⽤いて統合し、再 ランキングして検索結果を提供します。キーワード検索の精度とベクトル検索の⽂脈理解の利点を組み合わせ、 より適切な検索結果を得ることが可能になります。
  32. ハイブリッド検索の検証 RRFScore(d) = ∑!"# $ % &'(!(*) d: 対象のドキュメント i:

    検索システム k: 定数 𝑟! (𝑑): 検索システムiにおけるドキュメントdの順位
  33. ハイブリッド検索の検証 検索システムX 検索システムY ドキュメントA ドキュメントD ドキュメントC ドキュメントE ドキュメントB ドキュメントG ドキュメントA

    ドキュメントH ドキュメントE ドキュメントF 1位 2位 3位 4位 5位 7つのドキュメントA〜Gがあり、2つの検索システム(検索システムX、検索システムY)で以下のような検索順 位であるとします。
  34. ハイブリッド検索の検証 ドキュメントA Score: 1.50 検索システムX + Y 1位 2位 3位

    ドキュメントG Score: 1.00 ドキュメントD Score: 0.50 ドキュメントE Score: 0.50 ドキュメントC Score: 0.33 ドキュメントH Score: 0.33 5位 ドキュメントB Score: 0.20 ドキュメントF Score: 0.20 7位 検索システムX 検索システムY ドキュメントA ドキュメントB ドキュメントC ドキュメントD ドキュメントF ドキュメントG ドキュメントH ドキュメントE 1 0.5 + = 1.50 0.20 0 + = 0.20 0.33 0 + = 0.33 0.50 0 + = 0.50 0.25 0.25 + = 0.50 0 0.20 + = 0.20 0 1 + = 1.00 0 0.33 + = 0.33 RRFにより2つの検索システムのスコアを融合し、リランクします。
  35. ハイブリッド検索の検証 検索システムX 検索システムY ドキュメントA ドキュメントD ドキュメントC ドキュメントE ドキュメントB ドキュメントG ドキュメントA

    ドキュメントH ドキュメントE ドキュメントF 1位 2位 3位 4位 5位 ドキュメントA 検索システムX + Y ドキュメントG ドキュメントD ドキュメントE ドキュメントC ドキュメントH ドキュメントB ドキュメントF 7位 ドキュメントEは、検索システムXとYの両⽅で4位にランクされていました。しかし、RRFを⽤いて両システムの結果を統合 した後、ドキュメントEの最終的なランキングは3位に上昇しました。これは、両⽅のシステムで⼀貫して⾼いランキングを 得ているドキュメントは、結果が融合されるとさらに重要度が⾼まるためです。つまり、複数の検索システムからのランキ ングが合わさることで、そのドキュメントの総合的な評価が向上します。
  36. ハイブリッド検索の検証 以下のクエリを⽤いて、キーワード検索、ベクトル検索、ハイブリッド検索の結果を⽐較します。 アナキン・スカイウォーカーによって作成されてとてもたくさんの⾔葉が話せる登場⼈物は︖ ハイブリッド検索は以下のように⾏います。 $ curl -X POST "https://[Azure AI

    Searchのサービス名].search.windows.net/indexes/wiki/docs/search?api-version=2023-11-01" \ -H "Content-Type: application/json" \ -H "api-key: [Azure AI SearchのAPIキー]" \ -d '{ "count": true, "select": "title, content", "vectorQueries": [ { "fields": "contentVector", "kind": "vector", "vector": '$embedding', "exhaustive": true, "k": 30 } ], "search": "アナキン・スカイウォーカーによって作成されて、とてもたくさんの⾔葉が話せる登場⼈物は?" }' | jq vectorにベクトル化したクエリを設定する。 seachにベクトル化する前のクエリを設定する。
  37. ハイブリッド検索の検証 キーワード検索 アナキン・スカイウォーカーを主⼈公と する3部作(『エピソード1 ファント ム・メナス』、『エピソード2 クローン の攻撃』 … パドメ・アミダラ-01.txt

    ︙ ベクトル検索 ハイブリッド検索 …ルーク・スカイウォーカーやレイア・ オーガナは当初本名で呼んでいたが… またベーシックを話せたとしても、ウー キー族の… ダース・ベイダー-01.txt … 『エピソード1』の中で、C-3PO は 後のダース・ベイダーであるアナキン・ スカイウォーカーの⼿によって、廃品を 結集し作られたことがわかる。 C-3PO-03.txt チューバッカ (Chewbacca) は、映画 『スター・ウォーズシリーズ』に登場す る架空の⼈物である。 チューバッカ-01.txt ︙ ︙ …新三部作に向けて⼥性主⼈公を創造す るにあたり、監督・脚本のJ・J・エイブ ラムスは脚本のローレンス・カスダンと の最初の会談から⼥性を物語の中⼼に… レイ (スター・ウォーズ)-02.txt ︙ == 経歴 ==\nエピソード3/シスの復讐 \n銀河共和国が滅び、銀河帝国が誕⽣し た⽇に⽣まれたルーク・スカイウォー カーの双⼦の妹で、 … レイア・オーガナ-02.txt … 『エピソード1』の中で、C-3PO は 後のダース・ベイダーであるアナキン・ スカイウォーカーの⼿によって、廃品を 結集し作られたことがわかる。 C-3PO-03.txt ︙ ︙ オビ=ワン・ケノービ(Obi-Wan Kenobi、ベン・ケノービ)は、アメリ カのSF映画『スター・ウォーズ』シリー ズに登場する架空の⼈物… オビ=ワン・ケノービ-01.txt ︙ 危機を察して駆けつけたシディアスによ り救出され、サイボーグ化⼿術を施され て⼀命は取り留めたもののシディアスが 期待していた… ダース・ベイダー-04.txt アナキンから報告を受け、ジェダイ・マ スター、メイス・ウィンドゥは、同⾏を 申し出たアナキンをジェダイ聖堂に留め 置き、エージェン・コーラー、 … シーヴ・パルパティーン-10.txt ︙ ︙ ジェダイ時代のアナキンは、愛する者を 守りたいという純粋な願望と若さ故の激 情から、ジェダイの掟を何度となく破っ てしまう… ダース・ベイダー-02.txt … 『エピソード1』の中で、C-3PO は 後のダース・ベイダーであるアナキン・ スカイウォーカーの⼿によって、廃品を 結集し作られたことがわかる。 C-3PO-03.txt 検索クエリ: アナキン・スカイウォーカーによって作成されて、とてもたくさんの⾔葉が話せる登場⼈物は︖ 形態素解析: アナ キン スカイウォーカ 作成 とても たくさん ⾔葉 話せる 登場 ⼈物 9位 19位 20位 2位
  38. 様々な検索⼿法 これは従来から使われている検索⽅法で、転置インデックスというもの を作成し、その転置インデックスから検索をして、対象のドキュメント を引っ張ってくる⽅法である。 キーワード検索 ベクトル検索は、テキストや画像などのデータを多次元のベクトルに変 換し、これらのベクトル間の類似度を計算することで、関連性の⾼い情 報を迅速に検索する技術である。 ベクトル検索 キーワード検索で得られた検索結果に対して、マイクロソフト独⾃のAI

    モデルによって検索結果をさらに並べ替える⼿法である。 セマンティック 検索 キーワード検索とベクトル検索による検索結果を組み合わせて、さらに 精度を⾼める⽅法である。 ハイブリッド 検索 キーワード検索とベクトル検索に加えて、さらにセマンティック検索に よる検索結果を組み合わせて、さらに精度を⾼める⽅法である。 セマンティック ハイブリッド 検索
  39. セマンティックハイブリッド検索の検証 $ curl -X POST "https://[Azure AI Searchのサービス名].search.windows.net/indexes/wiki/docs/search?api-version=2023-11- 01" \

    -H "Content-Type: application/json" \ -H "api-key: [Azure AI SearchのAPIキー]" \ -d '{ "count": true, "select": "title, content", "vectorQueries": [ { "fields": "contentVector", "kind": "vector", "vector": '$embedding', "exhaustive": true } ], "queryType": "semantic", "search": "アナキン・スカイウォーカーによって作成されて、とてもたくさんの⾔葉が話せる登場⼈物は?", "semanticConfiguration": "config1", "answers": "extractive" }' | jq ハイブリッド検索のときと同じクエリを⽤いて、以下のようにセマンティックハイブリッド検索を⾏います。 vectorにベクトル化したクエリを設定する。 セマンティック検索の設定をする。
  40. セマンティックハイブリッド検索の検証 キーワード検索 アナキン・スカイウォーカーを主⼈公と する3部作(『エピソード1 ファント ム・メナス』、『エピソード2 クローン の攻撃』 … 検索クエリ:

    アナキン・スカイウォーカーによって作成されて、とてもたくさんの⾔葉が話せる登場⼈物は︖ 形態素解析: アナ キン スカイウォーカ 作成 とても たくさん ⾔葉 話せる 登場 ⼈物 パドメ・アミダラ-01.txt ︙ 9位 19位 20位 ベクトル検索 2位 ハイブリッド検索 セマンティックハイブリッド検索 …ルーク・スカイウォーカーやレイア・ オーガナは当初本名で呼んでいたが… またベーシックを話せたとしても、ウー キー族の… ダース・ベイダー-01.txt … 『エピソード1』の中で、C-3PO は 後のダース・ベイダーであるアナキン・ スカイウォーカーの⼿によって、廃品を 結集し作られたことがわかる。 C-3PO-03.txt チューバッカ (Chewbacca) は、映画 『スター・ウォーズシリーズ』に登場す る架空の⼈物である。 チューバッカ-01.txt ︙ ︙ …新三部作に向けて⼥性主⼈公を創造す るにあたり、監督・脚本のJ・J・エイブ ラムスは脚本のローレンス・カスダンと の最初の会談から⼥性を物語の中⼼に… レイ (スター・ウォーズ)-02.txt ︙ == 経歴 ==\nエピソード3/シスの復讐 \n銀河共和国が滅び、銀河帝国が誕⽣し た⽇に⽣まれたルーク・スカイウォー カーの双⼦の妹で、 … レイア・オーガナ-02.txt … 『エピソード1』の中で、C-3PO は 後のダース・ベイダーであるアナキン・ スカイウォーカーの⼿によって、廃品を 結集し作られたことがわかる。 C-3PO-03.txt ︙ ︙ オビ=ワン・ケノービ(Obi-Wan Kenobi、ベン・ケノービ)は、アメリ カのSF映画『スター・ウォーズ』シリー ズに登場する架空の⼈物… オビ=ワン・ケノービ-01.txt ︙ 危機を察して駆けつけたシディアスによ り救出され、サイボーグ化⼿術を施され て⼀命は取り留めたもののシディアスが 期待していた… ダース・ベイダー-04.txt アナキンから報告を受け、ジェダイ・マ スター、メイス・ウィンドゥは、同⾏を 申し出たアナキンをジェダイ聖堂に留め 置き、エージェン・コーラー、 … シーヴ・パルパティーン-10.txt ︙ ︙ ︙ クローン⼤戦が始まるとオビ=ワンと共 に各地で共和国軍を勝利に導き、ジェダ イ評議会に功績を認められて弟⼦から騎 ⼠へと昇格する。… アナキン・スカイウォーカー-11.txt ︙ ︙ ジェダイ時代のアナキンは、愛する者を 守りたいという純粋な願望と若さ故の激 情から、ジェダイの掟を何度となく破っ てしまう… ダース・ベイダー-02.txt … 『エピソード1』の中で、C-3PO は 後のダース・ベイダーであるアナキン・ スカイウォーカーの⼿によって、廃品を 結集し作られたことがわかる。 C-3PO-03.txt … 『エピソード1』の中で、C-3PO は 後のダース・ベイダーであるアナキン・ スカイウォーカーの⼿によって、廃品を 結集し作られたことがわかる。 C-3PO-03.txt === 『エピソード6』での配役変更 ===\n2004年製作以降の映像ソフトで は死後フォースと⼀体化し霊体として登 場するアナキン・スカイウォーカー… ダース・ベイダー-25.txt == 経歴 ==\nエピソード3/シスの復讐 \n銀河共和国が滅び、銀河帝国が誕⽣し た⽇に⽣まれたルーク・スカイウォー カーの双⼦の妹で、 … レイア・オーガナ-02.txt
  41. エンジニア募集(プロフェッショナルサービスチーム) エンジニアファーストの環境で、技術⼒を⾼めませんか︖ 変化や進化を楽しみながら、私たちとともに歩んでくれる仲間を募集してい ます︕ OSS & クラウド技術をコアテクノロジーとしたシステム開発 • 統合認証システム&クラウド連携 •

    OSS&クラウド基盤導⼊、OSSカスタマイズや開発、OSSサポート • クラウドネイティブシステム、データ分析基盤、アプリ開発 • APIエコノミーコンサルティング&技術⽀援サービス 詳細はこちらのサイトからご覧ください︕ https://tech-lab-engineer.sios.jp/