Gluegent Flowでどれを申請すれば分からなかったので、AIに聞いてみた
みなさん、こんにちは せしょうです。
みなさんは、Gluegent Flowで申請する際に、どのモデル(書式・テンプレート)を使用すればいいのか分からない。
そもそも、申請するモデルがあるの?と 申請をするのに悩んだことはないですか?
私は、多々あります笑
機種変したスマホのBYOD更新申請が必要だったけれど、どこにモデルがあったのか分からなかったり...
持ち株会関連の申請に何があったか覚えてなかったり...
みなさんは、そんな経験はないでしょうか?
本日は、そんな みなさん(特に私)の悩みを解決するために
最近流行りの生成AIと Gluegent Flowを結びつけて遊んでみたというお話です。
生成AIについて
生成AIは、人間のようなテキスト、音声、画像、動画を作成できる強力な人工知能 (AI) の一種です。
生成AIは、さまざまなタスクを実行できます。主な種類には以下があります。
-
-
- 自然言語生成 (NLG): テキスト、会話、ストーリーを生成する
- 画像生成: 画像、アートワーク、写真を作成する
- オーディオ生成: 音楽、サウンドエフェクト、音声を作成する
- 動画生成: 動画、アニメーション、映画を作成する
- コード生成: コンピュータプログラムやスクリプトを作成する
-
生成AIのメリット
-
-
- 効率性の向上: 自動化により、クリエイティブタスクの実行時間を大幅に削減できます。
- コンテンツ多様化: 創造的なアイデアを無尽蔵に生成し、コンテンツのバリエーションを増やすことができます。
- カスタマイズされた体験: ユーザー固有のコンテンツを作成して、パーソナライズされた体験を提供できます。
- 学習と教育の強化: インタラクティブコンテンツを使用して、学習プロセスを向上させることができます。
-
生成AIの未来
生成AIは急速に進化しており、今後数年間でさらに進歩することが予想されています。このテクノロジーは、クリエイティブ業界、教育、ビジネスに革命をもたらす可能性を秘めています。
上記の文章は、生成AIに生成AIとは?と聞いてみた結果です。
読んで分かるように、生成AIについて上手くまとめて返してくれています。
ただ、このような汎用的な質問には、そのまま使えますが今回の記事のように特定の情報に対してのFAQなどには、どのように対応させればいいのかという点を生成AIの問題点を含めて書いていけたらと思います。
生成AIの問題点
生成AI特に、このようなチャットボットみたいなものを作る上で一番の問題となっているものがあります。それは、「ハルシネーション(幻覚)」と呼ばれるものです。
もっともらしいが、「事実とは異なる情報」などをAIが生成することを指します。人間が想像で「幻覚」を見るように、AIも同じように「幻覚」を見て出力している様から、ハルシネーションと呼ばれています。
独特な世界観を持つような画像生成であればこのハルシネーション部分も利点となりますが、正確な情報を扱うFAQなどのチャットボットには、これは一番の問題であることは想像に難くないでしょう。
例) AIにGluegent Flowについて聞いてみた。
質問
Gluegent Flowとはなんですか?
回答
Gluegent Flowは、以下を統合する顧客関係管理(CRM)および企業リソースプランニング(ERP)ソフトウェアです。
機能:
CRM:
・リード管理
・顧客のプロファイルと履歴
・セールスファネル管理
・マーケティングオートメーション
ERP:
・財務管理
・在庫管理
・サプライチェーン管理
・製造管理
...
このように、Gluegent Flowについて聞いてみましたが、さも正しいですよと言わんばかりの回答を返してきます。実際は何のこっちゃ?という回答になってます。
このハルシネーションを100%無くすというのは無理という前提の上で、どれだけ発生頻度を少なくするかということが課題となっています。
このハルシネーションを抑えるための方法として、根拠づけ(Grounding)が大事となってきます。
この根拠づけに今回はRAG(Retrieval-Augmented Generation )という技術を使用してハルシネーションを抑制していこうと思います。
RAG(Retrieval-Augmented Generation )
RAGは検索拡張生成と翻訳されます。
RAG自体は、外部データから情報を引っ張って来ることによって、質問(query) + 外部情報 を生成AIに渡すことにより、外部情報と組み合わせることによってより回答の精度を上げることができます。
RAGの利点としては、先ほどあげた、根拠づけによりハルシネーションを抑えることができること。
また、外部情報を簡単に最新の情報 or 特定の情報を生成AIに渡すことができるという点です。
先ほど、AIに外部情報なしでGluegent Flowを聞いてみましたが上手く回答が得られませんでした。
そこで、今回は外部情報として Gluegent Flowについての情報を渡して試してみましょう。
例) AIに Gluegent Flowについて聞いてみた。 + 外部情報
質問
Gluegent Flowとはなんですか?
外部情報
Gluegent Flow は シンプルな操作性で誰でも簡単に使える クラウド型ワークフローシステムです
いつでも、どこでも、パソコン・スマートフォン等どの端末からでも、稟議申請・確認・承認が可能!
回答
Gluegent Flow
概要
Gluegent Flow は、クラウドベースのワークフロー管理システムです。直感的なインターフェースを備え、ユーザーは簡単にワークフローを作成、自動化、管理できます。
質問に対して、外部情報の内容を含めて Gluegent Flowについて 説明をしてくれました。
このようにRAGを使用することで、特定の情報や最新情報などを含めて回答を得ることができます。これが汎用型のLLM(Large Language Models、大規模言語モデル)をチャットボットで使用する際の、最近のトレンドとなっています。
外部情報や特定の情報を踏まえて、回答するには、このRAG以外にもfine-tuningといった手法もあります。ですが、こちらは特定のタスクに特化できるという利点がありますが毎回最新情報を入れて微調整をいれるというところで、コスト面などの問題が出てきます。
また、fine-tuningはモデルを学習させるのに対して、RAGで外部情報を取得して返す分にはデータを学習しないという点でもビジネス的には使用しやすいのかなと思います。
以降、少し技術的なお話をします。
少し技術のお話
外部情報を渡すことによって、より精度の高い回答を得ることができる事が分かりました。
では、外部情報をすべて渡してしまえばいいかというとそうではありません。
全ての情報を、入れて質問をするといくつか問題点があります。
まず一つ目に、入力するデータ量の問題があります。入力するデータ量が多いと、OOM(Out Of Memory)というエラーが起こる可能性があります。LLMを使用するにあたって、GPU or TPUが必須です。これらがもつVRAMの容量を超えるとこのOOMが起きます。
二つ目に、入力するデータ量(トークン数)が多すぎると 回答の精度が落ちるという点です。原因は色々とあるのですが、特に文脈解析の問題が特に大きいと思います。特にQAなどの他のタスクに比べ、雑多な情報があると文章が希釈され、重要な情報が失われる可能性があり回答の精度が低下します。
また、Cloudサービス上LLMを使用する場合、課金項目として入力また出力のトークン(≒単語)量が指定されている場合があるのでコスト面でも負担が大きくなります。
これを回避するために、外部情報を取得する際に、Retriever(検索システム)を使うことによって関連度の高い外部情報を抽出することができます。
以下がRAGの構造です。
Retrieverは大きく2つのステップで構成されています。
- 質問(query)をベクトル化する
- ベクトルに近い外部データを取得する
1.質問(query)をベクトル化するについてですが、これは機械が文章を扱うにあたってそのままでは使用できないため、機械でも扱えるベクトル(数値)に変換するということです。
詳細はここでは説明しませんが(どこかでNLPの歴史みたいな話はしたい。)、2013年にWord2Vecが登場し、単語を分散表現できるようになったことが今のNLPがここまで発展した転機の一つだと思っています。 (※NLP界隈がここまで盛り上がっているのは、本当にここ10年で幾つもの転機があったのだ!)
みなさんはベクトルの計算を覚えてますでしょうか?ベクトルは大きさや向きも持っているため、距離を計算することができます。つまり、各単語、各文章をベクトルに変換する(分散表現する)ことによって、それぞれの距離を計算することができるのです。
2.ベクトルに近い外部データを取得する
これは、上記で説明したようにベクトルに変換したことで、質問と外部の文章の距離を計算することが可能になりました。ここの文章の距離を計算する手法もいくつかあるのですがここでは省きます。これによって、近しい文章を上位〇個という風に取ってくることが可能になります。
※外部情報も、ベクトル化する必要があります。(今回実際に使用したデータ例)
{"id": "1", "embedding": ["-0.013948029838502407", "-0.03658713027834892", "0.0....} |
それにより、全ての外部情報を取ってこずとも、近い順から上位〇件という風に、渡したい外部情報を絞って、生成AIに渡すことができるのです。
大事な事のまとめ
質問をベクトル化すれば、質問に近い外部情報を取得できる!
質問に近い外部情報を渡すことによって、根拠づけができ、ハルシネーションを抑えることができる!
アーキテクチャ
今回は、GCPのVertex AIのサービスを主に使用して実装してみました。
構造としては、一般的なRAGと呼ばれる手法をそのままGCPのサービスで対応した形となります。
質問に対して、質問の回答であろう似ている文章を取ってきて、質問 + 外部情報を元に回答を返すという仕組みです。
技術の発展(Transformerの登場, GPT系列の発展)が特に目覚ましいですが、
中でも、文章をベクトル化したものと類似した文章を探し出すというサービスが出てきてくれたことが何よりもありがたいです。 主に料金面で今までオンプレでしかできなかったものが使用できるということに感謝!
実際に外部情報として渡すデータ
今回は、Gluegent Flowのテンプレートモデル計81個をターゲットとしました。
以下が、実際に使用したデータの一部です。
【CSVとして保存しているデータ】
モデル |
説明 |
URL |
稟議書 |
汎用的な稟議書です |
https://… |
業務日報 |
1日の業務内容を報告するフローです |
https://… |
… |
… |
… |
ロゴ・シンボルマーク使用申請 |
ロゴ・シンボルマークの使用申請するフローです。 |
https://… |
【ベクトル化したデータ json形式 (※「,」 はいらない)】
{"id": "1", "embedding": ["-0.013948029838502407", "-0.03658713027834892", "0.0....} |
今回使用するアプリの簡単な説明
今回使用するアプリは以下の通りです。
①上側のフォームに質問を入力し、検索ボタンを押す
②下側に生成AIがその回答を返す。
使い方は以上です。とてもシンプル!
結果1
質問
出張申請のモデルを教えてください。
回答
モデル:出張申請
説明:出張する際に行き先や費用等を申請するフローです
出張申請:URL: https://xxx/console.html
#linkIssuance/xxxxxx3QtZ2x1ZWdlbnQtd29ya2Zsb3dyFgsSDFByb2Nlc3NNb2Rlbxxxxxxx
結果2
質問
半年後赤ちゃんが生まれる予定です。
何か申請する必要がありますか?
回答
モデル:出生届
説明:子供が産まれた時に届け出る申請フローです
モデル:育児休暇申請
説明:育児休暇申請をするためのフローです。出生前と出生後で記入欄を分けています。
出生届:URL: https://xxx/console.html
#linkIssuance/xxxxxx3QtZ2x1ZWdlbnQtd29ya2Zsb3dyFgsSDFByb2Nlc3NNb2Rlxxxxxx
育児休暇申請:URL: https://xxx/console.html
#linkIssuance/xxxxxx3QtZ2x1ZWdlbnQtd29ya2Zsb3dyFgsSDFByb2Nlc3NNb2RlbBxxxxxx
Gluegent Flowのモデル
まとめ
みなさん、いかがだったでしょうか。
今回はお試し程度でやってみたのですが、案外うまく欲しいモデルを提示しているかなという印象を持ちました。
特に、与えるデータのモデルの説明が詳しく書いてあると 生成AIもハルシネーションを起こすことも少なく、また、返ってきた文章(モデル)が正しいかどうかも、ユーザーが判断するのに根拠があると安心感がありますね。
Gluegent Flowを使用していただいているお客様の中には、私の想像よりも遥かに多くのモデルを登録されているお客様もいらっしゃいます。モデルを管理するうえで、とてもよいことですがやはり一般ユーザーが、どのモデルを使えばいいか分からないという課題があったこともまた事実です。
もし今回の記事のように、エンジニア目線で解決できそうな課題がありましたら、試していこうとおもいますので、 もし、こんな機能が欲しいなどご意見等ありましたら、カスタマーサクセスまたはサポートにお問い合わせいただけたら嬉しいです。
また、今回は 細かい技術の部分は省いてますので、次回はより技術的な話をメインで書かせていただけたらと思います。
それではまた次回の記事でお会いしましょう!
( せしょう)