Slide 1

Slide 1 text

第51回 Tokyo Jazug Night AIアプリケーション開発でAzure AI Searchを使いこなすためには 2025/01/21 株式会社 電通総研 クロスイノベーション本部 AIトランスフォーメーションセンター 山田 侑樹

Slide 2

Slide 2 text

自己紹介 2 山田 侑樹 2021年4月 電通総研 新卒入社 AIトランスフォーメーションセンター所属 主な業務内容 電通総研で開発している生成AIソリューション「Know Narrator」の アーキテクトとして開発、運用、クラウド環境設計・構築に携わっています その他 • Microsoft Top Partner Engineer Award 2024(AIカテゴリ)受賞 • Azure DevOpsに関する書籍の翻訳活動に参加 • Azure系を中心に10種類以上の技術系資格を取得済み 趣味・好きなこと • テニス、音楽ライブに行くこと • 可愛いキャラクターを愛でること

Slide 3

Slide 3 text

会社紹介 3

Slide 4

Slide 4 text

会社紹介 – 電通総研 2024年1月1日に株式会社電通国際情報サービスから「株式会社電通総研」に社名変更しました 4 電通総研、 https://www.dentsusoken.com/

Slide 5

Slide 5 text

会社紹介 – AIトランスフォーメーションセンター AIのビジネス応用を幅広い視野で推進するために結成したAIに特化した全社横断チーム AI/データ分析技術を利用した様々なコンサルティングや、お客様のDX推進支援、AI製品の企 画・開発・運用を実施しています 5 AITC -AI TRANSFORMATION CENTER、https://aitc.dentsusoken.com/

Slide 6

Slide 6 text

発表の背景 - なぜAzure AI Searchの話をするのか 6

Slide 7

Slide 7 text

発表の背景 – この数年の生成AI周りの振り返り ▍2023年 ⚫ 3月にAzure OpenAI ServiceでGPT-3.5系のAPIの提供が開始 ➢ GPTモデルは学習時点の知識までしか持ち得ないため、RAG(Retrieval Augmented Generation)が 注目を浴びる ⚫ 高次元な埋め込みベクトルモデルに対応したベクトル検索の必要性 ➢ embedding-ada-002は1,536次元の埋め込みモデル ▍2024年 ⚫ 高次元な埋め込みモデルtext-embeddings-3が登場 ➢ 次元数は3,072次元に ⚫ GPT系モデルそのもののコンテキスト長が増加 ➢ GPT-4o、GPT-4o-miniなどのモデルは128,000トークンまで入力可能 ⚫ BuildにてAzure Cosmos DB for NoSQLでのベクトル検索が発表 ⚫ IgniteにてAzure Cosmos DB for NoSQLでの全文検索が発表 ▍2025年 ⚫ イマココ 7

Slide 8

Slide 8 text

前提:RAG(Retrieval Augmented Generation)の仕組み ▍Retrieval(検索) ユーザーの質問から外部の知識を参照する ▍Augmented(拡張) 参照した外部知識とユーザーの質問を組み合わせてプロンプトを作成する ▍Generation(生成) 作成したプロンプトでLLMから回答を得る 8

Slide 9

Slide 9 text

なぜ RAG / Azure AI Search なのか? ▍コンテキスト長の長いモデルが登場したがRAGの考え方は引き続き重要 すべての情報がモデルに重要ではないため、関連性の高い情報を与えるアプローチは以前として有効 モデルが知らない情報を与える方法として優秀 ▍RAGをするにしてもCosmos DB for NoSQLの方が良くないですか? コスト的な観点で見ればそうかもしれない RAGでは検索機能が鍵となるため、検索を重視するならばAzure AI Searchを選択すれば良い → ユーザーの質問に適した情報を与える必要があり検索機能を作り込むにはAzure AI Searchが有用 9

Slide 10

Slide 10 text

本日、お話すること 1. チュートリアル Azure AI Searchの組み込みのチャンク化と埋め込み作成機能と Azure OpenAI ServiceのOn Your Data機能を使ったRAGの紹介 2. チュートリアルの裏側 Azure AI Searchの基本概念や検索の仕組みの紹介 3. Azure AI Searchを使ったAIアプリケーション開発の裏側の紹介 10

