Skip to content
ReviewRamble

The weekly brief

AI, reviewed, in your inbox.

  • New reviews of tools, models, MCP servers and repos, with the verdict up front
  • Re-checked prices and ratings when something changes
  • New analysis pieces as they are published

Models, agents, MCP servers and the tools actually worth your time.

One email a week. Unsubscribe with the link in any brief. How we use your email

pg-jev

Extensión de Postgres que filtra, ordena y clasifica filas con condiciones en lenguaje natural que juzga el modelo Jev de TypeSafe.

Reseña de Sheela · Actualizado

Ver en GitHub Código abierto

Nuestra nota

3.7/5

Una forma ingeniosa de hacer preguntas difusas a una tabla en SQL, siempre que aceptes un recorrido completo, una instalación como superusuario y que las filas salgan de la base de datos.

¿Qué es pg-jev?

pg-jev añade a PostgreSQL funciones SQL como jev(), jev_prob(), jev_choice() y jev_score(). Escribe WHERE jev(tickets, 'the customer is angry') y cada fila se envía a Jev de TypeSafe, un modelo de decisión que devuelve una probabilidad calibrada en lugar de texto generado. No hay índice, embedding ni columna vectorial; es un recorrido completo por diseño.

La extensión está escrita en PL/Python. Lee la tabla por adelantado, agrupa 20 filas por petición, mantiene en vuelo hasta el doble del ajuste de concurrencia (16 por defecto) y guarda en caché las respuestas durante la sesión. El README mide una tabla de 2.000 filas en unos 3,5 segundos y $0,012 en la primera ejecución, y en unos 50 ms con caché. El endpoint puede apuntar a un servidor local compatible con Jev, como stuntd, para que las filas nunca salgan de la red.

El proyecto es de un único desarrollador, bajo la PostgreSQL Licence, creado en septiembre de 2026, con unas 1.238 estrellas y 13 commits. La última release es la v0.2.1 (3 de octubre de 2026), publicada también en PGXN.

¿Merece la pena pg-jev?

pg-jev hace agradable una tarea concreta: preguntas sobre filas que SQL no puede expresar, como si un ticket amenaza con cancelar o qué equipo debería encargarse de él. Como jev() es una función booleana normal, se combina con joins, GROUP BY y LIMIT, y los predicados más baratos de la misma cláusula WHERE se ejecutan antes, así que WHERE age > 60 AND jev(...) solo envía las filas que pasan el primer filtro.

Las notas de ingeniería son mejores que las de la mayoría de proyectos de este tamaño. El autor midió por qué el lote es de 20 filas: los lotes de 1 a 20 fueron totalmente correctos frente a la verdad de referencia, con 40 bajó al 92 a 98% y con 80 al 77 a 94%. El README también explica el coste de una conexión en frío y que la caché por sesión crece sin límite hasta que se vacía. (La web del proyecto aún describe lotes de 40 y seis peticiones concurrentes; el README es más reciente.)

Los límites son estructurales. Cada fila por la que pregunta el ejecutor va a la API, así que una consulta descuidada sobre una tabla grande es lenta y se factura. La extensión necesita plpython3u y un superusuario, lo que descarta Supabase, Neon, RDS y la mayoría de los servicios gestionados, y sus funciones se ejecutan con los privilegios del sistema operativo del servidor. El contenido de las filas va a un tercero salvo que ejecutes un servidor local como stuntd.

También es muy joven: 13 commits, un solo mantenedor y ningún commit desde principios de octubre. Frente a pgvector, que responde a preguntas de similitud y no de sí o no, pg-jev es la herramienta adecuada para clasificar y filtrar tablas modestas, y conviene fijar un límite de gasto como jev.max_rows_per_statement antes de que nadie más tenga acceso.

