見出し画像

ASCII×マイクロソフト生成AIコンテストでアスキー賞を受賞!JBCCグループのAI専門チームに生成AI構築の秘訣をきいてみました!

JBCCグループの社内スタートアップ企業「イノベース」は、2024年11月14日に開催された、日本マイクロソフト株式会社とデジタル情報メディア、ASCII(アスキー)共催のAIコンテスト 「AI Challenge Day 2024 in 品川」において「アスキー賞」を受賞しました。
今回、初参戦で受賞に至った秘訣はどこにあるのか?一週間にわたった競技の現場のリアルな取り組みを紹介していきます。


■生成AIコンテスト「AI Challenge Day」とは

「AI Challenge Day」は、株式会社角川アスキー総合研究所と日本マイクロソフト株式会社が共同で企画・開催している生成AIのハッカソンイベントです。各参加チームは生成AIを活用して出題テーマに沿ったシステムを構築し、作成したサービスやアイデアを競い合います。

第3回目となる今回は、以下の日程で開催されました。
●開発期間:2024/11/7〜13の1週間
●発表:2024/11/14

発表の様子は YouTube で公開されていますので、ぜひご覧ください!

JBCCチームの発表は 39:47~ です

■JBCCグループの社内スタートアップ企業「イノベース」が初参戦!

- イノベースとは

JBCCチームとして参戦したのは、2022年10月に設立した、AI専門の社内スタートアップ企業「イノベース」です。AIの力を使って、日本の中堅・中小企業を元気にしたいというビジョンを掲げ、2023年にAI自動検品サービス「Inspection(インスペクション)」をリリースするなど、画像認識・データ分析など様々なAIの実用化に取り組んでいます。

今回はイノベースを中心に、JBCCグループの事業会社であるJBCCやCISのAI技術者も加わり、計6名でチームを構成しました。当チームの特長はチャレンジに前向きなこと!普段の業務で行っている企業のシステム開発やAIの新規事業開発など、それぞれの知見も活かしながらチャレンジしました。

■今回のテーマ:EC サイトにおける顧客体験の向上と販売戦略策定、意思決定支援アシスタントを開発しよう!

第3回となる当コンテスト、今回のテーマは「EC サイトにおける顧客体験の向上と販売戦略策定、意思決定支援アシスタントを開発しよう!」です。過去2回と同様にRAG(検索拡張生成)を扱うのはもちろん、複雑なシステムを連携するためのエージェントの考え方や、非構造化データを含む多様なデータソースを扱う幅広い技術力が求められます。

生成AIを用いて構築するのは、ECサイトのお客様向け、運営者向けの2種類のAIアシスタントです。それぞれ「顧客満足度を高めるためのECサイト訪問者向けのヘルプアシスタント」と「サイト運営側での意思決定を支援するための顧客フィードバック分析アシスタント」といった実案件を想定した課題に対して、各チームが技術力を振るって課題解決に取り組みました。

JBCCグループのAI技術者は2チームに分かれて各課題を担当。中部地区や西日本のメンバーも含めてリモートで連携し、チームワークを活かしながら効率的に構築を進めていきました。

■渾身のプレゼンテーションと結果発表

開発期間1週間を経て迎えた発表イベントは、日本マイクロソフト社の品川オフィスで開催されました。
JBCCチームからはイノベースのテックリード、山﨑さんが登壇し、構築したAIモデルのカスタマーストーリー、システム構成、工夫した点とアイデア、AI精度の評価数値を発表しました。

当日の朝までかけて調整を重ねたAI精度と活動内容を発表しました

- カスタマーストーリーと成果物

2つの課題に対してカスタマーストーリーを描き、構築した仕組みを紹介しました。

【部門1:ECサイト訪問者向けのAIヘルプアシスタント】
ECサイトを利用したお客様が配送状況を確認するシーンを想定しました。通常だとECサイトの注文履歴から配送状況を確認してという手順だったところ、ECサイトの右下に置いたポップアップの問い合わせチャット画面からAIアシスタントに質問すると、一瞬で回答が返ってくる仕組みを構築しました。

