← Tue, Sep 29 digest

What if Jev spoke Arrow?

read article ↗ hn thread ↗

A proxy called Jevaro wraps TypeSafe's Jev decision model to batch requests and output Apache Arrow IPC streams, exploring performance benefits for AI decision pipelines.

summary is enough It offers an interesting architectural exploration of combining AI decision outputs with Apache Arrow, but the practical utility depends entirely on whether the underlying API adds native support.

summary

The authors investigate how TypeSafe's Jev model—which outputs typed AI decisions as JSON—might benefit from Apache Arrow for bulk analytical workflows. Because the Jev API lacks a bulk endpoint or Arrow serialization, they built Jevaro, a Python proxy that handles multi-state batching and streams results back as Apache Arrow RecordBatches. Through benchmarks, they show the proxy achieves high throughput, though true performance gains require native API support. They argue that combining probabilistic AI decisions with zero-copy columnar data formats opens powerful pipeline patterns.

key points

  1. Jev answers are modeled using Arrow schemas, storing choices, confidence scores, and probability vectors efficiently in structs and fixed-size lists with metadata.
  2. The custom Jevaro proxy wraps single-state API calls to support batching thousands of states, achieving around 464 states per second over HTTP/2.
  3. True zero-copy performance and minimal latency require TypeSafe to implement a native bulk API endpoint with direct Arrow output.

who should read it

Data engineers and developers building pipelines that combine large language models with columnar data systems like DuckDB or Polars.

discussion positive

consensus

Commenters note that current bottlenecks stem from network round-trips rather than JSON deserialization, while discussing whether gRPC or Arrow Flight would be better suited than HTTP/2 for columnar data exchange.

best comment by ianmcook ↗

Agreed. With the API as it is today, the bottleneck is the thousands of round trips (one per state). The post is a bit of a "what if" where we're imagining (and hoping!) that TypeSafe adds a batch endpoint, which would take the round trips out of the picture. Then serialization would start to matter, and that's where Arrow would come in

It would be straightforward to wrap this as an Arrow Flight (Arrow over gRPC) endpoint. But it would make it heavier and less browser-compatible.

The author clarifies that while round-trips are the current bottleneck, native batching combined with Arrow serialization would unlock real efficiency gains while maintaining browser compatibility.

Generated by an LLM from the article and thread. Check the sources before relying on it.