Lightricks、Cloud SQL のベクトル サポートにより検索結果取得率が 40% 向上
David Michael Gang
Tech Lead, Lightricks
※この投稿は米国時間 2024 年 6 月 13 日に、Google Cloud blog に投稿されたものの抄訳です。
編集者注: Lightricks は、最新のコンピュータ ビジョンと AI のテクノロジーに基づいて写真や動画の革新的な制作アプリを開発し、魅力的でパフォーマンスの高いスケーラブルなコンテンツをクリエイターやブランドが制作できるようにしています。強力な動画エディタ Videoleap の検索機能を強化する必要が生じたとき、Lightricks は Cloud SQL for PostgreSQL の pgvector 拡張機能 を活用して検索機能を向上させ、取得率を 40% 上げました。
Lightricks の使命は、想像と創造のギャップを埋めることです。動画編集アプリ Videoleap を使用すると、プロでも初心者でも、どこでも楽しく簡単にクリップをカットしたりつないだりできます。
Lightricks は、直感的なエディタ、AI ツール、そしてユーザー作成コンテンツ(UGC)から作られたテンプレートを通じて、動画編集を誰でも行えるようにしたいと考えています。特に Videoleap のテンプレート検索機能は、この膨大かつ多様な動画テンプレート コレクションをユーザーが効率的に検索できるようにするために不可欠です。検索を強化するにあたり、より動的な検索モデルに移行できるソリューションが必要となりました。そのため Cloud SQL for PostgreSQL でベクトル検索がサポートされると発表されたとき、これは Videoleap に最適な選択肢だと確信しました。
ワンランク上のソリューションを求めて
ベクトル データベースの候補を探すようになる前、Lightricks はすでに Cloud SQL for PostgreSQL をマネージド リレーショナル データベースとして活用していました。そのため、データベース管理にかかる時間を減らし、アプリケーションの強化に注力することができていました。しかし、動画編集への注目の高まりに対応するには、Videoleap の検索機能を向上させる必要があります。そこで、ユーザーがブラウジング体験を自由にコントロールできるようにし、クリエイティブなビジョンに合うテンプレートを簡単に見つけられるようにしようと考えました。
当初、Lightricks のプラットフォームの検索機能では、定義済みのアノテーションに基づくキーワードの完全一致を行っていました。つまり、関連性の高い検索結果を表示させるにはユーザーが特定のキーワードを使用する必要があり、エラーの余地はほとんどありませんでした。しかしこのアプローチでは、アノテーションに直接存在しない用語や複雑なフレーズが含まれる可能性がある、幅広いユーザークエリを捕捉できないことがよくありました。こうした不一致に個別に対処するには時間がかかるため、データベースから関連情報を取得するためにベクター エンベディングを利用するベクトル検索の可能性を探ることにしました。そしてすぐに、このメソッドを Videoleap に実装すれば、コンテキストに沿った検索結果が得られ、検索の速度と品質が向上することに気づいたのです。
検索機能のニーズを満たすために、複数のソリューションを評価しました。まず Pinecone と Vespa を試しましたが、統合に時間がかかって複雑さが増すため、不十分でした。別のベクトル データベースを導入すると、ローカル環境、継続的インテグレーション(CI)パイプライン、デプロイ プロセスに変更を加えることになり、開発のオーバーヘッドが大幅に増加します。またデベロッパーは、主に新しいデータ型を理解する必要があるため、ベクトル検索用の PostgreSQL 拡張機能として一般的な pgvector に比べて覚えるべきことが増えます。PostgreSQL と外部のベクトル データベースの間でデータの一貫性を維持することも複雑でエラーが発生しやすいため、進行中のデータ同期を注意深く管理する必要があります。さらに、PostgreSQL のトランザクション機能を利用してベクトルデータとリレーショナル データの両方でアトミック アップデートを行うことは難しくなります。システムの分離により、ベクトルデータと PostgreSQL 内にある他のテーブルの間で効率的な結合が妨げられる可能性もあります。
Chroma DB も検討しましたが、信頼性の高いホスティング オプションやデプロイの可用性に欠けていました。そのため、Cloud SQL for PostgreSQL で pgvector を介したベクトル サポートがリリースされたとき、まさにこれが適切な選択であると思いました。ニーズに完全に一致するだけでなく、すでに導入していた PostgreSQL インフラストラクチャとの統合も可能だからです。合理的なアプローチで開発のオーバーヘッドが減り、データの不整合というリスクも最小限に抑えられるため、多くのユースケースで効率的かつ信頼性の高いソリューションとなります。
Cloud SQL と pgvector を活用した機能強化
pgvector と Cloud SQL を使用すると、簡単にデータを結合したり、トランザクションを処理したりできるほか、セマンティック検索が可能になります。速度や精度といった要素についてさまざまなインデックス登録戦略を採用して、ニーズに合わせて制御し、微調整できます。
Videoleap の検索のために作成したアプリケーションでは、マイクロサービス アーキテクチャを採用しています。スケーラビリティと高可用性を確保しながら検索できるようにするために、UGC テンプレートのメタデータとテンプレートのさまざまなエンベディングを Cloud SQL に保存します。このアプローチならマイクロサービスの原則に準拠して、システムのモジュール性、柔軟性、スケーラビリティを強化できます。
図 1. pgvector をサポートする Cloud SQL for PostgreSQL を使用した Lightricks のアーキテクチャ図
動的検索機能で結果を迅速に可視化
ベクター エンベディングを使用するセマンティック検索モデルに移行したところ、幅広いクエリに対して適切な結果を提供する機能が劇的に向上しました。この変更は、キーワードの完全一致だけを行うのではなく、検索クエリのセマンティックな意図を把握するために特に役立ちました。こうした適応性により、クエリにスペルミスや同義語、関連するコンセプトなどのバリエーションがある場合でも、関連性の高い結果を得ることができます。たとえば「フリスビーで遊ぶラブラドール」を検索すると、ゴールデン レトリーバーがボールで遊んでいる動画が返されるようになりました。使用されている特定の単語に制限されるのではなく、基となっている意図を理解しているのです。
新しいシステムではエクスポート率が大幅に増加したことから、検索機能の変更がクリエイターに多くの価値を提供したことがわかります。pgvector により、取得数も取得結果からのテンプレート使用も 40% 増えました。pgvector 拡張機能では Hierarchical Navigable Small Worlds(HNSW)アルゴリズムがサポートされるため、膨大な数のエンベディングを高精度でクエリすることも可能になりました。以前は 1~4 秒かかっていたリクエストの 90% の応答時間(P90)は、100 ミリ秒未満に激減しています。これによりクリエイティビティの威力が増し、ユーザーは関連性の高い結果を得やすくなるため、編集プロセスが最初の制作と同じくらい充実したものになります。
図 2. Hierarchical Navigable Small Worlds(HNSW)により膨大な数のエンベディングに対する高精度なクエリが可能。応答時間(p90)は 1~4 秒から 100 ミリ秒未満に激減。
AI で検索オプションが詳細に
検索機能の強化で要となるのは、ビジュアル コンテンツベースの検索機能の統合です。Cloud SQL と pgvector を使用すると、ベクター エンベディングの作成にニューラル ネットワークを活用できます。そのため、ビジュアル コンテンツを理解してユーザーの意図とマッチングする機能が劇的に向上し、より正確で関連性の高い検索結果が得られるようになりました。
動画編集ツールの最先端となるには、AI を活用した編集への注目の高まりに応じる必要があります。そうした制作は多くの場合、テキスト プロンプトに基づいて行われます。そこで、AI プロンプトを活用する Videoleap 検索機能を導入し、視覚的に一致するコンテンツだけでなく、ニュアンスや特定のテーマに沿ったコンテンツもクリエイターが見つけられるようにしました。たとえば、映画『バービー』に関連するコンテンツと一般的なバービー人形のモデル画像を区別する、といったことです。
将来的には、AI を活用した検索に重点を置いて開発することを目指します。その際、運用オーバーヘッドは Google Cloud で最小限に抑えられるでしょう。今から楽しみです。
使ってみる
ー Lightricks、テクニカル リーダー David Michael Gang 氏