右:問合せチャット画面のイメージ

【部門2:顧客フィードバックAI分析アシスタント】
こちらは企業の営業やマーケティング担当者が分析を行うシーンの想定です。広告キャンペーンのフィードバックを分析したい時、ツイートや PowerPoint などのマーケティング資料を使って分析を手作業で行うのは大変です。そこでビジネスチャットの Microsoft Teams から質問するだけで、様々なデータとつながったAIエージェントが分析・集計して回答を返す仕組みで工夫しました。

- アーキテクチャ図

今回 Microsoft Azure 上で構築したアーキテクチャ図はこちらです。

基本的なRAGの構成を後ろに持ちつつ、今回の2つのお題に対して、一般ユーザー・企業ユーザーの使い勝手を考慮し、様々なチャネルで対応できるように設計しました。データセットで用意された多様な情報をAI Searchで読み込めるようにインデックスで集約。AIエージェントで読み込んでユーザーの質問に適切な回答ができるような仕組みを構築しました。

- 生成AIの構築でこだわったこと

今回の2部門の課題は、ともに単純なRAGでは回答が難しい質問ばかりでした。一般的なRAGは下記のような流れで回答を生成します。

1. ユーザーからのリクエストから検索クエリを抽出
2. 抽出した検索クエリを用いて文書を検索
3. 検索結果を用いて回答生成

しかし、今回の課題には多段階の検索や回答生成が必要なものが多くありました。例えば、製品検索・在庫確認・カートへの商品追加が必要な商品の購入を要求するリクエストや、検索結果に対して分析を行った上で回答を生成する必要があるリクエストです。

こうした一般的なRAGでは難しい課題に対して、JBCCチームではAIエージェントを用いた回答生成を実装しました。AIエージェントはユーザーのリクエストに基づいて、指示を達成するために必要な機能を組み合わせを判断し、実行します。

例えば「ゲームAを購入したユーザーに類似商品のレコメンドを5件したいです。どんなゲームをレコメンドすべきですか?」というリクエストに対して、AIエージェントは自動で下記のような流れで回答を生成します。

1. 製品データベースを検索し、ゲームAの情報を取得する。
2. ゲームAの情報をもとに製品データベースを検索するクエリを作成する。
3. 製品データベースを検索し、類似したゲームを5件取得する。
4. 取得した類似ゲームの情報をもとに回答を生成する。

AIエージェントを用いることで従来のRAGでは回答が難しいタスクにも回答することができます。この部分の実装に特にこだわりつつ、それぞれの部門で独自の部分についても工夫して構築しました。

【部門1:ECサイト訪問者向けのAIヘルプアシスタント】
部門1はECサイトの商品そのものについてや、関連するマニュアル、ECサイトそのもののマニュアルの情報から回答する必要がある質問の他、マルチモーダル(画像+質問文)の質問が含まれる課題となっていました。

ここではAIエージェントを用いつつ、特にマルチモーダル(画像+質問文)部分への対策に重点を置き下記についてこだわって構築しました。

1. マルチモーダル部分への複数種類の検証を実施
検証として、まず画像とテキストのマルチクエリ ベクトル検索を試してみました。

「画像とテキストのマルチクエリ ベクトル検索」とは
 複数のベクトル(問い合わせの文言と画像の双方のベクトル)を使用して同時に検索を実行する方法 両ベクトルのいいとこどりが可能

結果としてこの試みはうまくいかず、関連しないドキュメントが上位にヒットする状態となってしまいました。(ベクトルそれぞれの重み付け等が不十分だったと思われます。)
これを受けて、先に画像単体でベクトル検索を実行し、得られた結果の情報を元に再度検索を実施するよう変更しました。これにより最終的な回答の精度向上を確認できました。

