Article
CommunityJev Integrations & Adapters
Jev Functions in Sail
LakeSail built five Jev functions into Sail's SQL, so Spark SQL and DataFrame queries can ask typed questions about every row, with calls overlapping in the Rust engine behind one in-flight limit per worker.
- Format
- Article
- Reading time
- 3 min
- Published by
- Community
- Author
- Shehab Amin and Everett Roeth (LakeSail)
- Last verified
- Oct 2026
- Capabilities
- Open sourceSelf-hostedRequires API key
Highlights
- Five functions ship in the engine: jev_noul, jev_choice, jev_score, jev_system_one, and jev_models, with nothing extra to install.
- All Jev calls on a worker share one in-flight request limit, eight by default, and adding workers raises it up to your account's rate limit.
- Sail retries rate limits, server errors, and timeouts with backoff, follows Retry-After, and fails the query on a malformed response.
- A postal-code join plus jev_noul resolved Acme Corp against ACME Corporation at 0.93 and Initech at 0.24; results are not cached between queries.
- Jev ships in Sail 0.7.2 via pip install pysail==0.7.2, and early access needs a TYPESAFE_API_KEY set for the server and every worker.
Watch out
Vendor-authored by LakeSail, which also sells a managed Sail platform, and Jev is in early access, so a TypeSafe API key is required. The functions are Sail-specific rather than Apache Spark, each answer records the model and tokens used, and the post gives no accuracy or latency benchmarks.
Questions about this entry
Short answers drawn from the linked project or page.
jev_noul returns the probability that a statement is yes, jev_choice picks and scores options, jev_score places state on your rubric, jev_system_one answers several questions in one request, and jev_models lists the models available to your account.
They ship in Sail 0.7.2: pip install pysail==0.7.2, then set TYPESAFE_API_KEY for the Sail server before startup, and on a cluster for every worker. Building from source and Kubernetes deployment are covered in the installation guide.
No. The functions are native to Sail and not part of Apache Spark; Sail is a Rust-native, drop-in Spark replacement, and the same query runs on a laptop and on a cluster.
All Jev calls on a worker share one limit on requests in flight, eight by default, so partitions and concurrent queries cannot multiply the load. Adding workers raises the total up to the rate limit of your TypeSafe account.
Sail retries rate-limit responses, server errors, and timeouts with backoff and follows the service's Retry-After header. Every response is validated, and a malformed one fails the query instead of producing a placeholder answer.
Answers are not cached between queries, so each query re-asks Jev. The post recommends writing results to a table when you plan to reuse them, and keeping the cheap candidate generation in SQL so only candidate pairs reach the model.
LakeSail engineers Shehab Amin and Everett Roeth wrote the September 2026 post. It shows SQL and example scores but gives no accuracy, cost, or latency benchmarks, and points to the TypeSafe guide for every function argument and setting.
Reactions & coverage
Posts, threads, and videos about this entry from around the web.
Hacker News: A MySQL plugin that filters rows by asking Jev whether a column matches a sentence.
maayanlevy-hn2 pointsA MySQL plugin that filters rows by meaning (built on TypeSafe Jev)Read the thread on Hacker NewsX: jev(): Postgres WHERE clauses in plain language
From the Jev guides
Original write-ups on what this entry is for.
From the Jev AI model community
Posts from builders shipping with Jev right now.