コンテンツに移動
データベース

Cloud SQL for PostgreSQL で LangChain の VectorStore を使用して生成 AI アプリを迅速に構築

2024年6月19日
Bala Narasimhan

Group Product Manager, Google Cloud

Kurtis Van Gent

Senior Staff Software Engineer

※この投稿は米国時間 2024 年 6 月 13 日に、Google Cloud blog に投稿されたものの抄訳です。

Google は最近、Google Cloud データベース ポートフォリオの LangChain パッケージ スイートを発表しました。各パッケージには、最大 3 つの LangChain インテグレーションがあります。

  1. ベクトルをサポートする Google のデータベースでセマンティック検索を可能にするベクトル ストア

  2. データベースにおけるドキュメントの読み込みや保存を行うドキュメント ローダ

  3. チェーンによって以前の会話を確認できるチャット メッセージ メモリ

このブログ投稿では、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 のパッケージをご確認ください。問題を開くことで、バグの報告ややその他のフィードバックを送信いただけます。

-Google Cloud、グループ プロダクト マネージャー Bala Narasimhan
-
スタッフ ソフトウェア エンジニア Kurtis Van Gent
投稿先