Introduction
Natural language. Semantic SQL. One PostgreSQL workflow.
jev4pg connects questions about meaning to the structure of your database. Ask a question in plain language, use typed semantic operators, or turn a reviewed interpretation into a reusable feature. PostgreSQL handles the joins, calculations and transactions.
Meaning you can query#
Define and activate a semantic feature such as needs_action, then use it through the application SQL interface:
SELECT id
FROM documents
WHERE SEMANTIC_FEATURE(body, 'needs_action');The feature carries a reviewed definition, type and revision. The same interpretation can support a queue, a report and a natural-language question. Learn how to create a semantic feature.
Start with your question#
“For each supplier, show the total quantity delivered, largest total first.”
The runnable tutorial records this generated query:
SELECT
SUM("r0"."quantity") AS "result_1",
"r0"."supplier" AS "result_2"
FROM "deliveries" AS "r0"
GROUP BY "r0"."supplier"
ORDER BY SUM("r0"."quantity") DESC NULLS LAST;Review the proposal and its interpretation before execution. On the tutorial data, the result is Birch: 36, Aster: 30, Cedar: 8. Follow the quick start.
Choose your interface#
| Interface | Use it for | Availability |
|---|---|---|
| Web workspace and HTTP API | Natural-language queries, reusable features and semantic operators | Stable v0.6.0 |
Asynchronous jev.* SQL jobs |
Submit work from PostgreSQL and inspect results | Stable v0.6.0 |
Native jev_native.* functions |
Direct semantic execution, shared plans and probability embeddings | Development preview |
The native preview targets PostgreSQL 17 on Linux. The default Docker Compose stack uses the Python runtime. Choose an installation or explore the native preview.
Keep evidence and uncertainty#
Independent semantic questions can run in parallel. Compatible evidence can be reused, while exact operations stay in SQL. Decisions retain three distinct states: VALUE, UNKNOWN and NOT_EVALUATED. An unevaluated row never silently becomes false.
Hosted providers receive the context selected for inference. Configure a suitable local provider when inference must remain local. Configure your provider.