2. 機能に対応するプロンプトを工夫
当初大きな単位でAIエージェントに持たせる機能を用意していたのですが、各機能毎のプロンプトの内容量によるものか適切な機能選択ができない質問がいくつかありました。
そこで、機能を細分化し、どの場合にどのツールを使えばよいか明確となるプロンプトを用意することで対応しました。また、質問によってどの検索をどういった順序で実行するか判断しやすいようプロンプトを工夫しました。

【部門2:顧客フィードバックAI分析アシスタント】
部門2はX(旧Twitter)のポストのようなJSONデータや Microsoft Office ファイル(Excel・PowerPoint)、製品データベースの情報などを対象にした課題でした。

具体的には、特定の製品と類似した製品をレコメンドするようなリクエストであったり、検索結果に対して分析を行った上で回答を生成する必要があるリクエストに対応する必要がありました。

これらに対応するAIエージェントを実装するにあたり、下記の2点をこだわりました。

1. 細かい粒度での機能実装
AIエージェントが呼び出す機能を実装するにあたり、各種データの検索機能のほかに検索結果を要約するような機能や特定の内容を抽出するような機能を実装し、回答精度の向上を目指しました。また、検索機能についても単にベクトル検索を行うのではなく、Azure AI Search のフィルタリング機能を活用した検索クエリを作成するように実装しました。

2. プロンプトの調整
AIエージェントの挙動がプロンプトに大きく影響を受けるため、調整が難航しました。また、Azure AI Search のフィルタリング文字列も構文(OData形式)どおりに生成するのが難しく、構文エラーのもとになるようなフィルタリング条件は生成しないようにプロンプトで制御を行いました。

- 結果発表

AI精度を表す最終的なスコアリングは、21.400点(25点満点中)となり、「アスキー賞」をいただくことができました!そして審査員の方からは、色々な技術を使って実装していて、エラーが出ない安全性があるシステムだと感じました、という嬉しいお言葉もいただきました。ありがとうございます。

初参戦でめでたく受賞!

■生成AIコンテストからの学び

今回のコンテストを通して私たちは多くの貴重な体験と学びを得ることができました。チームメンバーの声を紹介したいと思います。

「今回の活動を通じて、実際のプロジェクトでもよくある”スキルセットの偏り”に対処し、チーム全体としてどう動くべきかを体験できたことは収穫でした。何よりも、社内外の優秀なAIエンジニアの知見に直接触れる機会が得られたことが、このハッカソンの一番の価値でした。学びが多く、次へのモチベーションも高まりました。参加できて良かったです!」

「マルチモーダルについてやAIエージェントの実装等、初めて挑戦する部分が多くとても勉強になりました。」

「チームでのコミュニケーションの重要性を実感し、異なるバックグラウンドを持つメンバーとの意見交換が非常に有益でした。今回の経験を活かし、業務にも貢献できるようスキルを磨いていきたいと思います!」

「他チームの発表を聞く中で、挑戦を通じて得た達成感や新しい発見に対する喜びが語られており、自分自身も同じくプロセスから学び取ることができたことに共感を覚えました。特に、限られた時間内でのアイデアの具現化や、問題に直面しながらも諦めずに取り組む姿勢に多くの刺激を受けました。」

「様々なタスクに対応したRAGの実装という難易度の高い挑戦の中で、プロンプトや実装における様々なアイデアを試すことができて良かったです。
特にRAGにおけるボトルネックの一つである検索精度についてはフィルター文字列の生成などによって改善が実感できたのでその点も良かったです。
ただ、試せることはたくさん残っていたので次の機会があれば、その時の流行を取り入れつつ、より多くの試行錯誤を行いたいと思います。」

最後までお読みいただき、ありがとうございました!

今回受賞したイノベースメンバーのAIへの取り組みをこちらの記事でも紹介しています。ぜひご覧ください。