こんにちは。11月にAI Challenge Dayと呼ばれる株式会社角川アスキー総合研究所と日本マイクロソフト株式会社が主催するAI ハッカソンに参加し、準グランプリを獲得しました。
本記事ではイベントの取り組みについてご紹介いたします。
AI Challenge Dayとは
RAGなどの技術を用いて事前に用意された質問群に対する最適な回答を競います。
審査基準は回答の精度だけでなく、カスタマーストーリーの構築やアーキテクチャの工夫も重視されます。
今回のテーマは「Virtual Online Store Copilot」で、ECサイトでの顧客体験の向上と販売戦略の策定を支援する生成AIアシスタントの開発が求められました。
生成AIを乗りこなせ! ASCII×マイクロソフト生成AIコンテスト中継【AI Challenge DAY】 - YouTube
チームの構成と進め方
チーム構成について
私たちのチームは今年入社したばかりの新卒や大阪拠点のメンバー、生成AIやデータ分析など様々な専門領域を持つメンバーを含む6名と 「GPT-4o」の愉快な仲間たちで参加しました。(プロジェクトを円滑に進めるうえで、もはや生成AIの協力は不可欠ですよね・・・)
生成AIの利用経験が豊富なメンバーもいれば、全く触れたことがないメンバーもいましたが、カスタマーストーリーの検討、実際に動かす環境の構築、アーキテクチャの検討という役割分担でイベントに挑みました。
進め方について
今回の参加メンバーは通常業務と並行してイベントに参加する必要があったため、限られた時間で成果を出せるような進め方を意識しました。
例えば、
- 各メンバーの役割分担及びマイルストーンを決定し各々が並行して動けるようにした
- クリティカルパスを意識して作業の優先順位を付け、誰かが待ち状態になることを防いだ
ということをお題発表直後から行えたため、効率的に作業ができたと感じています。
また、メンバーの作業場所も離れていたため、コミュニケーション不足にならないように作業中はオンラインでビデオ会議を行っていました。雑談も交えながら課題の相談もでき、チーム内の絆も深まったと感じています。
実施したこと
RAGの実装について
RAGの精度を向上させるために試行錯誤を繰り返す必要があると考えた私たちは、Azure Machine Learningのプロンプトフローを採用しました。
複雑なロジックをローコードで実装できるためトライ&エラーを繰り返しやすいほか、聞いたことはあるけど実際に触る機会がなく多くのメンバーが興味を持っていたことも決め手となりました。
いざ実装をはじめると、1時間足らずで基本的なRAGの処理が実装できたのは非常に印象的でした✨
イベントの終盤では実装経験や生成AIの利用経験といったスキルセットに関係なく、それぞれのメンバーが精度向上に向けて様々な処理フローを試すことができたのも狙い通りの結果となりました。
最終的に作成したプロンプトフロー
ただ、それぞれのフローを最終的に一つにマージすることを考えず各々が楽しみすぎたためマージ作業は骨が折れました。
最終形は画像の通りですが、マルチモーダル対応、Text to SQL、HyDEやDIVAなど様々な要素を取り込むことができました。
いろいろ試して精度を上げていく過程はとても白熱しました。
時間があればCopilot Stackの思想に則った構成にし、エージェント実行なども実現したかったです。
ドキュメントの取り込みについて
ドキュメントの取り込みには Synapse Analyticsのデータフローやコピーアクティビティを活用して、ローコードで様々な場所に格納されたデータやドキュメントを手間なく取り込み、プロンプトフローによるRAGの精度向上に注力しました。
データの取り込みは1日目でほぼ完了しましたが、RAGの精度向上のためにはデータの事前加工が必要だと感じており
- PDFファイルなどのマニュアルにはAI Visionを用いてOCRを実施する
- 画像データを含むドキュメントをAI Searchに取り込む
- Document Intelligenceを利用してドキュメントのレイアウトを認識する
といったことを実施するなど、質問に応じて適切な参考情報を取得できるように加工したかったと感じています。
カスタマーストーリーの検討について
ECサイトのカスタマーストーリーを作成する際、いくつかの困難に直面しました。まず、利用者のニーズと運営側のニーズをバランスよく理解することが難しかったです。
利用者は使いやすさや商品の豊富さを求めますが、運営側は在庫管理や顧客対応、売上分析など、複雑なニーズを持っています。これらを正確に把握し、反映させることに苦労しました。
また、ECサイトで起こりうるトラブルの調査も大変でした。 配送遅延や在庫切れ、支払いの問題など、さまざまなトラブルを予測し、対策を講じるためには、過去の事例や業界の動向を詳しく調べる必要がありました。
さらに、AI導入によるメリットを具体的に考えることも難題でした。AIによるパーソナライズされた商品推薦やチャットボットによる迅速な顧客対応がどの程度の効果をもたらすのか、具体的なシナリオを描く必要がありました。
これにより、AIの導入が単なる技術的なアップグレードではなく、実際のビジネス価値を生み出すものであることを示す必要がありました。
これらの課題を克服するために、多くの時間と労力を費やしましたが、その結果、より実践的で価値のあるカスタマーストーリーを作成することができました。
顧客の悩みを解決するために、まず具体的な悩みの例を調査しました。実際の事例を収集し、それらの問題をAIでどのように解決できるかを検討しました。
例えば、商品検索の精度向上やパーソナライズされたおすすめ商品の提示など、AIの活用によって顧客体験を向上させる方法を具体的に考えました。
次に、カスタマーストーリーを作成する際には、大枠から詳細へと少しずつブレイクダウンしていくアプローチを取りました。
全体的なストーリーの流れを考え、その後、各ステップで顧客がどのような体験をするのかを細かく描写しました。
このようにして、顧客の視点に立った詳細なカスタマーストーリーを作成することができました。
アーキテクチャについて
生成AIの活用は多くの企業で進んでおり、少し調べるだけでそのアーキテクチャが見つかる状況の中で、どこまでの広さでエンタープライズを捉えるのか、そしていかに独自性を出していくかに頭を悩ませました。
エンタープライズへのアプローチ
エンタープライズへのアプローチにおいては、グローバルな利用を考慮しました。
具体的には、Azure Front DoorによるCDNやAzure OpenAI ServiceのTPMを考慮したAzure API Managementでのロードバランスの仕組みを取り入れ、全世界の利用者へ安定したUXを提供しています。
これにより、高可用性(HA)も実現しました。
さらに、Azure Key Vaultなどによるセキュリティ強化やAzure App Configuration、サーバレス技術を採用することで、インフラおよび運用コストの削減も達成しています。
独自性の追求 (GenAISecOps)
独自性については、GenAISecOpsという概念を取り入れています。
GenAISecOpsは、コンテスト参加メンバーと相談して作ったキーワード(造語)で、運用改善の一環として実施されるモデルの評価やユーザーが入力したプロンプトの監査など、運用改善サイクルを指しています。
生成AI活用におけるデータセキュリティも非常に重要な要素であり、GenAISecOpsの仕組みの中でガバナンスを効かせています。
これにより、生成AIリテラシーを高め、より安全で効率的な運用を実現しています。
スコアと審査員からのフィードバック
スコア
我々のRAG精度スコアは20.5/25.0点でした。
定期的にスコアを記録したグラフを見ると徐々に精度が改善されていることがわかるかと思います。
様々な手法をどんどん試していたのでグラフの上下動が激しいですがこの試行錯誤ができたのもプロンプトフローを用いていた点が大きいです。
審査員からのフィードバック
弊社は、特にカスタマーストーリーおよびコンセプト、業務に生成AIをうまく活用し次世代の開発スタイルを体現している点について高い評価をいただきました。 普段の業務においても、開発者目線ではなく顧客目線で考えるということや、生成AIをうまく活用して効率的に業務を進めるという点は意識しているため、そのような部分を評価いただけて非常に嬉しく思います。
参加してみた感想
今回のイベントでは、課題の難易度やボリュームに圧倒される場面もありましたが、非常に充実した経験を得ることができました。
経験者が生成AIの知識を深めるだけでなく、初学者にとっても学び始めの良い機会となりました。
与えられたテーマを実現するには1週間という期間は短く、試せなかった内容も多くありました。もっと良い方法があっただろうとメンバー全員が感じております。 参加して終わりでは惜しい内容であり、実際に同様のテーマを実現したいお客様もいらっしゃると思いますので、弊社内で引き続き検証を進め、ソリューションを検討していきたいと考えております。
参加する中で意外だったのは、各メンバーが普段の業務で培ったノウハウを共有する場にもなった点です。
「そんな技術も普段使っていたんだ!」と新たな発見や学びが多くありました。
今後の業務にもこの経験を活かしていければと思います。