Slide 11

Slide 11 text

チュートリアル Azure AI Searchの組み込みのチャンク化と埋め込み作成機能と Azure OpenAI ServiceのOn Your Data機能を使ったRAGの紹介 11

Slide 12

Slide 12 text

前提 Azure AI Searchとは? ▍ Azureのフルマネージドの検索サービス ▍ 全文検索、ベクトル検索、ハイブリッド検索、あいまい検索、 自動補完、geo検索など豊富な検索ソリューションに対応 ▍ 他のAzureサービスとの強力な統合機能を提供 ⚫ データソースから自動での検索インデックスへの保存処理(インデクサー) ⚫ OCRやテキストの翻訳などデータソースのコンテンツをAIで解析 (スキル、エンリッチメント、ナレッジストア) 12

Slide 13

Slide 13 text

Azure OpenAI Serviceと連携したRAGアーキテクチャ 13

Slide 14

Slide 14 text

Azure OpenAI Serviceと連携したRAGアーキテクチャ 14 参照する知識をAzure AI Searchに投入する

Slide 15

Slide 15 text

Azure AI Searchの組み込みのチャンク化と埋め込み作成機能 Azure AI Searchの拡張機能としてドキュメントのチャンク化、埋め込みの作成がサポート 15 Azure AI Search 内の統合データのチャンキングと埋め込み, https://learn.microsoft.com/ja-jp/azure/search/vector-search-integrated-vectorization

Slide 16

Slide 16 text

Azure AI Searchの組み込みのチャンク化と埋め込み作成機能 Azureポータルの「データのインポートとベクター化」から実施する 16

Slide 17

Slide 17 text

取り込み対象のデータの選択 17

Slide 18

Slide 18 text

Azure OpenAI Serviceとの接続 18

Slide 19

Slide 19 text

エンリッチメントの設定 19

Slide 20

Slide 20 text

インデックスへのマッピング設定とインデクサーの実行スケジュールの設定 20

Slide 21

Slide 21 text

作成 21

Slide 22

Slide 22 text

Azure OpenAI Serviceと連携したRAGアーキテクチャ 22 Azure AI Searchの情報を参照して回答を生成する

Slide 23

Slide 23 text

Azure OpenAI Service の On Your Data による回答生成 Azure OpenAI Service の Chat Completions API で data_sources として Azure AI Searchの検索インデックスを指定できる 23 POST https://{endpoint}/openai/deployments/{deployment-id}/chat/completions?api-version=2024-10-21 { "messages": [ { "role": "user", "content": "can you tell me how to care for a dog?” } ], "data_sources": [ { "type": "azure_search", "parameters": { "endpoint": "https://your-search-endpoint.search.windows.net/", "index_name": "{index name}", "authentication": { "type": "system_assigned_managed_identity” } } } ] }

Slide 24

Slide 24 text

実際の動作例 経産省の以下のPDFファイルをAzure AI Searchに投入済み ⚫ AI 事業者ガイドライン(第 1.0 版).pdf ⚫ AI導入ガイドブック 需要予測(小売り、卸業).pdf 質問:「人間中心の AI 社会原則」ではどんな価値が重要ですか? 24

Slide 25

Slide 25 text

ここまでの整理 ▍Azure AI Search へのデータ投入部分 ⚫ Azure Portalの「データのインポートとベクター化」からGUIベースで可能 ▍Azure AI Searchのデータを参照して回答を生成する部分 ⚫ Azure OpenAI Service の Chat Completions API でAzure AI Searchの検索インデックスを参照させ た回答の生成が可能 25 ここからはAzure AI Searchの基本概念を整理しながら、裏側で行われてた操作を振り返ってみます

Slide 26

Slide 26 text

チュートリアルの裏側 Azure AI Searchの基本概念や検索の仕組みの紹介 26

Slide 27

Slide 27 text

Azure AI Searchを使った検索の流れ 27

Slide 28

Slide 28 text

