pg-jevとは?
pg-jevは、jev()、jev_prob()、jev_choice()、jev_score()などのSQL関数をPostgreSQLに追加します。WHERE jev(tickets, 'the customer is angry')と記述すると、各行がTypeSafeのJevに送信されます。これは生成テキストではなく調整済みの確率を返す判断モデルです。インデックスや埋め込み、ベクトル列は存在せず、設計上フルスキャンとなります。
この拡張機能はPL/Pythonで記述されています。テーブルを先行して読み込み、1リクエストあたり20行をまとめ、最大で並行性設定の2倍(デフォルトは16)の処理を滞空させ、セッション中はその回答をキャッシュします。READMEの計測によると、2,000行のテーブルの場合、初回実行時は約3.5秒かつ0.012ドルで、キャッシュ時は約50ミリ秒です。エンドポイントはstuntdなどのローカルなJev互換サーバーを指定できるため、行データがネットワーク外部へ出ないようにすることも可能です。
本プロジェクトは単一の開発者によるもので、PostgreSQL Licenceのもと、2026年9月に作成されました。スター数は約1,238件、コミット数は13件です。最新リリースはv0.2.1(2026年10月3日)で、PGXNでも公開されています。
pg-jevは使う価値があるか?
pg-jevは、チケットが解約を予告しているか、どのチームが対応すべきかといった、SQLでは表現できない行への問いかけという狭い用途を快適にします。jev()は通常のブール関数であるため、結合、GROUP BY、LIMITと組み合わせることができ、同一WHERE句内の低負荷な述語が先に実行されます。そのため、WHERE age > 60 AND jev(...)と記述した場合、条件を通過した行のみが送信されます。
エンジニアリングに関する記述は、この規模のプロジェクトとしては優れています。作者はバッチサイズを20行とした理由を計測しており、正解データに対して1行から20行のバッチでは完全に正確でしたが、40行では92から98%、80行では77から94%へと低下しました。またREADMEでは 、コールド接続のオーバーヘッドや、セッション単位のキャッシュがクリアされるまで無制限に増大することも説明されています。(プロジェクトのウェブサイトには依然として40行バッチおよび6並列リクエストと記載されていますが、READMEの方が新しい情報です。)
構造上の制限も存在します。エグゼキュータが評価対象とするすべての行がAPIに送信されるため、大規模なテーブルで不用意にクエリを実行すると処理が遅くなり、課金が発生します。この拡張機能にはplpython3uとスーパーユーザーが必要であり、Supabase、Neon、RDS、および大半のマネージドホストでは利用できません。また、その関数はサーバーのオペレーティングシステムの権限で実行されます。stuntdなどのローカルサーバーを実行しない限り、行の内容はサードパーティに送信されます。
また、本プロジェクトは非常に初期の段階にあります。コミット数は13件、メンテナは1名で、10月初旬以降コミットがありません。真偽値の判定ではなく類似度を答えるpgvectorと比較して、pg-jevは適度な規模のテーブルにおける分類やフィルタリングに適したツールです。第三者にアクセスを許可する前に、jev.max_rows_per_statementなどの支出保護設定を構成しておく必要があります。
真価を発揮する場面
セルフホストのPostgresに20,000件のチケットを抱えるサポートリードです
顧客が解約を予告しているチケットを見つけ出します
SQLで日付による事前フィルタリングを行った後、ORDER BY jev_prob(tickets, ...) LIMIT 50を実行します。READMEにある2,000行あたり約0.012ドルの料金に基づくと、全件スキャンには約0.12ドルかかりますが、セッション内での再並べ替えは無料です。
顧客データを外部に送信できない企業のデータエンジニアです
受信メールをbilling、technical、salesのいずれかにルーティングします
jev.api_urlにローカルのstuntdサーバーを設定し、3つの選択肢を指定してjev_choice()を呼び出します。行単位の課金は発生しませんが、ローカルサーバーの精度検証は自身の責任で行う必要があります。
Supabaseを利用しているスタートアップです
管理者向けクエリに自然言語フィルターを追加します
この構成では動作しません。マネージドホストではスーパーユーザー権限とplpython3uが提供されないためです。自己管理型のPostgresを用意するか、Jevを呼び出す別サービスを用意する必要があります。
導入前に確認すること
- 導入
- plpython3uとスーパーユーザー権限を備えたPostgreSQL 14から17が必要です。pgxn install jevまたはmake installを実行し、CREATE EXTENSION jev CASCADEを行った後、TypeSafe API keyを設定します。Dockerイメージとskills.sh向けのエージェントスキルが同梱されています。
- 連携
- デフォルトでTypeSafeのJev APIを利用します。stuntdなど、POST /v1/systemoneに対応する任意のサーバーと連携可能です。テーブルおよびビューに対応し、サブクエリは1リクエストにつき1行ずつ判定されます。
- データとプライバシー
- jev.api_urlで別の接続先を指定しない限り、行の内容はTypeSafeに送信されます。回答はバックエンドセッション内にキャッシュされます。plpython3u関数はサーバーのOS権限で実行されます。PostgreSQL Licenceが適用され、TypeSafeとの提携関係はありません。
- 大規模利用時のコスト
- TypeSafeによりトークン単位で課金されます。READMEの計測では、初回実行時の2,000行で約0.012ドルとなっています。jev.max_rows_per_statementおよびjev.max_chars_per_statementにより、クエリあたりの支出上限を設定できます。
- 制限
- 設計上フルスキャンとなります。1バッチあたり約20から25行を超えると精度が低下します。セッションごとのキャッシュはクリアされるまで無制限に増加します。マネージドPostgresには非対応です。メンテナは1名です。
良い点
- 通常のSQLと組み合わせ可能な自然言語フィルターです
- ドキュメントにバッチ処理、キャッシング、費用の計測数値が記載されています
- 共有データベース向けのステートメント単位の支出保護機能を備えています
- ローカルのJev互換サーバーを指定可能です
気になる点
- フルテーブルスキャンが行われ、すべての行がAPIに送信されます
- スーパーユーザー権限とplpython3uが必要であり、マネージドPostgresでは利用できません
- デフォルトで行データがネットワーク外部へ送信されます
- 13コミットの単一メンテナによるプロジェクトです
おすすめの人
埋め込みパイプラインを構築することなく、意味に基づいて数千行の データを分類またはフィルタリングしたい、自己管理型Postgresを利用するアナリストや開発者に最適です。
pg-jevの代替
pg-jev:よくある質問
- pg-jevは使う価値があるか?
- フルスキャン、スーパーユーザーでのインストール、データベース外部への行データの送信を許容できるのであれば、SQL内でテーブルに対して曖昧な問いを投げかけるための優れた手段です。 評価は5点満点中3.7点です。
- pg-jevの料金は?
- 無料(PostgreSQL Licence)です。ローカルの互換サーバーを指定しない限り、判定される各行ごとにTypeSafeのJev APIから課金されます。
- pg-jevの欠点は?
- フルテーブルスキャンが行われ、すべての行がAPIに送信されます; スーパーユーザー権限とplpython3uが必要であり、マネージドPostgresでは利用できません; デフォルトで行データがネットワーク外部へ送信されます; 13コミットの単一メンテナによるプロジェクトです.
- pg-jevは誰に向いているか?
- 埋め込みパイプラインを構築することなく、意味に基づいて数千行のデータを分類またはフィルタリングしたい、自己管理型Postgresを利用するアナリストや開発者に最適です。
- チームや本番環境でpg-jevを使うと費用はいくらか?
- TypeSafeによりトークン単位で課金されます。READMEの計測では、初回実行時の2,000行で約0.012ドルとなっています。jev.max_rows_per_statementおよびjev.max_chars_per_statementにより、クエリあたりの支出上限を設定できます。
- pg-jevは企業データを扱っても安全か?
- jev.api_urlで別の接続先を指定しない限り、行の内容はTypeSafeに送信されます。回答はバックエンドセッション内にキャッシュされます。plpython3u関数はサーバーのOS権限で実行されます。PostgreSQL Licenceが適用され、TypeSafeとの提携関係はありません。
- pg-jevの代わりになるものは?
- 当サイトでレビューした中で最も近い代替はpgvector, AnyJev 、 Layaです。
回答確認日:2026年10月31日
