b-moz

今回のハッカソンでは Gemini、Cloud Run、 Google Custome Search Engine などを用いて小売業界における商品カタログ情報収集の効率化・高速化に貢献する機能 (b-moz) を構築した。
ハッカソン用に作成した機能を用いてスマホのカタログ情報を対象に検証したところ、90~95%の精度で情報収集が可能であった。

着想の背景

EC など小売を行う場合、適切な在庫管理や売買のために商品のカタログマスタが必要となる。 例えば、スマートデバイスは定期的に新しい商品が発売され、特に Android スマホは様々なメーカーやキャリアから発売されるため継続的な情報の収集が必要である。しかし、現状のカタログ情報収集は人手による作業に依存する部分も残っており、正確な情報を集めるための時間的・人的なコストが大きい。また、カタログデータの欠損は現場における商品情報の登録を止めてしまうため、製品化工程のボトルネックとなる課題もある。
そこで、本ハッカソンでは LLM と Web 検索を活用し、カタログデータの収集を自動化することで、データ収集のコスト削減と、カタログ情報が利用可能になるまでのリードタイムを削減できるのではないかというところから着想を得た。
b-moz は百舌鳥が獲物を狩った後に溜める修正を持っている事になぞらえてカタログを収集する百舌鳥をイメージしている。

機能

本ハッカソンで作成した主な機能は次に挙げる2つである。

  1. 最新商品情報の収集
    1. 最近発売・発表された商品情報を集め、その商品名(モデル)と付随する情報(e.g. メーカー、シリーズなど)を取得する
  2. 商品の詳細の取得
    1. 商品名から売買に必要なカタログ情報を収集する
    2. 例:
      1. スマホ
        1. モデル名
        2. ストレージ

      2. PC
        1. モデル名
        2. CPU
        3. メモリ (RAM)
        4. ストレージ

      3. スマートウォッチ
        1. モデル名

        2. 素材
        3. 大きさ

これらの機能はストレージ展開やカラー展開など、カタログの構築に必要な情報を適切なクエリを用いて Google 検索で取得し、 LLM に与えることで情報の取捨選択を行い必要な情報を抽出する。取得した情報は Pub/Sub で Publish することで、情報を必要とするサービスでの利用や、データストアへの保存を可能とした。

アプローチ

Cloud Run 上で Python、 Flask、LangChain を用いた API を構築し、RAG のチェインにおいて Vertex AI (Gemini)、Custome Search Engine を呼び出すことで適切な情報の取得を可能にする仕組みを構築した。

直面した課題

開発の過程において以下の課題に直面した。

  1. 検索結果に情報は含まれているものの意図通りの情報が抽出できない
  2. 稀に指定とは異なる形式の JSON が返される

検索結果に情報は含まれているものの意図通りの情報が抽出できない
検索結果に情報は含まれているものの意図通りの情報が抽出できない課題に関しては、プロンプトエンジニアリングで解決した。
具体的には、 Few-Shotプロンプティング (Brown et al.) を用いて、抽出したい情報の具体例や、起きうるパターンをプロンプトの中で例示することで、LLM が想定する値や回答パターンを想定しやすいプロンプトを作成することでハルシネーションの出現を抑え、必要な情報を抽出可能にした。

稀に指定とは異なる形式の JSON が返される
稀に指定とは異なる形式の JSON が返される課題に関しては複数のアプローチで取り組んだ。
1 つ目の解決策は、プロンプトの中で想定する JSON を例示することで、LLM が返すべき JSON を認識しやすくすること。
2つ目の解決策は、Gemini の response_mime_type で JSON フォーマットを指定し、JSON で値を返すことの強制力を持たせた。
これらに関しては片方ずつでも試したが、両方の設定を行うことでより欲しい形での回答が得られた。

成果

今回のハッカソンで作成した b-moz の検証は、社内で既知のスマートフォンのモデルに対して b-moz を実行することで、収集されたカタログ情報の正確性、過不足を確認した。具体的には指定のモデルに存在する色・ストレージを収集し、社内のデータベースと突合することで検証した。

検証条件

検証では自社で保有する中古スマートフォンのデータを用い、2020-01-01 以降に発売されたモデルを対象とした。
本データは人手にて web 上から収集されたスマートフォンデータである。
モデルごとのカラー展開とストレージ展開を b-moz により収集し、マルチラベル分類の手法を用いて評価を行った。

評価指標は以下の通りである。

  • EM (Exaect Match): 予測が正解と完全に一致する割合
  • Accuracy(正解率): 予測が正解と一致する割合
  • Recall(再現率): 正解が予測に含まれる割合。
  • Precision(適合率): 予測が正解である割合
  • F1値: Recall と Precision の調和平均

検証結果

モデルごとのカラー展開とストレージ展開の情報収集を行ったところ、カラー展開については 90%、ストレージ展開については 95% 程の精度で情報の収集を行うことができた。
色情報ついて見ると、全体では再現率 0.89、適合率 0.94 と比較的高い精度が出ており、また、発売時期別では直近に発売されたモデル情報は Exact Match が 1.0 (=100%) と高い精度での収集を実現できている。
また、検証の過程で社内データの欠損やカラー名の間違いが発覚することもあり、社内データの不備が精度低下に影響を与えている側面もある。
適合率が高く出ていること、人手での収集精度が 100% ではないことを考えると、カタログデータの収集は LLM により十分に代替できる可能性が示唆されている。

カラーバリエーションの収集精度

scores_color

ストレージ展開の収集精度

scores_storage

メーカー別カラー展開収集精度

smartphone_color_by_manufacture

シリーズ別カラー展開収集精度

smartphone_color_by_series

メーカー別ストレージ展開収集精度

smartphone_storage_by_manufactures

シリーズ別ストレージ展開収集精度

smartphone_storage_by_series

b-moz の今後の展望

今回はスマートフォンを対象にカタログデータ収集の仕組みを構築し検証を行ったが、この仕組みは別の商品カテゴリにも流用可能なアプローチである。今後 PC やスマートウォッチなども含めた本番適用を考えているが、商品情報を抽出するプロンプトを発展させることで、このアプローチは多商材を扱う小売業界の商品マスタ作成の課題の解決につながると考えている。
このためには、カテゴリごとにプロンプトを自動生成する仕組みや、取得した Web からの情報を事前にサマライズすることでより必要な情報をコンテキストとして与える仕組み、取得したい情報毎にLLMに問い合わせ最後に結果を合成する仕組みなど、様々な手法が考えられる。

また、今回の評価の試行では比較的高い適合率を記録することが確認できたが、今後はこの高い適合率を保証する仕組みを構築したい。誤ったデータを収集すると社内のマスタデータが汚染され、適切な商品の登録に支障がでるため、適合性を保証することで、実用化し、業務の効率性を高めたい。

Built With

Share this project:

Updates