Azure AI Searchに保存されるデータに関する用語と概念 28 用語 概要 検索インデックス 検索のためのデータのコレクション。 1つの検索インデックス内に複数のドキュメントが格納される。 ※単に「インデックス」と表記をする場合もあるが本資料内では 「検索インデックス」と表記する。 スキーマ 検索インデックスの構造を定義するもの。 スキーマは、検索インデックスに格納されるドキュメントにどのようなフィールド が含まれ、それぞれのデータ型など情報を含む。 ドキュメント 検索インデックス内に格納される個々のデータ項目。 Azure AI SearchではJSON形式で表現される。 フィールド ドキュメント内の個々の属性を示す。RDBの列に似たもので型が存在する。 フィールドによって検索結果の並び替えやフィルタリングが行える。

Slide 29

Slide 29 text

Azure AI Searchに保存されるデータに関する用語と概念 29

Slide 30

Slide 30 text

検索インデックスのフィールドの属性 検索インデックスのフィールドはデータ型に加えて、検索時にフィールドがどのように 使用されるかを示す属性を定義する 30 属性 概要 searchable フルテキストインデックスを作成するかを制御する filterable $filterクエリで参照できるかを制御する sortable ソート対象に利用できるかを制御する facetable 検索結果の集約化に利用するかを制御する key ドキュメントの一意識別子となるフィールド このフィールドは文字列(Edm.string)で定義される retrievable 検索結果に含めるかを制御する Falseにしたフィールドはスコアリングの内部ロジックなどに応用できる

Slide 31

Slide 31 text

先ほど作成された検索インデックス 「chunk」フィールドにファイルから抽出されたテキストコンテンツ、 「text_vector」フィールドに埋め込みベクトルが保存されている 31

Slide 32

Slide 32 text

検索インデックスへのデータの投入 検索インデックスへのデータ投入方法はPushモデルとPullモデルがある 32 ▍ Pushモデル Azure SDK・REST APIを利用し検索インデックスにJSON形式のドキュメントを投入する方法 ▍ Pullモデル Azure AI Searchがサポートしているデータソースをクロールし、自動で検索インデックスに ドキュメントを投入する方法

Slide 33

Slide 33 text

Azure AI Searchの組み込みのチャンク化と埋め込み作成機能 先ほどの操作で行われていたのはPullモデルによるドキュメント投入 33

Slide 34

Slide 34 text

Pullモデルを理解するための用語と概念 34 用語 概要 データソース インデクサーのデータ抽出対象となるクラウド上のデータソース Azure Blob StorageやAzure Cosmos DBなどがサポートされる インデクサー インデクサーはデータソースのデータをAzure AI Searchの検索インデックスのスキーマ構造に マッピングする処理を行うコンポーネント 一般的な検索システムの「クローラー」のような処理を担う スキル インデクサーでコンテンツを検索インデックスに投入する際に、コンテンツを変換する単一の 操作を提供するもの スキルセット スキルセットは特定のインデクサーで利用するスキルの集合。少なくとも1つのスキルから構成 され、最大で30のスキルを含む。 エンリッチメント インデクサーの拡張機能で、画像などのテキスト情報を持たないデータを検索可能な構造に変換 するもの ナレッジストア エンリッチメントされたコンテンツを保存するストレージ Azure Blob StorageやAzure Table Storageを利用できる

Slide 35

Slide 35 text

インデクサーによる検索インデックスへのデータ投入の流れ Azure AI Searchにデータソース、スキルセットと作成し、それらを利用するインデクサーを 作成する 35

Slide 36

Slide 36 text

利用されるスキル - テキスト分割スキル(TextSplitSkill) チャンク分割をするスキル https://learn.microsoft.com/ja-jp/azure/search/cognitive-search-skill-textsplit 36 { "@odata.type": "#Microsoft.Skills.Text.SplitSkill", "name": "#1", "description": "Split skill to chunk documents", "context": "/document", "defaultLanguageCode": "en", "textSplitMode": "pages", "maximumPageLength": 2000, "pageOverlapLength": 500, "maximumPagesToTake": 0, },

Slide 37

Slide 37 text

利用されるスキル - Azure OpenAI Embedding スキル Azure OpenAIでEmbedding化を行うスキル https://learn.microsoft.com/ja-jp/azure/search/cognitive-search-skill-azure-openai- embedding 37 { "@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill", "name": "#2", "context": "/document/pages/*", "resourceUri": "https://*****.openai.azure.com", "apiKey": ”", "deploymentId": "text-embedding-3-large", "dimensions": 3072, }

