AI-102 学習メモ (11) : ナレッジ マイニングソリューションを実装する

# はじめに
この投稿は AI-102: Microsoft Azure AI エンジニア の学習をした内容のメモです。

投稿の一覧は以下のリンク先にあります。

https://qiita.com/atsmin77/items/5235dfe16ad1bed065ca

# 前の投稿

https://qiita.com/atsmin77/items/93b5dcc799ab13b3bac2

# Azure AI Search

Azure AI Search を利用すると、任意のデータソースに対して検索インデックスを作成して、検索クエリで情報を取得したり、生成 AI から RAG として利用することができます。

https://learn.microsoft.com/ja-jp/azure/search/search-what-is-azure-search

[Azure Portal](https://portal.azure.com) で Azure AI Search リソースを作成し、実際に利用してみます。

## Azure AI Search リソースを作成する

Marketplace から [Azure AI Search] を検索します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/a11155e9-9a14-7fd5-6cb6-9b580cdb6ce9.png)

各情報を入力します。ここでは [価格レベル] として 50 MB のストレージ制限がある無償版 (Free) を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/33571507-ba2f-52f7-0aba-685e418b8730.png)

**レプリカ**と**パーティション**の数を指定します。今回は Free なので両方とも既定の 1 のままにします。

| 名前 | 説明 |
|:-:|:-:|
| レプリカ | 検索サービスのインスタンス数です。各インスタンスは同一のインデックスをもち、負荷分散に利用されます。  |
| パーティション | 検索サービスのストレージ数です。インデックスは各ストレージに分散して保持され、並列に検索が行われます。  |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/93668212-ca1d-445b-0ae9-878abed09070.png)

https://learn.microsoft.com/ja-jp/azure/search/search-capacity-planning


::: note warn
Free のリソースはリージョンごとに 1 つだけ作成できます。既に Free のリソースが存在していると、以下のようなエラーになりリソースの作成が行えません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/ba6f5e80-294a-7eff-35cd-b74ea73a8d13.png)
:::

https://learn.microsoft.com/ja-jp/azure/search/search-limits-quotas-capacity

## データソースを作成する

次にデータソースを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/05eb3efe-8408-e468-a113-36e3da54f79d.png)

今回は Azure Blob Storage をデータソースとして追加してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/2dd234a7-2cd2-b644-86fd-984519c00278.png)

## インデックスを作成する

次にデータソースにインデックスを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/3ee149a7-ad87-f086-505d-6b459f15f7eb.png)

インデックスの目的に応じて、インデックスの属性を設定します。

| 名前 | 説明 |
|:-:|:-:|
| 取得可能  | ユーザーが結果を表示できる  |
| フィルター可能  | ユーザーがフィルタで指定できる  |
| ソート可能  | ユーザーがソートで指定できる  |
| ファセット可能  | ファセットクエリ (※) から参照できる  |
| 検索可能  | ユーザーが検索できる  |

※ ファセットクエリ
検索結果にカテゴリ別のヒット数を表示したり、検索結果をカテゴリごとに絞り込むときに利用します。

https://learn.microsoft.com/ja-jp/azure/search/search-faceted-navigation

https://learn.microsoft.com/ja-jp/rest/api/searchservice/create-index#-field-definitions-

## スキルセットを定義する

スキルセットを利用することにより、検索の際に OCR によってドキュメントからテキストを抽出したり、ドキュメントを翻訳することができます。

初めから用意されている組み込みスキルと、ユーザーが独自に作成するカスタムスキルがあります。

https://learn.microsoft.com/ja-jp/azure/search/cognitive-search-predefined-skills

https://learn.microsoft.com/ja-jp/azure/search/cognitive-search-skill-document-extraction

https://learn.microsoft.com/ja-jp/azure/search/cognitive-search-skill-text-translation

## インデクサーを作成し実行する

以下のようにインデクサーを作成し実行すると、作成したインデックスを使用して検索クエリが実行できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/503c13de-acc0-367e-abb5-5c1074107b7e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/8a141d67-9b16-f1a8-d204-8e797d08e35c.png)

## 構文、並べ替え、フィルター処理、ワイルドカードなどを含むインデックスのクエリを実行する

[検索エクスプローラー] から実際にインデックスを使用して検索を行うことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/bf5d5c7d-a32b-fdde-4cfa-fadaf95be5ba.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/dca889b9-2e8e-4c1d-31f5-bba7ab9b5fea.png)

また、以下の [デモ アプリの作成] から、インデックスを使用して検索を行う Web アプリケーションをダウンロードすることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/e272c158-b921-ff21-f04f-60d84219bbe3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/f577282a-9e4f-bc73-62c2-829509729fa8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/3a99a82d-7154-0ec5-3f4a-a4c5b99e1adc.png)

## 類義語マップの追加

類義語マップを作成すると、設定した類義語に基づいてドキュメントを検索することができます。

例：

* 類義語マップ
  * "dog", "canine", and "puppy"
* 検索結果
  * "canine" で検索すると "dog" を含むドキュメントがヒットする

https://learn.microsoft.com/ja-jp/azure/search/search-synonyms?tabs=rest%2Crest-assign

# 次の投稿

https://qiita.com/atsmin77/items/9987fa9bc1b5c917abbc