Dónde se gana su sitio

  • Una responsable de soporte con 20.000 tickets en un Postgres autoalojado

    Encontrar los tickets en los que el cliente amenaza con cancelar

    Filtra antes por fecha en SQL y luego ORDER BY jev_prob(tickets, ...) LIMIT 50. Al ritmo del README, unos $0,012 por cada 2.000 filas, una pasada completa cuesta unos $0,12 y reordenar dentro de la sesión es gratis.

  • Un ingeniero de datos en una empresa que no puede enviar datos de clientes fuera

    Enviar los emails entrantes a facturación, soporte técnico o ventas

    Pon jev.api_url apuntando a un servidor stuntd local y llama a jev_choice() con las tres opciones. No hay factura por fila, pero comprobar la precisión del servidor local es responsabilidad tuya.

  • Una startup en Supabase

    Añadir filtros en lenguaje natural a sus consultas de administración

    No funcionará: los servicios gestionados no dan superusuario ni plpython3u. Necesitarían un Postgres autogestionado o un servicio aparte que llame a Jev.

Antes de decidirte

Puesta en marcha
PostgreSQL 14 a 17 con plpython3u y un superusuario; pgxn install jev o make install, CREATE EXTENSION jev CASCADE y luego configura una clave de API de TypeSafe. Incluye una imagen de Docker y una skill de agente para skills.sh.
Integraciones
La API Jev de TypeSafe por defecto; cualquier servidor que hable POST /v1/systemone, como stuntd; funciona con tablas y vistas, y las subconsultas se juzgan con una fila por petición.
Datos y privacidad
El contenido de las filas se envía a TypeSafe salvo que jev.api_url apunte a otro sitio; las respuestas se guardan en caché en la sesión del backend. Las funciones plpython3u se ejecutan con los privilegios de SO del servidor. PostgreSQL Licence; sin relación con TypeSafe.
Coste a escala
TypeSafe factura por token: el README mide unos $0,012 por 2.000 filas en la primera ejecución. jev.max_rows_per_statement y jev.max_chars_per_statement limitan el gasto por consulta.
Límites
Recorridos completos por diseño; la precisión cae por encima de unas 20 a 25 filas por lote; la caché por sesión no tiene límite hasta que se vacía; sin soporte para Postgres gestionado; un solo mantenedor.

Lo bueno

  • Filtros en lenguaje natural que se combinan con SQL normal
  • Cifras medidas de lotes, caché y coste en la documentación
  • Límites de gasto por sentencia para bases de datos compartidas
  • Puede apuntar a un servidor local compatible con Jev

Lo malo

  • Recorrido completo de la tabla; cada fila se envía a la API
  • Necesita superusuario y plpython3u; sin Postgres gestionado
  • Por defecto, los datos de las filas salen de tu red
  • Un único mantenedor con 13 commits

Ideal para

Analistas y desarrolladores con Postgres autogestionado que quieren clasificar o filtrar miles de filas por su significado sin montar un pipeline de embeddings.

Alternativas a pg-jev

pg-jev: preguntas frecuentes

¿Merece la pena pg-jev?
Una forma ingeniosa de hacer preguntas difusas a una tabla en SQL, siempre que aceptes un recorrido completo, una instalación como superusuario y que las filas salgan de la base de datos. Le damos un 3.7 sobre 5.
¿Cuánto cuesta pg-jev?
Gratis (PostgreSQL Licence). Cada fila juzgada la factura la API Jev de TypeSafe, salvo que lo apuntes a un servidor local compatible.
¿Qué inconvenientes tiene pg-jev?
Recorrido completo de la tabla; cada fila se envía a la API; necesita superusuario y plpython3u; sin Postgres gestionado; por defecto, los datos de las filas salen de tu red; un único mantenedor con 13 commits.
¿Para quién es pg-jev?
Analistas y desarrolladores con Postgres autogestionado que quieren clasificar o filtrar miles de filas por su significado sin montar un pipeline de embeddings.
¿Cuánto cuesta pg-jev para un equipo o en producción?
TypeSafe factura por token: el README mide unos $0,012 por 2.000 filas en la primera ejecución. jev.max_rows_per_statement y jev.max_chars_per_statement limitan el gasto por consulta.
¿Es pg-jev seguro para los datos de la empresa?
El contenido de las filas se envía a TypeSafe salvo que jev.api_url apunte a otro sitio; las respuestas se guardan en caché en la sesión del backend. Las funciones plpython3u se ejecutan con los privilegios de SO del servidor. PostgreSQL Licence; sin relación con TypeSafe.
¿Cuáles son las mejores alternativas a pg-jev?
Las alternativas más cercanas que hemos analizado son pgvector, AnyJev y Laya.

Respuestas comprobadas el 31 oct 2026.