Slide 38

Slide 38 text

インデクサーの計算リソース インデクサーはAzure AI Searchのマネージド環境で実行される 38 環境 概要 プライベート環境 リソース固有の環境。 ここで実行されるインデクサージョブは最大24時間実行可能。 プライベート環境で実行可能なインデクサージョブの数は検索ユニットで1つ。 プライベートエンドポイント経由で他のリソースにアクセスする必要があるインデクサージョブはこの環境で実 行する必要がある マルチテナント マネージドな環境。 ここで実行されるインデクサージョブは最大2時間実行可能。 実行できるインデクサージョブの数は不確定。

Slide 39

Slide 39 text

検索部分 39

Slide 40

Slide 40 text

Azure AI Searchでサポートされる検索シナリオ Azure AI Search は「全文検索」と「ベクトル検索」のどちらにも対応している ▍ 全文検索 フルテキストインデックスによって作成された転置インデックスを利用してドキュメントを検索する ▍ ベクトル検索 ベクトルの近傍検索によってドキュメントを検索する 40

Slide 41

Slide 41 text

全文検索を理解するための用語と概念 41 用語 概要 転置インデックス 文書に含まれる各単語(トークン)とその単語が出現する文書IDの組み合わせによって構成 される索引(インデックス)。 これにより単語が含まれる文書を高速に探し出すことができる。 アナライザー 転置インデックスを構成する際に、文章を単語(トークン)の単位に分割する処理機能やコ ンポーネントを指す。 アナライザーでは単語分割(形態素解析)やノイズとなる単語(ストップワード)の除去、 小文字や原型への変換処理などが行われる。

Slide 42

Slide 42 text

転置インデックスの作成処理 転置インデックスに格納される単語はアナライザーの種類によって 単語分割などの処理が異なる 42

Slide 43

Slide 43 text

転置インデックスを利用した検索処理 検索クエリもアナライザーによる単語の分割が行われる 43

Slide 44

Slide 44 text

Azure AI Searchで利用可能なアナライザー 利用可能なアナライザーは大きく分けると2種類ある ▍ 「組み込みアナライザー」 組み込みのアナライザーには標準Luceneのアナライザー、言語固有アナライザー、特殊アナライ ザーがある。 言語固有アナライザーはLucene言語アナライザーとMictosoft言語アナライザーがある。 ▍ 「カスタムアナライザー」 ユーザー定義のアナライザー。 組み込みのアナライザーを拡張するようなこともできる。 44

Slide 45

Slide 45 text

アナライザーの違いによる分割の違い アナライザー 分割結果 standard [{'token': '私', 'startOffset': 0, 'endOffset': 1, 'position': 0}, {'token': 'は', 'startOffset': 1, 'endOffset': 2, 'position': 1}, {'token': '機', 'startOffset': 2, 'endOffset': 3, 'position': 2}, {'token': '械', 'startOffset': 3, 'endOffset': 4, 'position': 3}, {'token': '学', 'startOffset': 4, 'endOffset': 5, 'position': 4}, {'token': '習', 'startOffset': 5, 'endOffset': 6, 'position': 5}, {'token': 'エンジニア', 'startOffset': 6, 'endOffset': 11, 'position': 6}, {'token': 'で', 'startOffset': 11, 'endOffset': 12, 'position': 7}, {'token': 'す', 'startOffset': 12, 'endOffset': 13, 'position': 8}] ja.lucene [{'token': '私', 'startOffset': 0, 'endOffset': 1, 'position': 0}, {'token': '機械', 'startOffset': 2, 'endOffset': 4, 'position': 2}, {'token': '学習', 'startOffset': 4, 'endOffset': 6, 'position': 3}, {'token': 'エンジニア', 'startOffset': 6, 'endOffset': 11, 'position': 4}] ja.microsoft [{'token': '私', 'startOffset': 0, 'endOffset': 1, 'position': 0}, {'token': '機械', 'startOffset': 2, 'endOffset': 4, 'position': 2}, {'token': '学習', 'startOffset': 4, 'endOffset': 6, 'position': 3}, {'token': 'エンジニア', 'startOffset': 6, 'endOffset': 11, 'position': 4}, {'token': 'です', 'startOffset': 11, 'endOffset': 13, 'position': 5}] keyword [{'token': '私は機械学習エンジニアです。', 'startOffset': 0, 'endOffset': 14, 'position': 0}] 45 「私は機械学習エンジニアです。」を異なるアナライザーで処理してみる テキストの分析 (Azure AI Search REST API)、https://learn.microsoft.com/ja-jp/rest/api/searchservice/test-analyzer

