Qu’est-ce que pg-jev ?
pg-jev ajoute à PostgreSQL des fonctions SQL comme jev(), jev_prob(), jev_choice() et jev_score(). Écrivez WHERE jev(tickets, 'the customer is angry') et chaque ligne est envoyée à Jev de TypeSafe, un modèle de décision qui renvoie une probabilité calibrée plutôt que du texte généré. Il n'y a ni index, ni embedding, ni colonne vectorielle ; c'est un parcours complet, par conception.
L'extension est écrite en PL/Python. Elle lit la table par anticipation, regroupe 20 lignes par requête, garde en vol jusqu'au double du réglage de concurrence (16 par défaut) et met les réponses en cache pour la session. Le README mesure une table de 2 000 lignes à environ 3,5 secondes et 0,012 $ à la première exécution, et environ 50 ms une fois en cache. L'endpoint peut pointer vers un serveur local compatible Jev comme stuntd, pour que les lignes ne quittent jamais le réseau.
Le projet est l'œuvre d'un seul développeur, sous PostgreSQL Licence, créé en septembre 2026, avec environ 1 238 étoiles et 13 commits. La dernière release est la v0.2.1 (3 octobre 2026), également publiée sur PGXN.
pg-jev vaut-il le coup ?
pg-jev rend agréable une tâche bien précise : les questions sur des lignes que SQL ne sait pas exprimer, par exemple si un ticket menace de résiliation ou quelle équipe doit le traiter. Comme jev() est une fonction booléenne ordinaire, elle se combine avec les jointures, GROUP BY et LIMIT, et les prédicats moins coûteux de la même clause WHERE s'exécutent d'abord, si bien que WHERE age > 60 AND jev(...) n'envoie que les lignes restantes.
Les notes techniques sont meilleures que celles de la plupart des projets de cette taille. L'auteur a mesuré pourquoi un lot fait 20 lignes : les lots de 1 à 20 étaient entièrement corrects par rapport à la vérité terrain, à 40 on tombait à 92 à 98 % et à 80 à 77 à 94 %. Le README explique aussi le coût d'une connexion à froid et le fait que le cache de session grossit sans limite tant qu'on ne le vide pas. (Le site du projet décrit encore des lots de 40 et six requêtes simultanées ; le README est plus récent.)
Les limites sont structurelles. Chaque ligne sur laquelle l'exécuteur s'interroge part vers l'API, donc une requête négligente sur une grande table est lente et facturée. L'extension exige plpython3u et un superutilisateur, ce qui exclut Supabase, Neon, RDS et la plupart des hébergeurs gérés, et ses fonctions s'exécutent avec les privilèges système du serveur. Le contenu des lignes part chez un tiers, sauf si vous faites tourner un serveur local comme stuntd.
Il est aussi très jeune : 13 commits, un seul mainteneur, aucun commit depuis début octobre. Face à pgvector, qui répond à des questions de similarité plutôt que par oui ou non, pg-jev est le bon outil pour classer et filtrer des tables modestes, et une limite de dépense comme jev.max_rows_per_statement doit être fixée avant que quiconque d'autre y ait accès.
Là où il fait la différence
Une responsable support avec 20 000 tickets dans un Postgres auto-hébergé
Trouver les tickets où le client menace de résilier
Préfiltrez par date en SQL, puis ORDER BY jev_prob(tickets, ...) LIMIT 50. Au tarif du README, environ 0,012 $ pour 2 000 lignes, un passage complet coûte environ 0,12 $ et retrier au sein de la session est gratuit.
Un ingénieur data dans une entreprise qui ne peut pas faire sortir les données clients
Orienter les e-mails entrants vers la facturation, le support technique ou les ventes
Faites pointer jev.api_url vers un serveur stuntd local et appelez jev_choice() avec les trois options. Pas de facture par ligne, mais vérifier la précision du serveur local vous incombe.
Une startup sur Supabase
Ajouter des filtres en langage courant à ses requêtes d'administration
Cela ne fonctionnera pas : les hébergeurs gérés ne donnent ni superutilisateur ni plpython3u. Il lui faudrait un Postgres autogéré ou un service séparé qui appelle Jev.
Avant de vous engager
- Mise en route
- PostgreSQL 14 à 17 avec plpython3u et un superutilisateur ; pgxn install jev ou make install, CREATE EXTENSION jev CASCADE, puis définissez une clé d'API TypeSafe. Une image Docker et une skill d'agent pour skills.sh sont incluses.
- Intégrations
- L'API Jev de TypeSafe par défaut ; tout serveur parlant POST /v1/systemone, comme stuntd ; fonctionne sur les tables et les vues, les sous-requêtes étant jugées à raison d'une ligne par requête.
- Données et confidentialité
- Le contenu des lignes est envoyé à TypeSafe sauf si jev.api_url pointe ailleurs ; les réponses sont mises en cache dans la session du backend. Les fonctions plpython3u s'exécutent avec les privilèges système du serveur. PostgreSQL Licence ; sans lien avec TypeSafe.
- Coût à grande échelle
- Facturation au token par TypeSafe : le README mesure environ 0,012 $ pour 2 000 lignes à la première exécution. jev.max_rows_per_statement et jev.max_chars_per_statement plafonnent la dépense par requête.
- Limites
- Parcours complets par conception ; la précision baisse au-delà d'environ 20 à 25 lignes par lot ; le cache de session est illimité tant qu'on ne le vide pas ; pas de prise en charge des Postgres gérés ; un seul mainteneur.
Les points forts
- Filtres en langage courant qui se combinent avec du SQL ordinaire
- Chiffres mesurés de lots, de cache et de coût dans la documentation
- Limites de dépense par requête pour les bases partagées
- Peut pointer vers un serveur local compatible Jev
Les points faibles
- Parcours complet de la table ; chaque ligne est envoyée à l'API
- Exige superutilisateur et plpython3u ; pas de Postgres géré
- Les données des lignes quittent votre réseau par défaut
- Un seul mainteneur, 13 commits
Idéal pour
Les analystes et développeurs sur un Postgres autogéré qui veulent classer ou filtrer des milliers de lignes selon leur sens sans construire de pipeline d'embeddings.
Alternatives à pg-jev
pg-jev : questions fréquentes
- pg-jev vaut-il le coup ?
- Une manière astucieuse de poser des questions floues à une table en SQL, à condition d'accepter un parcours complet, une installation en superutilisateur et des lignes qui quittent la base. Nous lui donnons 3.7 sur 5.
- Combien coûte pg-jev ?
- Gratuit (PostgreSQL Licence). Chaque ligne jugée est facturée par l'API Jev de TypeSafe, sauf si vous le pointez vers un serveur local compatible.
- Quels sont les inconvénients de pg-jev ?
- Parcours complet de la table ; chaque ligne est envoyée à l'API; exige superutilisateur et plpython3u ; pas de Postgres géré; les données des lignes quittent votre réseau par défaut; un seul mainteneur, 13 commits.
- À qui s’adresse pg-jev ?
- Les analystes et développeurs sur un Postgres autogéré qui veulent classer ou filtrer des milliers de lignes selon leur sens sans construire de pipeline d'embeddings.
- Combien coûte pg-jev pour une équipe ou en production ?
- Facturation au token par TypeSafe : le README mesure environ 0,012 $ pour 2 000 lignes à la première exécution. jev.max_rows_per_statement et jev.max_chars_per_statement plafonnent la dépense par requête.
- pg-jev est-il sûr pour les données de l’entreprise ?
- Le contenu des lignes est envoyé à TypeSafe sauf si jev.api_url pointe ailleurs ; les réponses sont mises en cache dans la session du backend. Les fonctions plpython3u s'exécutent avec les privilèges système du serveur. PostgreSQL Licence ; sans lien avec TypeSafe.
- Quelles sont les meilleures alternatives à pg-jev ?
- Les alternatives les plus proches que nous avons testées sont pgvector, AnyJev et Laya.
Réponses vérifiées le 31 oct. 2026.