OriginChain vs Neon. A serverless Postgres and an AI-native database, side by side.
Choose Neon when the workload is Postgres-shaped - a relational primary with occasional pgvector - and branching for preview environments earns its keep. Choose OriginChain when vector, full-text and graph are native shapes you query together rather than extensions you wire and version-pin. Neon reshaped Postgres for the cloud - separated compute from storage, made database branching cheap, and pushed scale-to-zero into a category that had been treated as always-on. OriginChain is a managed AI-native database where rows, embeddings, full-text postings, and graph edges live in one managed engine and commit atomically.
The honest split. Pick the one that matches your workload.
Neon is one of the more interesting things to happen to Postgres in years. Separating compute from storage is not just an architecture choice - it makes branching, point-in-time recovery, and scale-to-zero cheap in a way they have never been on a traditional Postgres deployment. The interesting question for your team is whether your workload is Postgres-shaped, where serverless and branching are the killer features, or whether your workload is AI-shaped, where atomic multi-shape writes and native vector / FTS / graph are the killer features. The answer to that question decides the database.
- + Workload is Postgres-shaped - relational primary, occasional vector via pgvector, predictable SQL access patterns.
- + Database branching for preview environments is a killer feature for your team's review-app workflow.
- + Bursty or low-utilisation traffic where scale-to-zero materially changes the bill.
- + You are comfortable layering pgvector and other extensions, and tracking their compatibility with the platform.
- + AI features are the workload - embeddings, hybrid search, graph context, natural language are equal citizens to rows.
- + You want vector / full-text / graph as native shapes, not as extensions you have to wire and version-pin.
- + Rows, embeddings, full-text postings, and graph edges have to commit atomically in one round-trip.
- + Single-tenant compute matters; you'd rather not share storage and compute pools with other customers.
Postgres, reshaped for the cloud.
Neon's architectural bet is that Postgres's storage layer should live somewhere that scales independently of the query engine. The result is a Postgres that branches like git - you can fork an entire database in seconds, run a destructive migration on the fork, point a preview environment at it, and throw the branch away when the pull request closes. Teams that adopt that workflow tend to keep it forever; the alternative of seeding a fresh database for every preview environment, or sharing a stale staging database across the entire team, is genuinely worse.
Scale-to-zero is the second big win. Most application databases sit idle most of the time, and most managed Postgres vendors charge you for that idle. Neon spins compute down when there are no queries and brings it back fast on the next request, which materially changes the bill for low-utilisation projects, hobby workloads, and test environments. Combined with the consumption-based storage pricing, the cost shape is much closer to "what you actually used" than the traditional always-on instance.
Underneath all of it, you still get Postgres. Every ORM works. Every migration tool works. pgvector is available as an extension, tsvector / GIN are there for full-text, recursive CTE handles a fair amount of graph work. If your application is dominantly relational and the AI features are additive, Neon gives you an unusually nice cloud-native Postgres without making you reach outside the ecosystem.
Different engine. Atomic multi-shape from day one.
OriginChain is not Postgres-on-object-storage. It is a different engine - a single managed engine - designed from the start to hold rows, secondary indexes, vector embeddings, HNSW graphs, BM25 full-text postings, and graph edges in the same place. The query engine compiles SQL, vector top-k, BM25 search, graph traversal, and natural-language questions to the same plan tree. There is no extension stack to wire and no version drift between pgvector, ParadeDB, or Apache AGE - the AI shapes are not extensions, they are first-class. HNSW has two operating points worth naming: high_recall at recall@10 = 0.96 with p99 around 109 ms on 100k vectors, and fast at recall@10 ≈ 0.69 with p99 around 37 ms. For scale, the IVF-PQ index compresses each vector so a large corpus still fits one box; we have not published a measured result at 100M scale.
The consequence is atomicity that crosses shapes. A single insert writes the row, every secondary index entry, every forward and reverse edge, the BM25 postings, and the vector embedding in one atomic write. That write commits atomically and replicates to the standby as one unit. With Neon's separation of compute and storage, Postgres's transactional guarantees still hold within Postgres, but the ops shape carries new tunables - page-server caching, autosuspend behaviour, branch retention, compute-size scaling. OriginChain has fewer moving parts because there is no separation-of-storage layer to configure; the ops surface is simpler by construction.
Tenancy is physical. Each customer gets a dedicated single-tenant database in a region of their choice, with its own HTTPS endpoint, its own bearer token, its own durable storage, its own encrypted volume. Neon shares compute pools and a shared object-store backing, which is the right trade-off for branching and scale-to-zero; OriginChain's trade-off is the opposite, optimising for predictable per-tenant performance and isolation.
Natural language is part of the same surface. /v1/ask compiles an English question to the same plan AST as a hand-written query - same cost model, same EXPLAIN output, same per-node statistics. The model emits a plan; the executor runs it. There is no LLM on the hot path, no token-priced query layer to budget for, and no second service to deploy alongside the database.
What "one INSERT, one atomic commit" actually buys you.
The standard architecture for an AI feature on Neon is a Postgres transaction that touches a row, a tsvector column, and a pgvector column. Inside one transaction, that is genuinely atomic - Postgres's MVCC keeps the writes consistent. The seam shows up when the AI surface grows. Add a separate full-text engine for typo-tolerant retrieval, a graph store for context that does not fit recursive CTE, or an out-of-process embedding worker, and the consistency story splits across services. Most teams paper over the gap with idempotency keys and reconciliation jobs, all of which work until they don't.
OriginChain folds the entire derived state into the write path. The row, the embedding, the full-text postings, every edge update - all of them are part of the same atomic write, which commits as one unit. Partial writes are dropped on recovery, so there is no half-written state to clean up. That property is verified at runtime: a fault-injection harness deliberately crashes the database at multiple boundaries, and recovery is asserted to equal a prefix of the op stream every time. We run it for a million deterministic iterations on every build.
Reads compose the same way. A query can filter on structured columns, rank by vector similarity, intersect with a BM25 search, and join across a graph edge - in one round trip, against one consistent snapshot. With pgvector + tsvector inside one Postgres statement, you can get a long way; once a fourth shape (or a non-Postgres engine) enters the picture, you are stitching results in application code. OriginChain exists because that boundary is exactly where AI applications keep getting bitten.
The detailed comparison.
A capability-by-capability look, so the trade-off is explicit before you pick.
| Capability | Neon | OriginChain |
|---|---|---|
| Core engine | Postgres with separated compute/storage | Single managed engine, multi-shape |
| Tenancy model | Multi-tenant compute on shared storage | Single-tenant per managed instance |
| Branching | Copy-on-write database branches | Snapshot-based clones; no per-branch isolation |
| Scale-to-zero | Yes, fast cold start | Always-on per-tenant compute |
| Vector search | pgvector extension | Native HNSW + IVF + IVF-PQ + binary/PQ quantization + sparse |
| Full-text | tsvector / GIN built-in | Native BM25 + phrase + 18-lang stemming + 9-lang lemmas + ICU |
| Graph traversal | Recursive CTE | Native fwd / rev edges + PageRank + LPA + Node2Vec + GraphSAGE + Cypher v3 |
| Atomicity across shapes | Per-row within a Postgres transaction | Row + index + embedding + posting + edge in ONE atomic commit |
| Natural-language query | Bring-your-own LLM layer | /v1/ask endpoint, plan-bound |
| Materialized views | Manual + Postgres extensions | On-demand install / refresh |
| FK + CHECK | Standard Postgres | FK (NoAction / Restrict / SetNull) + CHECK with 3-valued logic |
| Postgres data import | Native (it is Postgres) | POST /ingest/postgres/sync pulls from existing Postgres source |
| Replication | Postgres replicas + S3-backed storage | Async standby + fenced automatic failover; multi-writer in development |
| Pricing shape | Compute hours + storage usage | Single-tenant compute configuration + flat add-ons |
| Operations footprint | Managed Postgres with serverless ops | One service that replaces row-store + vector + FTS + graph |
Two different operational stories.
Neon's operational story is unusual for a Postgres vendor: the database can sleep when nobody is using it, branch in seconds, and bill in something close to "what you actually consumed." That is genuinely useful, especially for preview environments and projects where the median traffic shape is bursty. The trade-off is that there are knobs unique to the architecture - autosuspend windows, page-server caching, branch retention, compute-size sizing - and Postgres extension compatibility lives within whatever the platform supports for that release.
OriginChain is managed-only and single-tenant by design. Each tenant gets a dedicated database in a region of their choice, with its own HTTPS endpoint, its own bearer token, and its own durable storage. There is no shared infrastructure or shared compute pool between customers. We provision, patch, back up, replicate, and upgrade. You post requests, get JSON back. The trade-off is real: you give up scale-to-zero and copy-on-write branching in exchange for a database where vector / full-text / graph / NL are first-class, atomic across shapes, and tenancy is physical.
Failover is structural. A write is acknowledged only after it is flushed to durable storage on the primary, so an acknowledged write is on disk before the response is sent, not buffered in memory. Replication to the standby is asynchronous - the primary streams committed frames continuously but does not block on the standby - so an abrupt loss of the primary can lose the most recent acknowledged writes. How much is at risk depends on how far behind the standby had fallen. Promotion is fenced by a single-primary claim, so split-brain cannot happen; automatic promotion is available but off by default, and it refuses to promote a standby that is not fully caught up. A new standby bootstraps from a consistent snapshot without stalling writes.
Two databases, two different bets. Pick the one your workload deserves.
Plenty of teams run Neon for the long tail of relational state where branching and scale-to-zero earn their keep, and put OriginChain in front of the AI surface - embeddings, hybrid search, graph context, NL queries against the same content. The quickstart walks you from signup to your first English query in under ten minutes; pricing lays out exactly what each configuration costs.