Slide 46

Slide 46 text

ベクトル検索を理解するための用語と概念 46 用語 概要 Embedding (埋め込みベクトル、 分散表現) テキストなどのデータを多次元のベクトルとして表現したもの。 意味的に類似性の高いコンテンツはベクトル空間内で互いに近くに位置する。 vectorizer (ベクタライザー) テキストなどembeddingに変換するコンポーネント 最近傍検索 与えられたクエリポイント(ベクトル値)に最も近いデータポイントをベクトル空間から探索する 方法。 クエリポイントと各データポイントのベクトル間の距離を計算し、最も距離が小さいポイントを特 定する必要があるため大規模なデータほど計算コストが必要になる。 近似最近傍検索 与えられたクエリポイント(ベクトル値)に近似的に最も近いデータポイントをベクトル空間から 探索する方法。 正確さに犠牲にしパフォーマンスを向上させる方法であり、大規模なデータにも対応できる。

Slide 47

Slide 47 text

ベクトルによる検索処理 ベクトル検索ではユーザーのクエリをベクタライザーを用いて保存されているベクトルの次元 と揃えてから近傍検索を行う 47

Slide 48

Slide 48 text

ハイブリッド検索 ▍ ハイブリッド検索 「全文検索」と「ベクトル検索」を組み合わせた検索でそれぞれの検索結果を RRF:Reciprocal Rank Fusionというアルゴリズムで再ランク付けするもの 内部的には全文検索とベクトル検索の両方が行われる 48 Azure AI Search でベクトルやフルテキストを使用したハイブリッド検索、https://learn.microsoft.com/ja-jp/azure/search/hybrid-search-overview

Slide 49

Slide 49 text

セマンティックランク付け セマンティックランク付けは「リランク」の仕組み 元の入力クエリの意図を考慮して検索結果をリランクする セマンティックランク付けはテキストクエリにのみ有効 49 Azure AI Search でのセマンティック ランク付け、https://learn.microsoft.com/ja-jp/azure/search/semantic-search-overview

Slide 50

Slide 50 text

On Your Dataでの検索モードの指定方法 “query_type”パラメータで「simple」「semantic」「vector」「vector_simple_hybrid」 「vector_semantic_hybrid」を指定することで変更が可能 50 POST https://{endpoint}/openai/deployments/{deployment-id}/chat/completions?api-version=2024-10-21 { "messages": [], "data_sources": [ { "type": "azure_search", "parameters": { "endpoint": "https://your-search-endpoint.search.windows.net/", "index_name": "{index name}", "authentication": { "type": "system_assigned_managed_identity” }, "query_type": "hybrid", "embedding_dependency": { "type": "deployment_name", "deployment_name": "text-embedding-3-large" } } } ] }

Slide 51

Slide 51 text

Azure AI Searchを使ったAIアプリケーション開発の裏側の紹介 51

Slide 52

Slide 52 text

AIアプリケーション開発の実情 ▍チュートリアルで紹介した内容をアプリケーションに落とし込めば良いという訳ではない ⚫ Azure AI Searchはアプリケーションの構成要素の一つでありアプリケーション全体のコンセプトや 周辺機能も含めて設計をする必要がある ⚫ 非機能要件なども考慮に入れる必要がある ▍新規モデル・機能・APIが次々に登場する ⚫ アプリケーション開発は単発のプロジェクトではなく継続的な取り組みが必要な活動 ⚫ Azure側の魅力的な機能についても中長期的な視点を持って技術選定などを行う必要がある 52

Slide 53

Slide 53 text

