5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

KDDI エンジニア&デザイナーAdvent Calendar 2024

Day 7

Azure AI SearchのIndexer, Skillsetテンプレ!

Last updated at Posted at 2024-12-06

はじめに

  • Azure OpenAIを利用してRAGをやるときに、Azure AI Searchを利用される方は多いと思いますが、DBにデータを取り込むIndexerやSkillsetを利用しようとすると、すべての人がハマると思うので、この記事に沿ってやれば即使える、というテンプレを書きたいと思います

今回作る構成

  • BlobにCSVデータを格納してIndexerを実行したら、Answer列の情報がベクター化されてDBに格納されます
  • Q&A形式のCSVですが汎用性高く、いろいろな場面に適用できると思います

image.png

テンプレ解説

csv データ形式

  • FAQや、特定のトピックに関する情報を想定し、以下の形式をテンプレとして扱います
  • これをCSVとして保存しましょう
  • 文字コードはUTF-8必須なので注意すること
Question Answer URL
営業時間は何時から何時までですか? 当店は午前9時から午後9時まで営業しております。 https://example.com/hours
メニューにビーガン対応の料理はありますか? はい、ビーガン対応の料理としてサラダやビーガンパスタをご用意しています。 https://example.com/vegan-menu
Wi-Fiは利用できますか? はい、無料Wi-Fiをご利用いただけます。店内でパスワードをご確認ください。 https://example.com/wifi

Azure blobに格納

  • Azure blobを作成したら、適当にフォルダを作って格納しよう

image.png

Azure AI Search

  • 以下の順に作っていきます

Index

  • 今回のCSVのタイトルと、フィールド名は、しっかりと合わせます
  • URL行は、ソートやフィルタもできるようにチェックつけてますが、そこはお好みで
  • ベクター用にembeddingというフィールドも作ること
    • embedding というフィールド名はSkillsetでも利用するので、もし変更する場合は、Skillset作成の際に留意すること!

image.png

データソース

  • 先ほど作ったBlobのフォルダをしっかり指定しよう

image.png

Skillset

  • Skillsetを作成しようとすると、いきなりJSONの記入を求められて、大抵ここで途方にくれます
  • なので、即貼り付けて使えるテンプレを共有します!JSONを以下のテンプレに置き換えて、以下3点だけ気を付けて保存しよう
    • 事前にAzure OpenAIインスタンスは作成し、text-embedding-small-3 のモデルデプロイも終わっているものとします
    • xxxxxxxの箇所は、自分のOpenAIの情報に書き換えること
    • inputsのAnswerは、CSVのタイトルと合わせること!本テンプレでは、Answer列をベクター化します
{
  "name": "embedding-skill",
  "description": "",
  "skills": [
    {
      "@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
      "name": "#1",
      "description": "Connects a deployed embedding model.",
      "context": "/document",
      "inputs": [
        {
          "name": "text",
          "source": "/document/Answer",
          "inputs": []
        }
      ],
      "outputs": [
        {
          "name": "embedding",
          "targetName": "embedding"
        }
      ],
      "resourceUri": "https://xxxxxxxxxxxxxxxxxxxxxxxxxxxx.openai.azure.com",
      "deploymentId": "text-embedding-3-small",
      "apiKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "modelName": "text-embedding-3-small",
      "dimensions": 1536
    }
  ]
}

Indexer

  • 設定するIndexやデータソース、Skillsetは上記で作成したものを指定するだけなので、迷いはないはず
  • 注意点はCSVに合わせた以下4項目だけ
    • デリミタには、カンマ( , )をちゃんと設定しましょう

image.png

  • そして、JSONでの編集ボタンから、以下のように、ベクターデータのフィールドを追記します
    • GUIだけで設定できると思わせて、JSON編集必須とは、なんてこった!
  "outputFieldMappings": [
  ],

  "outputFieldMappings": [
    {
      "sourceFieldName": "/document/embedding",
      "targetFieldName": "embedding",
      "mappingFunction": null
    }
  ],

Indexerを動かしてデータを取り込む!

image.png

  • データの様子

image.png

おわりに

  • このテンプレを利用して、AI Searchのハッピーライフを過ごしていただければと思います
5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?