はじめに
この記事は CyberAgent Developers Advent Calendar 2023 3日目の記事です。
AmebaLIFE事業本部の榊原です。今回はマンガIP事業部で行なっている、生成AIと自社のサイト上のデータを活用した書籍推薦システムを紹介します。
市場では電子書籍のサービスが拡大し、web発の人気マンガ作者が生まれるなど、漫画の電子化が進む中、より多くの作品・より読者にマッチする作品をレコメンドする重要性が増しています。
Amebaマンガでは、自社で取り扱う100万冊以上のコンテンツやレビューなどユーザーの評価データなどを、OpenAIのAPIを合わせて、自由入力に対して適切な作品の推薦を行えることを目標にした書籍推薦システムを開発しています。
本記事は、作品推薦システム、通称「AI書店員」のこれまで行なってきた実装・検証内容と今後の展望をまとめます。
「AI書店員」とは
前述の通り「AI書店員」は、ユーザーの自由入力に対しておすすめの漫画を推薦するシステムです。現在は事業部のSlackワークスペースで利用できるチャットボットとして公開されています。添付した画像のような感じで使えます!
レスポンスは、おすすめの作品とその作品のAmebaマンガページへのリンクが作成されます。
実装・アーキテクチャ
実装環境とアーキテクチャの概要に関して説明します。
ユーザーインターフェースはSlackを用いています。生成AIの特徴を把握するために、構築しやすい環境で検証ベースで開発しています。
採用技術
- Node.js
- AWS Lambda
- Python(検証用)
図のようにユーザーとのやり取りはSlackのメッセージで行い、OpenAIのAPIを呼び出す実装と自社データをEmbeddingしてレスポンスを整形し、回答をSlackで返す部分の実装はNode.js、インフラ環境はAWS Lambdaで構築しています。また後述するデータ検証でPythonも用いました。
課題と解決アプローチ検証
以下の3つの項目を順を追って検証しました。
- Slack のチャットボットをチームで運用してインプットアウトプットを検証
- Amebaマンガサイトのデータを活用したレスポンスの修正・精度向上
- 検証を通して見えてきた課題点と今後の方針
1. Slackのチャットボットを用いたインプット・アウトプットの検証
Slack のチャットボットをAmebaマンガで運用し、インプットとアウトプットの検証を行ないました。生成AIを書店員としてのロールで動作させて、レスポンスとしておすすめマンガを生成することを確認しました。またAmebaマンガの検索機能を活用して、レスポンスにAmebaマンガの対象作品へのリンクを生成することを確認しました。
課題点は、Amebaマンガで取り扱っていない作品もレスポンスに含まれることや、作品のタイトル表記の違いなどで正しいURLを生成できないことが確認できました。以上の課題点を解決するために次の検証を行ないました。
2. Amebaマンガサイトのデータを活用したレスポンスの修正・精度向上
正しいURLを生成すること、Amebaマンガで取り扱っている書籍を対象とすることを検証するため、Amebaマンガの作品1000作品をエンベディングし、レスポンスの整形を行いました。これにより、Amebaマンガの作品詳細ページを表示するためのtitle_idを作品名と合わせて出力することを確認できました。また対象作品からのみレスポンスを出力することを確認できました。
加えて、作品ジャンルや、評価などの情報もデータとプロンプトに与えることでその情報も考慮したレスポンスを出力できることを確認できました。プロンプト生成の際には、Embeddingしたデータを効率的に使うためのアルゴリズム検証も行いました。以下が使用したプロンプトです。
私たちは以下の情報をコンテキスト情報として与えます。{context}
あなたは Chatbot として、優秀なマンガ書店のスタッフのロールプレイを行います。どんな人にも適切なマンガをおすすめできます。適切な漫画をお薦めするために、average_ratingの情報も活用してください。この情報をもとに質問を日本語で答えます。また、おすすめするマンガのtitle_idを「title_id:」の形で回答に含めてください。Question: {question}`;
以下はEmbeddingアルゴリズムの検証に関してです。「ワンピースが好きな若者におすすめの漫画を教えてください。」という質問への回答の一例を示しています。
アルゴリズムにsimilarityを使用した回答
‘Answer: お客様、おすすめの漫画をご案内します。ワンピースをお好きなら、『One Piece Red』(title_id: 150683)はおすすめです!こちらはヒツジにならせていただきます!という内容で、average_ratingが5.0000なので、素晴らしいおすすめの漫画です。ぜひお試しください!’
アルゴリズムにsemantic_hybridを使用した回答
‘Answer: いらっしゃいませ、ワンピースが好きな若者におすすめする漫画ですね。私がお薦めするのは、title_id:133058の『宇宙戦艦ヤマト2199』です。平均評価が5.0000の素晴らしい漫画なので、ぜひお試しください!’
アルゴリズムにhybridを使用した回答
‘Answer: 若者には、ワンピースとの関連性が高く、高い評価を受けている漫画をおすすめします。例えば、title_id: 110112の『銀魂』やtitle_id: 162443の『鬼滅の刃』などです。また、average_ratingが5.0000のtitle_id: 112406の『エデン』やtitle_id: 124713の『青の祓魔師』などもおすすめです。’
上記の例では、hybridを使用した際のレスポンスが一番いい回答を得られていますね!
3. 検証を通して見えてきた課題点と今後のアプローチ
サービスとして公開する際以下の3つの解決すべき課題が見えてきました。
入出力を考慮したUIとシステム設計が必要
ユーザーの意図していない入力に対して体験を損なわないためにはどのように設計するか考慮する必要があります。
技術選定とセキュリティ面での設計・実装
最新刊の発売やAmebaマンガでの配信終了など、DBが更新際された際に動的にEmbeddingするデータにも変更が反映されるような実装が必要です。また現実的な時間で処理を完了するかパフォーマンスの計測と実装をする必要があります。加えて、今回は実装方針ではサイト上のデータを学習することはありませんが、外部データを利用するため、法務の確認も必要ですね。
データ選定と評価方法の確立
作品情報やレビューなどの付加情報の追加・削除を行い、よりレスポンス精度の高いパラメータにチューニングする必要があります。その上で「推薦する作品が良い」という抽象的な評価基準をより正確に、定量的に評価するための仕組みを設計する必要もあると考えられます。
まとめ
今回は、Amebaマンガのサイト上のデータと生成AIを活用した、作品推薦システムの構築と検証に関してまとめました。
「AI書店員」は Amebaマンガのサービス内のチャットとして組み込んだり、公式LINEにチャットAPIとして組み込むことで、マンガ検索体験を向上させたり、chatGPTプラグインとして公開するなど、電子漫画の新しい検索体験を生み出すとても拡張性のあるサービスであると感じています。将来的に一般公開できるよう、今後もバージョンアップしていきます!