はじめに
本記事はGoogle Cloud Next Tokyo 2024 のDay2(8/2)において AbemaTV 菅 俊弥 氏 が講演された「ABEMA を支える AlloyDB ベクトル検索で構築するレコメンド システム」のレポートです。
公式セッション紹介
アプリケーション開発者を対象に、動画配信サービス「ABEMA」の番組レコメンド機能の一部を担う、AlloyDB を用いたベクトル検索機能の活用方法について解説します。AlloyDB を採用した理由やベクトル検索機能を用いたレコメンド システムの構築手法や運用上の考慮点、そして課題とその実践的な解決策について詳しく説明します。
発表資料
- アーカイブ動画は9月に公開されるとのこと(Google Cloud Next Tokyo 2024として)
概要/おすすめポイント
AbemaTVにおいて、コンテンツが入稿されてからのレコメンドにおいて幾つかの方式を元々持っていたが、自動のものは新規のコンテンツに対して弱かったり、手動やルールベースのものは鮮度が高いコンテンツ(ニュースとか)に対して弱かったりと課題があったことに対して、ベクトル検索を利用して自動でレコメンドが行えるのでは、というアイデアをもとに開発されたそうです。
セッションでは AlloyDB 上でベクトル検索を行うための具体的なTipsも含まれていたので、AlloyDBを利用してベクトル検索を行ってみたい、という方にマッチすると思いました。
なお、Google Cloudでのベクトル検索については 2023年の DB Tech Showcase で佐藤さんが講演されていたセッション(今さら聞けない!ベクトル検索超⼊⾨])の レポート や 動画 をおさらいしておくと良いと思います。
セッション内容の紹介
- なぜベクトル検索を利用したのか
- AlloyDBを採用した理由
- 実際に展開して見えてきたこと
1. なぜベクトル検索を利用したのか
概要でも述べていますが、従来のレコメンドシステムには「コールドスタートとレコメンドのリードタイムを両立させる仕組みがない」という課題がありました。
ベクトル検索を利用することで、上記を両立させることができるのでは?というアイデアがうまれ、検証を行うことになったという事です。
2. AlloyDBを採用した理由
大きな理由としてはコンテンツのデータがAlloyDBに移行されており、且つAlloyDB AI機能でVertex AIモデルがすでに実装されていた、という点になります。身も蓋もない話に思えるかもしれませんが、データを移動することなくベクトル検索が利用できる、というのはいくつかの事例でも同じような話があり、比較的気軽にトライできることは大きなメリットだといえそうです。
その他にも、AlloyDBのSCaNN索引の性能面や、pg_cronやpgvectorなどの拡張機能を始めベクトル検索用の専用レプリカを利用できることなど総合的に判断されたとのことでした。
3. 実際に展開して見えてきたこと
どちらかというとコンテンツの内容との関連になりますが、以下のような調整を行ったという話がありました。
- 消費サイクルが早いニュースなどのコンテンツには古いコンテンツがノイズとして乗ってしまうためpg_cronを活用して検索対象から外す
- 最新のコンテンツはAIモデルが知らない場合もあるため、AIモデルに渡すタイミングで情報を調整
まとめ
AlloyDB自体が拡張性や耐久性に優れるマネージドなデータベースですが、ベクトル検索を利用してみたい、というときにも問題なく利用できますよ、という点が1番のポイントかなと思います。
ベクトル検索自体は、最近はどのリレーショナルデータベースでも標準で利用できるようになってきていますが(MySQLは標準では未実装)、AlloyDBは Vertex AIとの統合含めて利用しやすくなっているのがよくわかる発表でした。
実際のセッションではどうやって性能問題を解決したのかや、実際のEmbeddingについても触れられていたので、興味ある方はアーカイブが発表されたらぜひ見てみてください。