Cloud SQL for PostgreSQL で LangChain の VectorStore を使用して生成 AI アプリを迅速に構築
Bala Narasimhan
Group Product Manager, Google Cloud
Kurtis Van Gent
Staff Software Engineer, Google Cloud Databases
※この投稿は米国時間 2024 年 6 月 13 日に、Google Cloud blog に投稿されたものの抄訳です。
Google は最近、Google Cloud データベース ポートフォリオの LangChain パッケージ スイートを発表しました。各パッケージには、最大 3 つの LangChain インテグレーションがあります。
-
ベクトルをサポートする Google のデータベースでセマンティック検索を可能にするベクトル ストア
-
データベースにおけるドキュメントの読み込みや保存を行うドキュメント ローダ
-
チェーンによって以前の会話を確認できるチャット メッセージ メモリ
このブログ投稿では、Cloud SQL for PostgreSQL の LangChain パッケージに含まれる VectorStore のメリットについて詳しく説明し、それが生成 AI アプリケーション開発を簡単、安全かつ柔軟にするためにどのように役立つかを見ていきます。
セキュリティ
Cloud SQL for PostgreSQL の LangChain パッケージには、Cloud SQL Python コネクタが組み込まれており、これによってデータベースへの安全な接続を簡単に行うことができます。デベロッパーは次のようなメリットをすぐに享受できます。
-
IAM 承認: IAM 権限を使用して、Cloud SQL インスタンスに接続できるユーザーや対象を制御します。
-
簡素化: SSL 証明書の管理、ファイアウォール ルールの構成、承認済みネットワークの有効化が不要になります。
-
IAM データベース認証: Cloud SQL の自動 IAM データベース認証機能に対応しています。
使いやすさ
インスタンス名だけで接続
PostgreSQL インスタンスに接続するために、IP アドレスを使用して接続文字列を作成したり、無数の引数を渡したりする必要はもうありません。代わりに、以下に示すように、インスタンス名だけで十分です。
デフォルトの接続プール
接続管理は、PostgreSQL のスケーリングにおいて重要な部分です。Cloud SQL for PostgreSQL の LangChain パッケージは、SQLAlchemy 接続プールを使用して自動的に構成されます。Google のパッケージは、カスタム構成に対応しているほか、アプリケーションの他の部分でプールを再利用することもできます。
スキーマの柔軟性
既存の langchain-postgres パッケージには VectorStore が含まれていますが、これは限定された、固定スキーマにしか対応していません。データベース内の初期化されたすべてのベクトルストアに対して、固定の名前とスキーマを持つ 2 つのテーブルを使用します。スキーマを変更するには、テーブルを削除して再作成する必要があり、以前のデータは失われます。また、現在はインデックス作成にも対応しておらず、KNN にのみ使用できます。
コレクションごとのテーブル
その一方で、Cloud SQL for PostgreSQL の LangChain パッケージでは、ベクトルのコレクションごとに異なるテーブルが使用されます。つまりスキーマは以下のように変化する可能性があります。
インデックス作成への対応
Cloud SQL for PostgreSQL の LangChain パッケージは、ベクトル検索を高速化するために ANN に対応しています。以下に、パッケージを使用してインデックスを作成、更新、削除するための簡単なコード スニペットを示します。
インデックスを作成する
インデックスを再構築する
インデックスを削除する
カスタム スキーマ
Cloud SQL for PostgreSQL の LangChain パッケージでは、さまざまなスキーマを使用できるため、既存のテーブルを再利用できるだけでなく、他の実装(langchain-postgres パッケージなど)からより簡単に移行できます。
既存のテーブルを使用する
PostgresVectorStore を初期化するときに、必要に応じて、LangChain ドキュメントのコンテンツ、ID、その他のメタデータ フィールドなどを保存する列の名前を指定できます。これにより、既存のテーブル、または他のインテグレーション(langchain-postgres など)から作成されたテーブルを活用できます。
メタデータを列に抽出する
メタデータ列を指定すると、インテグレーションによってドキュメント メタデータからそのフィールドが取得され、適切に型指定された独自の列に保存されます。
メタデータでフィルタする
メタデータ フィールドを列に保存すると、リレーショナル データベースとしての PostgreSQL の価値を活用し、効率的にフィルタリングできます。
まとめると、Cloud SQL for PostgreSQL をベクトル データベースとして使い始めるのはとても簡単で、Google のネイティブの LangChain パッケージを使用することで、より柔軟でパワフルな生成 AI 開発が可能になります。
こちらの VectorStore Notebook で Cloud SQL for PostgreSQL の VectorStore をお試しください。また、GitHub のパッケージをご確認ください。問題を開くことで、バグの報告ややその他のフィードバックを送信いただけます。