私が通常のRDBMSをベクトルデータベースに変換して埋め込みを保存する方法

通常のRDBMSをベクトルデータベースに変換し、埋め込み保存する方法について、私が説明します

今日のGenerative AIの世界では、LLMベースのアプリケーションを設計する際に、ベクトルデータベースは必須の一部になっています。OpenAIやGoogleのGenerative AIを使用してアプリケーションを構築するか、推薦エンジンの設計やコンピュータビジョン(CV)またはベクトルデータベースを使用したユースケースの解決を考えている場合、ベクトルデータベースは重要なコンポーネントとなります。

ベクトルデータベースとは何か、従来のデータベースとはどう違うのか?

機械学習の世界では、ベクトルまたは埋め込みは、テキスト、画像、メディアコンテンツ(音声または動画)などのデータの数値的または数学的表現を示します。OpenAIや他のLLMは、通常のデータを高次元のベクトル埋め込みに変換し、ベクトル空間に保存することができます。これらの数値形式は、データ間の意味的な関係を決定したり、パターンやクラスタリングを特定したり、関係性を描写するのに役立ちます。通常の列指向のRDBMSやNoSQLデータベースでは、多次元のベクトル埋め込みデータを効率的に保存し、必要に応じてスケーリングすることができません。ここで、ベクトルデータベースが必要になります。ベクトルデータベースは、この種の埋め込みデータを扱い、同時に高いパフォーマンスとスケーラビリティを提供する特殊な種類のデータベースです。

データの検索やインデックス検索の場合、従来のデータベースはクエリと完全に一致する結果を返しますが、ベクトルデータベースでは、コサインアルゴリズムを適用して、同じ次元内で類似のベクトルを見つけたり、最短距離を持つベクトルを見つけたりするために、Kth-Nearest Neighbor(K-NN)やApproximate Nearest Neighbor(A-NN)などのアルゴリズムを使用します。これにより、写真のセットの中から類似の画像を見つけたり、特定の使用法に基づいて推薦エンジンを構築したり、膨大なデータセットの中からパターンを特定したりすることができます。

ベクトルデータベースは、Large Language Models(LLM)を使用してAIアプリケーションを設計および構築するために必要な効率的なベクトルデータの保存と検索機能を備えています。Redis EnterpriseやMilvusなどのオンプレミスのベクトルデータベースやPineconeなどのSAASの提供もあります。この記事では、最も人気のあるRDBMSであるPostgresについて説明し、他のエンタープライズグレードのベクトルデータベースと同等の性能を持つように変換する方法を探ります。

Postgresをベクトルデータベースに変換する方法

Postgresは、オープンソースでありながら多くのエンタープライズグレードのRDBMSと同等のパフォーマンスを持つ人気のあるRDBMSの一つです。長い間市場で存在し、パフォーマンス、使いやすさ、堅牢性において優れています。

オープンソースコミュニティは、pgvectorという拡張機能を開発しました。この拡張機能をインストールしてアクティブにすると、通常のPostgresインストールをGenerative AIアプリケーションの開発に対応できるようになり、LLMによって生成された任意の次元の埋め込みデータを保存およびインデックス化することができます。最良の部分は、埋め込みデータだけでなく、通常のデータも同じデータベースに保存およびインデックス化できることです。Pgvectorは、データをクエリする際にexact and approximate nearest neighborsアルゴリズムを使用するため、他のデータベースよりも高いパフォーマンスを発揮することがあります。

以下は、Pgvector拡張機能が組み込まれたPostgresのDockerコンポーズファイルの例です。Dockerコンポーズには、データベースにアクセスするためのDBクライアントであるPgadminも追加しています。

図1:Postgresとpgvectorを実行するためのDockerコンポーズコマンド

図2:ポート5050を介してアクセスできるPGAdminクライアント

Postgresのサーバーが実行されている場合、次のSQLコマンドを使用してベクトル拡張機能を有効にします。

結論

この記事では、オープンソースコミュニティの力を活用して、伝統的なRDBMSシステムに基づいたスケーラブルで堅牢な高性能のベクトルデータベースを立ち上げる方法について探求しました。データサイエンスエンジニアやソフトウェアエンジニア、次のAIプロジェクトのソリューションを設計または探索している方にとって、Postgresとpgvectorは類似性検索、推薦エンジン、異常検出などのユースケースを解決するのに役立つでしょう。また、Dockerコンポーズなどのシンプルなツールを使用して、Postgresとpgvector拡張機能をシームレスにインストールおよび設定し、既存のマイクロサービスフレームワークと統合する方法も示しました。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more