Wasm版PostgreSQLに生成AIを組み合わせた「Postgres.new」無料公開。自然言語でクエリ、エンベディングの作成、CSVからテーブル自動生成など
今回は「Wasm版PostgreSQLに生成AIを組み合わせた「Postgres.new」無料公開。自然言語でクエリ、エンベディングの作成、CSVからテーブル自動生成など」についてご紹介します。
関連ワード (中味、利用、自動生成等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
PostgreSQLをベースにしたBaaS(Backend as a Service)の「Supabase」を開発し提供しているSupabase社は、WebAssembly版PostgreSQLである「PGlite」と生成AIを組み合わせ、Webブラウザ上でPostgreSQLを自然言語で操作できる「Postgres.new」を無料で公開しました。
参考:WebAssemblyとしてPostgreSQLをビルドした「PGlite」公開。Node.jsやブラウザ上でPostgreSQLを実行、DBの永続化も可能
Postgres.newはWebブラウザ上でWebAssembly版のPostgreSQLである「PGlite」を簡単に起動して試せるだけでなく、データベースと生成AIの組み合わせによる可能性を示すデモサイトにもなっています。現時点で生成AIにはGPT-4oを利用していると説明されています。

生成AIがCSVの中味を見て列名やデータ型など自動生成
Postgres.newのデモ動画の内容から、その機能を紹介しましょう。
Postgres.newでは、画面上にCSVファイルをドラッグ&ドロップすると、生成AIがCSVの最初の方のデータを読み取った上で、列名やデータ型などを自動的に生成してCSVをインポートするSQL文を作成、実行してデータベース上にテーブルを自動生成してくれます。左側がそのER図です。

もちろん自然言語で問い合わせると、それに対応するSQL文が生成され、答えが返ってきます。デモではパリ五輪の選手データがインポートされたデータベースに対して「how many athletes are there?」(アスリートは何人ですか?)と質問しています。

次に「which country has the most athletes? chart the top5」(どの国が多くのアスリートを参加させているか? トップ5をグラフで示してください)と、データを元にグラフを描かせるプロンプトを入力すると、SQL文を生成してクエリを実行しグラフを描いてくれます。グラフは「Chart.js」を利用して作成されています。

Webブラウザ上でRAGを手軽に試せるように
Postgres.newでは、PostgreSQL上でベクトルデータの扱いを可能にする拡張機能である「pgvector」がデフォルトで利用可能になっています。これによりベクトル型の列を設定し、クエリを試すことが簡単にできます。
下記は生成AIに対するプロンプトによって、映画のタイトルをベクトルで示したデータであるエンベディングを生成しているところです。これにより映画のタイトルの類似検索などが可能になります。

pgvector機能とそれを生成AIによって操作することで、Webブラウザ上でRAG(Retrieval Augmented Generation)を手軽に試せる環境が提供されます。
Slackクローンのデータスキーマも作ってくれる
GPT-4oはさまざまな知識を備えており、それをPostgres.newで使うことができます。例えば「create a slack clone」(Slackのクローンを作ってください)とプロンプトを入力すると、どのようなデータスキーマが必要かを説明してくれます。

そしてそれに従ってデータベースを作成してくれます。

Slackだけでなく、X/Twitterのクローンなど、さまざまなサービスのクローンを作るようにプロンプトに入力して試すことができるでしょう。また、「サンプルデータを用意して」とプロンプトで示せば、それにも対応してくれます。
Webブラウザからクラウド環境へデプロイ
このようにPostgres.newを利用してWebブラウザ上のPostgreSQLでさまざまなデータベースの操作を試行錯誤し、適当なデータベースが作成できたら、クラウド環境など外部のPostgreSQL環境へデプロイする機能も開発中です(現在プライベートアルファ)。
