神戸のデータ活用塾!KDL Data Blog

KDLが誇るデータ活用のプロフェッショナル達が書き連ねるブログです。

Promptflow使って文書検索の仕組みを作ってみた! ~準備編~

データインテリジェンスチームの畑です。
今回のブログテーマは「Promptflowを使ってQ&Aの仕組みを作ってみた!」です。
独自の文書から質問・回答する仕組みをAzure Machine Learningに追加されたPromptflowを使って実装してみます。

本記事は連載記事です。
-----------------------------------------------------------------------------
第一弾:Promptflowを使うための準備編
第二弾:独自データを使ったQ&Aのフロー作成編
第三弾:質問・回答の精度向上&エンドポイントへのデプロイ編
-----------------------------------------------------------------------------
まず、第一弾として今回やることの紹介とPromptflowを使うための準備からはじめていきます!

Promptflowとは?

Promptflowとは、Azure Machine Learning Studioに追加された大規模言語モデル(以下、LLM)特化のAI開発ツールです。フローの構築を視覚的にみることができ、コンポーネントをつないでいくことでローコード開発が可能です。また、パフォーマンス評価機能が搭載されており、フローやプロンプトを調整した影響の評価も可能です。さらに、構築したフローのデプロイや監視もでき、LLMをベースとしたAIアプリケーション開発を効率的に行えるのが売りです。
できることがたくさんありそうなので、実際に触りながらイメージを深めてもらえればと思います!

今回やること

この「KDLデータ活用塾」のブログ最新10記事のテキストデータから質問に回答するフローをPromptflowで作成します。フローの大まかな流れは以下の図の通りです。

Promptflowで作成するフローの概要

質問の数値化と文章の整形にはAzure OpenAI、データ保存先にはAzure CognitiveSearchを使います。各サービスの詳細については過去の記事に書かれているのでぜひこちらも読んでみてください!後ほど、リソースの準備でも参照します。

※ 質問の数値化:文章を数値化することを、専門用語では「Embedding」や「ベクトル化」と言います。詳しく知りたい方は、これらのキーワードで検索してみてください。

kdl-di.hatenablog.com

kdl-di.hatenablog.com


補足:データ準備について
データの準備はスクレイピングで行い、htmlファイルをそのまま保存しました。
準備の詳細は今回割愛します。

データとして使用したブログのhtmlファイルの例

Promptflowを使うための準備

初めてPromptflowを使う場合はいくつか準備が必要です。
以下の順で進めます。

  1. リソース準備
  2. データ登録

1つ1つ片づけていきましょう!

リソース準備

ワークスペースの作成
Azure Machine Learning Studio内にワークスペースを作成します。ワークスペース名は任意の名前をつけます。サブスクリプション、リソースグループ、リージョンは適当なものを選択してください。

AzureMachineLearningStudioのワークスペース作成
Azure OpenAIの準備
続いてAzure OpenAIのリソース作成です。こちらは下記の記事を参考にモデルをデプロイするところまで進めてください。

デプロイするモデルは以下の2つを選択します。

  • text-embedding-ada-002:Embeddingモデル
  • gpt4:LLMモデル (gpt4以外のLLMモデルでも問題ありません。)

kdl-di.hatenablog.com

Azure CognitiveSearchの準備
Azure CognitiveSearchのリソース作成もこちらのブログを参考に作成して下さい。価格は「B Basic」を選択しましょう。

kdl-di.hatenablog.com

ランタイム(コンピューティングインスタンス)の作成
データの数値化(ベクトル化)やフロー実行時に使用する計算リソースを作成します。一番低スペックのものでも問題なく動きますので、すべてのオプションから一番安いものを選び作成します。作成までに少し時間がかかるので定期的に更新をかけましょう。実行中になればランタイムを作成して作業完了です。

ランタイム(コンピューティングインスタンス)の作成手順

Azure OpenAIへの接続
Promptflow内でAzure OpenAIを使用するための接続作業を実施します。接続にはAzure OpenAIのキーとエンドポイントが必要になります。以下の手順で確認しましょう。

Azure OpenAIのキーとエンドポイントの確認手順
確認したら、Promptflowに戻ってプロンプトフロー→接続からAzure OpenAIリソースを作成します。ここで先ほどメモしたキーとエンドポイントを貼り付けます。
Azure OpenAIへの接続手順

データの登録

Studioのデータからブログデータを登録します。図の流れで登録を進めてください。今回はローカルからブログのhtmlファイルをアップロードしています。

データ登録の流れ
次にブログの内容を数値化(ベクトル化)します。
Azure OpenAIと同様にまずキーとエンドポイントを確認します。
Azure CognitiveSearchのキーとエンドポイントの確認手順
続いてPromptflowからベクターインデックスの項目を選択してベクトル作成を実施します。

Azure CognitiveSearchのインデックスにベクトルを登録する手順
Azure CognitiveSearchのインデックスを確認すると文章が登録されて、数値化したデータ(ベクトル)も作成されていることがわかります。
Azure CognitiveSearchに登録されたデータの確認


以上で、準備完了です。少し手順は必要ですが、一度ここまでの作業をやっておけば使いまわしもできます。次回は実際にフローを構築する作業をやっていきましょう!

kdl-di.hatenablog.com

この記事で生成AIを使った業務改善に興味を持たれた方はお気軽にお問合せください。

畑加奈子

データインテリジェンスチーム所属
元製造メーカー勤務。製品の不良検知を担当したことがきっかけとなり、データサイエンスに興味を持ちKDLへ。クラウドを利用したデータ活用に関してのトピックを中心に発信していきます。