私が通常の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について説明し、他のエンタープライズグレードのベクトルデータベースと同等の性能を持つように変換する方法を探ります。
- UCLAの研究者が、最新の気候データと機械学習モデルに簡単で標準化された方法でアクセスするためのPythonライブラリ「ClimateLearn」を開発しました
- ベクトルデータベースについてのすべて – その重要性、ベクトル埋め込み、および大規模言語モデル(LLM)向けのトップベクトルデータベース
- Hamiltonを使って、8分でAirflowのDAGの作成とメンテナンスを簡単にしましょう
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!
Was this article helpful?
93 out of 132 found this helpful
Related articles