実際に開発・運用しているRAGアプリケーション ▍Know Narrator Search ⚫ 所属チームで2023年6月頃から継続して開発をしているRAGアプリケーション 53 Know Narrator Search、 https://aitc.dentsusoken.com/products/knownarratorsearch.html

Slide 54

Slide 54 text

実際に開発・運用しているRAGアプリケーションの構成 Azure AI Searchへのデータ投入はPushモデルを採用 54

Slide 55

Slide 55 text

技術選定の背景 ▍RAG の Retrieval 部分を担う検索エンジン ⚫ Azure AI Searchを採用 ➢ 2023年時点では1,536次元のベクトル検索に対応したベクトル検索エンジンはAzure AI Searchしか選択肢がな かったと言える ▍Azure AI Searchへのデータ投入部分 ⚫ Azure Functions(Durable Functions)を使ったイベント駆動型の処理(Pushモデル)を採用 ➢ 2023年時点ではインデクサーはプレビュー機能が多く本番運用の検討ができなかった 55

Slide 56

Slide 56 text

実際のアプリケーション開発での難しいポイント – 検索インデックスの使い方 ▍サービスとしての検索インデックスの権限設定・設計 ⚫ Azure AI Searchではプラン(SKU)によって作成可能な検索インデックスの数に上限がある ⚫ Azure AI Searchで操作の対象となる検索インデックスは一度に一つのみ ⚫ 検索インデックスからのドキュメントの取得時のアクセス制御の機能はない 56 1. 権限をベースに検索インデックスを分ける設計 2. クエリで絞り込む設計 マルチテナント SaaS アプリケーションと Azure AI Search の設計パターン、 https://learn.microsoft.com/ja-jp/azure/search/search-modeling-multitenant-saas-applications

Slide 57

Slide 57 text

実際のアプリケーション開発での難しいポイント – 検索インデックスの使い方 ▍「権限をベースに検索インデックスを分ける設計」を採用 ⚫ アプリケーションの設計・実装としてシンプル ➢ 権限制御はAzure AI Searchの呼び出し前にアプリケーション側のロジックで実施可能 ⚫ 埋め込みモデルの変化に対応が比較的に容易 ➢ ベクトルフィールドの次元数は検索インデックスの定義時点で決定しておく必要があるため 57 1. 権限をベースに検索インデックスを分ける設計

Slide 58

Slide 58 text

実際のアプリケーション開発での難しいポイント – 検索インデックスの使い方 ▍「クエリで絞り込む設計」の難しさ ⚫ どのタイミングで異なる「検索インデックス」に格納するかの設計が難しい ➢ 一つの検索インデックスにどの程度のドキュメントを格納すべきかのロジックを定める必要がある ⚫ スコアの解釈に影響を与える ➢ 出現単語の頻度ベースのスコアは検索インデックスのドキュメント全体で算出されるため影響を受ける 58 2. クエリで絞り込む設計

Slide 59

Slide 59 text

実際のアプリケーション開発での難しいポイント – 検索インデックスの使い方 ▍「権限をベースに検索インデックスを分ける設計」のデメリット ⚫ 一つのAzure AI Searchで作成可能な検索インデックス数の上限が影響する ➢ Azure AI Searchは既存リソースに対してプラン変更ができないため追加でリソースを払い出す必要がある ⚫ 少数のデータのみを扱う検索インデックスではリソースの使用効率が悪い可能性が高い 59 1. 権限をベースに検索インデックスを分ける設計 作成可能な検索インデックスを増やす にはリソースを追加する

Slide 60

Slide 60 text

参考:Azure AI Search のプランによる制限 作成可能な検索インデックスの数、ストレージの容量、スケール上限はプランによって決まっ ているので注意が必要 60

Slide 61

Slide 61 text

実際のアプリケーション開発での難しいポイント – データ投入処理の安定化 ▍多量/大容量データに対するチャンク化・ベクトル化処理の安定化 ⚫ 利用可能な計算リソース(CPU/メモリ)の制約 ⚫ Azure OpenAI ServiceのTPM(Tokens-per-Minute)の考慮 61

Slide 62

Slide 62 text

