Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LLMと自社データベースの協調動作による ファッションECへの応用

LLMと自社データベースの協調動作による ファッションECへの応用

kishimoto

May 11, 2023
Tweet

More Decks by kishimoto

Other Decks in Technology

Transcript

  1. 1
    LLMと自社データベースの協調動作による

    ファッションECへの応用


    View Slide

  2. 内容

    ● 自己紹介

    ● ChatGPTを使ったサービスの概要 

    ● 実現方法

    ● プロンプトの改善

    ● システム構成

    ● 今後の展望


    View Slide

  3. 自己紹介

    株式会社 DROBE
    岸本将志
    ● 主に機械学習を用いたサービス開発
    ● 周辺のインフラなど

    みずほ情報総研
 マイクロアド

    マイクロアド
 Gunosy
 DROBE


    View Slide

  4. DROBEのサービスの流れ

    70問のアンケートに答える

    1
    2
    3
    自宅にスタイリストが選んだ商品
    が届く

    気に入ったもののみ購入、

    それ以外を返品


    View Slide

  5. DROBEのサービスの流れ

    ● 自然言語によるコーディネートの解説のデータ(スタイリングカルテ)が蓄積 


    View Slide

  6. DROBEの保持する主なデータ

    ● ユーザーのプロフィール 

    ● アイテムの情報

    ● アイテムのコーディネート 

    ● コーディネートのポイント 

    ● ユーザーの自然言語によるスタイリングの要望 

    ○ ”結婚式に着ていける服をお願いします”のような 


    View Slide

  7. ChatGPTを使ってサービスを開発しました

    ● 自然言語で検索が可能 

    ● コンテキストを持った対話型の探索が可能 


    View Slide

  8. ChatGPTを使って爆速で開発できるサービスを考えた

    ● ユーザーが自然言語でアイテムを対話的に検索 

    ○ スタイリングカルテを活用すればできそう 

    Streamlitで一日で作った 

    社内確認用モック 


    View Slide

  9. 実現方法


    View Slide

  10. プロンプトの工夫

    ● 最初期

    ○ (以後、ハイパラは基本デフォルト) 

    ○ 回答の文章の雰囲気がスタイリングカルテと異なる 

    ○ 出力の形式が不安定 

    ■ 箇条書きだったり文章だったり 

    ■ コーディネートを複数生成したり 

    あなたはファッションに詳しい親切なスタイリストです。
    私はこれからテーマを与えます。スタイリストであるあなたはそれに沿ったコーディ
    ネートを生成してください。
    system

    女子会コーディネートを教えて
    user


    View Slide

  11. プロンプトの工夫

    ● 以下によりスタイリングカルテの雰囲気に近く、安定した形式の回答が得られるようになった 

    ○ Few-shot prompting 

    ○ 明確な指示

    Q: スニーカーの全身コーディネートをお願いします
    A: スニーカーを使ったおすすめのスタイルをご提案します!フードが取り外し
    可能なコートは、ウエストのコードを絞ってシルエットの変化もお楽しみいただ
    けます。インナーにはバイカラーのラインが印象的なニットを合わせて、ボトム
    スは春らしいカラーパンツを ♪足元はホワイトのレザースニーカーで大人カジュ
    アルに◎

    Q: 女子会コーディネートを教えて
    - 女性向け
    - 箇条書きではなく文章
    - 3行以内で

    View Slide

  12. 新たな課題

    ● 回答のコーディネートのポイントと具体例のアイテムが完全には一致しない 


    今の季節の通勤服を教えて
    今の季節の通勤服を教えて
    今の季節の通勤服を教えて
    今の季節の通勤服は、ベージュのテーパードパンツに、白のシャツを合わせた
    コーディネートがおすすめです。足元は、ベージュのパンプスでまとめると、上品
    で清潔感のある印象になります。また、羽織ものとして、ベージュのトレンチコート
    を羽織ると、よりおしゃれな印象になります。
    質問

    回答

    回答

    回答

    ⭕
 ❌
 ❌


    View Slide

  13. 解決策

    ● アイテムのメタ情報からコーディネートのポイントを再生成 

    カテゴリ:パンツ

    色:ベージュ

    素材:ポリエステル

    柄:無地

    シルエット:テーパード 


    View Slide

  14. プロンプトの工夫

    あなたは洋服のスタイリングを行うアシスタントです。以下のような
    json形式でリクエストが送られます。
    '''
    {"items":[{"色":"ブラウン","カテゴリ":"ジャケット","素材":"","柄":"千鳥","シルエット":"長袖"},{"色":"ブルー","カテゴリ":"スカート","素材":"ポリエステル, アクリル,
    レーヨン","柄":"チェック","シルエット":"フレア(スカート・ワンピース
    ), ロング(スカート)"},{"色":"ブルー","カテゴリ":"ニット","素材":"ウール, ナイロン, アクリル","
    柄":"無地","シルエット":"長袖, ビッグシルエット"}],"request":"花見に着ていける服を教えて
    "}
    '''
    itemsはファッションアイテムのリストです。
    requestはユーザーの質問です。
    以下のようなjson形式で返答してください。
    {"desc":""}
    descにはitemsで構成したコーディネートのポイントを記載してください。その際
    itemsのアイテムだけを使って説明文を作ってください。
    itemsに同じカテゴリの
    itemが複数存在する場合は、同じカテゴリの中で
    1つのitemだけを使って説明文を作ってください。
    {"items": [{"色": "グリーン", "カテゴリ": "ワンピース", "素材": "ポリエステル", "柄": "無地", "シルエット": "ノースリーブ, ひざ丈, ひざ下丈, ミモレ, フレア(スカート・
    ワンピース)"}, {"色": "グリーン", "カテゴリ": "ニット", "素材": "ポリエステル, ナイロン, レーヨン", "柄": "無地", "シルエット": "長袖, パフスリーブ"}],"request":"女子
    会コーディネートを教えて
    "}
    system

    user


    View Slide

  15. プロンプトの工夫

    ● アイテムのメタ情報をだけでなくユーザーの入力もjsonとして与えた 

    ○ “女子会にぴったりなコーディネートを提案します。”のような入力を考慮した回答を生成してくれた 


    ● メタ情報に含まれるアイテムのみで説明を作るように 

    ○ Hallucination対策


    ● 出力もjsonで生成させるようにした 

    ○ jsonでないと各アイテムの説明を冗長にする回答、jsonだとポイントを絞った回答が得られる傾向 

    {"items": [{"色": "グリーン", "カテゴリ": "ニット", "素材": "ポリエステル", "柄": "無
    地", "シルエット": "長袖, パフスリーブ"}],"request":"女子会コーディネートを教え
    て"}
    {"items": [{"色": "グリーン", "カテゴリ": "ニット", "素材": "ポリエステル", "柄": "無
    地", "シルエット": "長袖, パフスリーブ"}],"request":"女子会コーディネートを教え
    て"}
    その際itemsのアイテムだけを使って説明文を作ってください。
    以下のようなjson形式で返答してください。
    {"desc":""}

    View Slide

  16. ChatGPT Prompt Engineering for Developers

    ● 作った後で確認したけどこのコースに書かれているようなポイントを割と抑えていた 

    ○ https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/ 


    View Slide

  17. システム構成

    ● バックエンド

    ○ App Runner, Python, FastAPI, Faiss 

    ● フロントエンド

    ○ Vercel, Next.js, Tailwind CSS 


    View Slide

  18. 今後の展望

    ● 現状の課題

    ○ 誰が言ったかを考慮していない 

    ■ 20代にも50代にも同じアイテムが提示される 

    ○ 細かい要望を汲み取れない 

    ■ ”パンツだけもっと暗い色が良い”など 

    ■ スタイリングカルテとのembeddingの類似度だけでは難しい 

    ● 展望

    ○ LLMを自社の検索エンジン・レコメンドエンジンと協調させる 

    ■ LLMでメタ情報を獲得して検索エンジンでアイテムを検索し、レコメンドエンジンでパーソナラ
    イズ

    ■ 検索エンジン・レコメンドエンジンでパーソナライズされたアイテムを抽出して、LLMに提案を
    作ってもらう

    ■ etc.

    ○ ユーザー向けだけでなく内部のオペレーション改善にも組み込む 


    View Slide

  19. 協調動作のための開発環境

    ● 各開発者がプロンプトや協調動作のロジックのアイデアの実装だけすれば良い環境を構築 

    ○ 記事にもまとめてあるので是非 https://info.drobe.co.jp/blog/engineering/llm-ec 


    View Slide

  20. https://drobe.connpass.com/event/281671/ 


    View Slide