Azure AI Search(旧: Cognitive Search)のチャンク分割＋ベクトル化が簡単になったので試す！(2/2)

# はじめに
前回ではAzure AI Searchのチャンク分割＋ベクトル化のやり方について解説しました。

https://qiita.com/tmiyata25/items/ef231ea340e681a44970

この方法では言語アナライザーがデフォルト(英語)になってしまうので、フルテキスト検索の精度が悪くなってしまいます。今回は言語アナライザーを日本語にする方法について解説していきます。

# やり方
インデックスを作る部分は前回の記事をご参照ください。今回はこちらの作成済みのインデックスを使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/40423e1a-e2c7-85c2-ff6f-309d2e580cf3.png)

JSONの編集をクリックし、メモ帳などにコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/7dfc714d-1da3-220f-6e84-384acf83cabc.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/47cd3eb9-8815-4bf7-feab-a830d6c9a5f8.png)

既存のインデックスは一度削除します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/263b4066-fe78-f1a9-7e6c-9e21379571b0.png)

インデックスの追加(JSON)をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/c59592fe-e757-9971-add7-748f02ee1293.png)

先ほどメモ帳にコピーしたJSON形式のインデックスを貼り付けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/04fd07c4-f995-247d-a1a7-dd542456416f.png)

赤く警告されている行は不要なので消します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/3d912dbf-2ed6-cce0-68ad-a171111d23d6.png)

テキストが格納されている「chunk」フィールドのアナライザーを「null」->「ja.lucene」に変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/ab79bda2-aabc-441e-786e-9378a9cd5483.png)

同様にタイトルが格納されている「title」フィールドのアナライザーも「null」->「ja.lucene」に変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/d58b2925-5356-10a8-c86b-88e73ec69026.png)

こちら赤の警告も不要なので削除します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/999e9c45-72e2-2c92-2755-3b49fb9e7ed1.png)

(2024年6月3日追記)「vectorizers->azureOpenAIParameters->apiKey」のフィールドが「redacted」とかかれており、マスキングされています。この状態で保存すると、検索時にAOAIへのリクエストで401(Unauthorized)のエラーが発生します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/f361d9c0-d22a-c527-ca1d-4a762e568b4b.png)

AOAIのリソースからキーを取得し、apiKeyの部分を変更しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/ef3c3a3e-b68f-1798-eb77-cb258dc99c7b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/c752b26b-b85c-47fc-a065-c42d1c96f6c6.png)


赤の警告が削除されると「保存」ボタンがクリック出来るようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/8471c0f1-ec9a-5198-0345-4d0cb6e32643.png)

(追記)次にスキルセットのテキスト分割部分の言語を日本語に変更します。
スキルセットから作成されたスキルを選択してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/643a1ad6-b168-7a95-a0a3-d4f45f5bb0ab.png)

「Microsoft.Skills.Text.SplitSkill」スキルの「defaultLanguageCode」が「en」になっていると思うので、「ja」に変更してください。チャンクサイズは「maximumPageLength」オーバーラップは「pageOverlapLength」で指定可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/7026ffe5-2d78-3bcb-43f4-1d55efd737be.png)

次にインデクサーから作成したインデクサーをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/c9843023-70ed-939a-30cc-11d0657ee9ee.png)

「リセット」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/9429eddc-9cf2-fba1-285d-7debe1e2a4ce.png)

リセットされたら「実行」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/b2ea5463-b55d-eec5-46a1-55206de32df9.png)

インデックスの作成が完了したら、インデックスの画面で実際に上手くレコードが表示されるか確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/b35a4606-3b46-7c73-5c5e-28bd606f9eb5.png)

ちゃんと日本語のアナライザーであることが確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2681297/b859cdf8-dfd0-65d0-52d0-3103bd0705dd.png)

# まとめ
今回は「チャンク分割＋ベクトル化機能」で言語アナライザーを日本語に修正する方法について解説しました。インデクサーが作成されている場合は、インデックスのスキーマをいくらでも作り直すことが可能なので便利ですね。是非お試しください！