実際のアプリケーション開発での難しいポイント – データ投入処理の安定化 ▍キューイングとDurable Functionsの活用 ⚫ 大量のファイル追加に対応するためにキューを挟むことで信頼性を向上 ⚫ Durable Functionsを利用することでアクティビティ関数ごとにリトライを可能にする ⚫ Azure OpenAI ServiceのTPMは可能な限りに大きな値を設定 62

Slide 63

Slide 63 text

63 RAGアプリケーションで精度を出すポイント RAGの性質上、コンテキストに適切かつ関連性の高い情報を正確に載せることが重要 言い換えると検索結果を取得したタイミングで正確な回答ができるかはほぼ決まってしまう → この部分をチューニングできるアプリケーションであることが望ましい

Slide 64

Slide 64 text

知っておくと便利なAzure AI SearchのAPIや機能 ▍Autocomplete/Suggestions機能 ⚫ Azure AI Searchが提供するオートコンプリート機能 ⚫ RAGでは検索インデックス内の特定のファイルに絞って質問をしたいケースがある ➢ ファイル名やメタデータにSuggesterを構成しておくことで、検索インデックス内のファイル名の候補を表示 できるユーザー体験を向上できる可能性がある https://learn.microsoft.com/ja-jp/azure/search/search-add-autocomplete-suggestions ▍シノニム機能 ⚫ 同義語の変換によるクエリ拡張機能 ⚫ 専門用語や略語などが検索精度に影響する場合がある ⚫ シノニム機能を使うことでクエリを拡張し検索精度の向上が図れる ➢ 「RAG」→「 Retrieval Augmented Generation」 ➢ 「JAZUG」→「 Japan Azure User Group 」 https://learn.microsoft.com/ja-jp/azure/search/search-synonyms 64

Slide 65

Slide 65 text

知っておくと便利なAzure AI SearchのAPIや機能 ▍サービス統計API ⚫ 対象のAzure AI Searchリソースで作成可能な検索インデックス数の上限やストレージサイズの上限、 現在の使用状況などの統計情報を返すAPI ⚫ アプリケーションでこれらの情報を把握するのに有用 https://learn.microsoft.com/ja-jp/rest/api/searchservice/get-service-statistics ▍Azure Monitorによる監視構成 ⚫ 他のAzureリソースと同様に診断設定からLog Analysisにログを流すことが可能 ⚫ ユーザーからのクエリ文字列などが簡単にキャプチャできる https://learn.microsoft.com/ja-jp/azure/search/monitor-azure-cognitive-search 65

Slide 66

Slide 66 text

知っておくと便利なその他のサービスのAPIや機能 ▍text-embedding-3-large/ text-embedding-3-small モデルの dimensions パラメータ ⚫ これらの埋め込みモデルはdimensionsパラメータによって埋め込みの次元圧縮に対応している ⚫ Azure AI Searchのストレージコストの削減やインデックス定義の簡素化にも活用できる https://learn.microsoft.com/ja-jp/azure/ai-services/openai/concepts/models#embeddings ▍Azure AI Visionのマルチモーダル埋め込み ⚫ テキストと画像を同じベクトル空間でベクトル化する手法 ⚫ 画像データの検索やマルチベクトル検索などに活用できる https://learn.microsoft.com/ja-jp/azure/ai-services/computer-vision/concept-image-retrieval 66

Slide 67

Slide 67 text

まとめ 67

Slide 68

Slide 68 text

本日扱ったトピック ▍Azure AI Searchの組み込みのチャンク化と埋め込み作成機能と Azure OpenAI ServiceのOn Your Data機能を使ったRAG ⚫ GUIベースの操作や単純なAPIでRAGを試せることを紹介 ▍Azure AI Searchの基本概念や検索の仕組みの紹介 ⚫ Azure AI Searchを使いこなせるように検索の仕組みを紹介 ▍Azure AI Searchを使ったAIアプリケーション開発の裏側の紹介 ⚫ 実際にAzure AI Searchをアプリケーションに組み込む際に難しいポイントや重要なポイントを紹介 ⚫ その他に知っておくと便利な機能を紹介 68

Slide 69

Slide 69 text

求人情報 弊社に興味がある方はお気軽にお話しましょう https://aitc.dentsusoken.com/recruit/recruit.html 69

Slide 70

Slide 70 text

CONFIDENTIAL