Heroku Postgres x pgvector – あなたのアプリケーションにAIの力を
※本ブログは先日公開された「Enhancing Heroku Postgres with pgvector: Generating AI Insights」の日本語訳となります。
米国時間の 10/24 日、Heroku Postgres がオープンソースのベクトル検索拡張機能の pgvector に対応しました。昨今、大規模言語モデル (以下 LLM) や AI アプリケーションがさまざまな業種で注目されていますが、pgvector により、Heroku Postgres は高次元ベクトルの類似検索が可能になります。本稿では、pgvector を活用することで広がるビジネスのシナリオについて紐解いていきます。
pgvector は、Heroku Postgres 15 を採用している Heroku Standardプラン以上の全てのデータベースにおいて、クライアントセッション内で以下のコマンドを実行するだけで使用を開始することができます。
pgvectorとはなにか – その価値は何か
Heroku Postgres は、「単なる」リレーショナルデータベースの枠を遥かに超え、新しい機能をシームレスに統合する、さまざまな拡張機能により、さまざまなニーズに柔軟に対応できるデータサービスとして進化しています。効率的な地理空間データ処理のために PostGIS を導入したように、今回は pgvector を導入しました。これは、Heroku Postgres のインスタンスを強力なベクトルデータベースに変貌させる革新的な拡張です。この機能強化により、Heroku Postgres はベクトル化されたデータを効率的に保存し、高度な類似性検索を実行することが可能になります。Postgres 15 の Standard プラン以上の環境上で pgvector を有効化させることで、ビジネスに革新をもたらすことができます。
複雑なデータでもベクトルへと縮小することが可能です。これらのベクトルは、データを表す数百、あるいは数千の次元を持つ多次元空間の座標として機能します。類似したデータセットは、近接したベクトルとして変換されます。これにより、数学的な類似性の計算を単純にすることができます。
例えば果物を例にとってみましょう。色、形、大きさ、味などの属性に基づき、果物をベクトルで特徴づけることができるようになります。つまり、近い特徴を持つ果物は、ベクトルの類似性が大きいと判断できるということです。こうしたことで得られる強力なインサイトが pgvector によって可能となるのです。
AI 推論アプリケーションにおいて、データをベクトル表現に変換するプロセスは「埋め込み (embbeding)」と呼ばれ、通常 LLM などの AI モデルによって生成されます。ベクトルデータベースは、これらの「ベクトル」または「埋め込み」を保存する設計、特化されたシステムです。これにより、データのさまざまな属性を横断的に、方向と大きさが近いベクトルを迅速に見つけることができます。
ここで改めて果物を例にとってイメージしてみましょう。あなたはさまざまな、たくさんの果物の情報が格納されたデータベースを持っていると考えてみてください。そこには、それぞれの果物の情報(色や、形、大きさ、味など)が機械学習モデルを通じて、それぞれ固有の「ベクトル」で「埋め込み」されています。
さて、あなたはリンゴを用いたフルーツサラダの作成をお願いされました。この注文をしてきてくれた人は、「赤いリンゴ」の「味」と「食感」を重要と考えているそうです。ところが、手元にはリンゴがありません。そんな時、私たちは「赤いリンゴ」の「味」と「食感」に似たフルーツをさがし、代替とします。こうした「味」「食感」などのデータの「ベクトル」が近いもの、つまり類似性を検索することで、たとえば「味」と「食感」が近い「青いリンゴ」や「洋梨」のような代替品を見つけることができるのです。この際、ベクトルの類似性として「味」と「食感」が重視されているわけですから、どちらの情報も赤いリンゴとはかけ離れたバナナやトマトのような果物を代替品としてピックアップするようなことにはなりません。
pgvector x Heroku Postgres の活用シーン
- リトリーバル拡張生成 (Retrieval Augmented Generation = RAG) を使ったプロンプトエンジニアリング : 特定の業種やビジネスの最新の文書情報など、テキスト情報をデータベースに組み込むことができます。そして、RAG を使って関連性の高いテキスト情報を取得し、AI によって適切で文脈に合った返答を生成することができます。
- ※補足 : RAG はまずクエリをもとにDB上の適切なテキストを採取し、それを生成 AI(LLM・ChatGPT など)に元のクエリと一緒に投げるという 2 Step により、生成 AI が最新情報をもとに返答することができる仕組みです。
- 製品リコメンデーション : ベクトルデータベースを使用して、前項のフルーツサラダのシナリオのように検索基準に基づいて代替品を簡単に検索できます。これをファッションの世界に応用するとすると、同じような製品やスタイル、色に基づいて提案することができます。他の顧客の好みを利用して、さらにおすすめの幅を広げることもできます。
- Salesforce 組織上のデータの検索: Salesforce のデータを Heroku Connect を経由して Heroku 上に同期し、アプリケーションから検索することができます。例えば、Service Cloud のサポートケースのテーブルを作成し、類似のケースを検索できるようなことができるようになります。
- マルチメディアコンテンツの検索: 画像、音声、動画などのマルチメディアコンテンツを横断的に検索します。コンテンツを直接埋め込むことも、字幕やその他のデータとともに検索を実行することなどができます。こうした機能を活用すると、例えば、テンポやその時の気分、ジャンル、歌詞などの音声・動画などのデータに含まれる情報に含まれる特徴に基づき、類似の曲を見つけることでプレイリストを作ることなどができます。
- データ分類とセグメンテーション: 医療から製造業まで、さまざまな分野で、データの分類やセグメンテーションはデータ分析にとって重要です。例えば医療分野であれば、患者の記録や診断データをベクトルに変換し、活用する仕組みを作ることにより、類似の事例を検索し、希少疾患の診断や患者に合わせ、推奨する治療方針をサポートすることなどが期待できます。
- 異常検出: 通常時と異なるベクトルを比較して、データの異常を検出します。これにより、ネットワークトラフィックデータや産業用センサーデータ、取引データなどでの問題や疑わしいパターンの分析と検出に役立ちます。
データベースのベクトル検索の準備方法の詳細については、近日中に投稿予定です。
Heroku x AI が目指す未来
pgvector は、Heroku Postgres における、新たな利用シーンをもたらします。今回の pgvector 対応は、Heroku を利用したシステムにおける AI 活用のための最初の一歩です。私たちは今後もさらに多くのイノベーションを発表していきます。
本稿が、みなさんのベクトルデータベースについて知っていただき、利用を検討いただく際の一助になれば幸いです。
pgvector の重要性を支持・推進してくださった、コミュニティの皆さんに心から感謝しています。
コミュニティの皆さんの積極的な参加は Heroku Postgres への本機能の追加を優先する上で非常に重要でした。質問したいことや問題が発生した場合、私たちの専門のサポートチームが、皆様をご支援します。
Heroku のロードマップはこちらからご覧いただけます : https://github.com/orgs/heroku/projects/130
スタートアップ企業に学ぶアプリ開発のすすめ ソフトウェアカンパニーへの道
顧客は、最先端の魅力的なアプリケーションエクスペリエンスを期待しています。そんなアプリケーションをお届けするには、最新の開発アプローチが必要です。本eBook では、オープンソース言語、フレームワーク、テクノロジーを駆使することで、優れたアプリケーションを開発するための最新の秘訣をご紹介しています。