Introducing Nori Embeddings: Representations That Know What You Care About
We're releasing programmatic access to Nori's embeddings: target- and context-aware vectors for tabular rows, pulled straight from the pretrained foundation model. They unlock search, retrieval, interpretability, and more, far beyond regression.
Synthefy-Nori is our tabular foundation model. It solves regression in a single forward pass, with no training and no tuning, and it beats tuned gradient boosting head-to-head at #1 on a 96-dataset benchmark. The same representations it uses to make those predictions are now yours to build with.
What makes them different from every other tabular embedding:
- Target-aware. They encode what a row means for the outcome you care about, not just what it looks like.
- Context-aware. Every row is represented relative to the rest of your data, never in isolation.
- Pretrained. They come straight from the foundation model, shaped by pretraining on millions of synthetic tables. You train nothing.
What Are Nori Embeddings?
An embedding turns a messy, mixed-type row of a table into a point in a geometric space where distance and direction carry meaning. That geometry is what lets you act on your data instead of just storing it:
- Measure how similar two records are.
- Retrieve the nearest neighbors of any row.
- Cluster customers, patients, or transactions into segments.
- Project an entire table down to a picture you can read at a glance.
Nori's embeddings aren't bolted on after the fact. They come straight from the pretrained foundation model, the same representation it uses internally to predict, shaped across large-scale pretraining on millions of synthetic tables. In that pretraining Nori learned target-aware representations: it learned to encode each row in the way that best serves the outcome you care about.
Why Are They Powerful?
Nori was massively pretrained for prediction, and its embeddings fall out of many attention layers that alternate across the two axes of a table:
- Attention across rows learns how one record contextualizes another: how a customer looks relative to every other customer in your data.
- Attention across columns lets one feature shape another's representation. Crucially, the target is one of those columns, so the labels on your context rows pull the raw features into place.
Because Nori is trained to predict the held-out portion of every table, this target-awareness reaches your unlabeled rows too. Nori infers the target-relevant structure of a brand-new record without ever seeing its answer.
The payoff is an embedding contextualized inside your dataset in a way no off-the-shelf encoder can match. It doesn't just represent a row. It represents that row's place in your problem.
What Can You Build With Them?
Nori is built for regression, but regression is only one of the problems a pretrained understanding of tables can solve. Once your rows have a good representation, a lot opens up:
- Search and retrieval: find the records most like this one.
- Clustering and segmentation: surface the natural groups in your data.
- Interpretability: inspect the structure the model actually uses.
- Anomaly detection: flag the rows that sit far from everything else.
- Visualization and compression: see, and shrink, an entire table.
Regression is the starting point, not the ceiling. Below, we put that to the test on a real dataset.
Seeing It: Credit-Card Default
We use a public dataset of 30,000 credit-card customers, the UCI Default of Credit Card Clients set. Every customer is described by the same 18 behavioral features: monthly bills, payments, and repayment status. We hold out 3,000 customers whose labels Nori never sees, and make three claims.
Claim 1: The embeddings have context-aware structure
We embed the same 3,000 held-out customers twice, from the identical 18 behavioral features, changing only the question we condition Nori on:
- Ask "who will default?" and the customers line up along a risk axis.
- Ask "who is high-value?" and the very same people rearrange around value. (Value here stands in for credit tier, which Nori has to infer: it isn't one of the 18 features it sees.)
The features never change. Only the question does. And because the raw features form one fixed map, they can't follow: toggle to raw features and the layout stops responding.
Nori never sees a held-out customer's own label. It infers the structure you asked about. That is context-awareness you can watch happen.
Claim 2: The intelligence of Nori, no longer tied to regression
Nori is a regression model, yet its embeddings carry classification-ready structure for free. We take the same held-out customers and train a simple logistic-regression probe to predict default from each representation:
Nori's 128-dimensional embedding beats a supervised UMAP baseline that was fit with the labels, and it beats the raw features, even though Nori was never trained to classify anything. The intelligence it learned in pretraining rides along inside the embedding.
Claim 3: Unlocking problems beyond regression
Finally, retrieval. Consider these two customers:
- Credit line
- $500,000
- Utilization
- 36%
- Avg monthly bill
- $179,405
- Avg monthly payment
- $58,780
- Age
- 44
- Recent repayment
- 2 months late
- Credit line
- $60,000
- Utilization
- 75%
- Avg monthly bill
- $44,743
- Avg monthly payment
- $11,119
- Age
- 31
- Recent repayment
- 2 months late
On paper they share almost nothing: an 8x gap in credit line, opposite utilization, a 13-year age difference. A raw-feature search would never pair them. But Nori, conditioned on default risk, places them side by side, and they meet the same fate.
This is the primitive under search, deduplication, cohorting, and recommendation. "Find me more like this" returns the records that matter for the outcome you care about, not the ones that happen to share surface features.
Get Started
Nori's embeddings are available now. Pass your labeled rows as context and get target-aware vectors back for any rows you like:
from synthefy_nori import NoriRegressor
model = NoriRegressor()
model.fit(X_context, y_context) # your labeled reference rows
embeddings = model.get_embeddings(X_query) # target-aware vectors for new rowsFor leakage-free embeddings of your training rows, use the scikit-learn transformer, which returns out-of-fold vectors:
from synthefy_nori.embedding import NoriEmbedding
Z = NoriEmbedding(n_fold=5).fit_transform(X, y)Grab the code and weights:
- GitHub: github.com/Synthefy/synthefy-nori
- Hugging Face: huggingface.co/Synthefy/Nori
- Docs: docs.synthefy.com
Point Nori at the dataset you're working on right now and build something that isn't regression. If you make something interesting, tell us on Discord or at insights@synthefy.com.

