StackMap
Subscribe

fenic vs pg-jev

Semantic DataFrames: PySpark-style select, filter and join alongside AI operators — extract, classify, summarize, embed, semantic join — compiled on an engine built for inference. — versus — Postgres extension for plain-language WHERE clauses: jev(row,'the customer is angry') filters, ranks and classifies rows via TypeSafe's Jev decision model. No embeddings, no vector column.

The curated verdict

Both put AI judgments beside relational operators — filter, classify, rank rows by a natural-language condition. fenic does it in a PySpark-style DataFrame engine; pg-jev does it in place, as a boolean function inside Postgres SQL.

fenicpg-jev
Stars6791.3k
Forks48105
LanguagePythonShell
LicenseApache-2.0NOASSERTION
Last activity3 days ago1 months ago
Topicsdata, orchestrationdata, decision-models
Curated connections53

fenic — the curator's take

Use it when an agent's data discovery has to survive the chat: express the work as typed operators and the pipeline is already the artifact — `explain()`-able, rerunnable, row-level lineage, per-query cost and tokens, promotable to a table, view or MCP tool. `semantic.extract(PydanticModel)` replacing regex-plus-one-off-prompt is the whole pitch, and the engine handles batching, rate limits, retries and response caching so you aren't hand-rolling them. Not the tool for streaming or petabyte scale, and not a pandas replacement: it's a lazy query engine you configure models on, so single-row interactive work feels heavy and every operator is a real inference bill.

pg-jev — the curator's take

Use it when the condition lives in free text and a person would have to read each row — triage tickets, tag products, rank by vibe — and you want the answer inside ordinary SQL next to joins, GROUP BY and LIMIT. Put cheap predicates first so fewer rows get judged, and lean on the per-session cache when iterating. NOT for managed Postgres (Supabase, Neon, RDS lack superuser/plpython3u), not for semantic search over millions of rows, and every new condition sends row contents to TypeSafe's API, priced per token.