Skip to content
About
Main content

Summary and key takeaways

The one assumption. General engines assume a is a point or range over a , or an equality under a hash. Text, similarity, graph, spatial and time-series workloads break it in different ways (dimensionality, structure, relevance, distribution). This mechanism is the catalogue of what you build instead, and what each choice costs.

The shared template. Project the data into something prunable, prune with no , then verify or rank the survivors. is capped by the first stage, permanently.

The three escape shapes:

ShapeFamiliesUsed when
Project to something prunable and refinetext, vector, geospatiala lossy mapping with a one-sided guarantee exists
Change the execution modelgraphreachability has no bound, so batch by round, not by address
Specialize the representationtime the predicate is easy, the data is redundant

The families in one line each:

  • Text: , , with skipping, two-stage retrieval, segments and .
  • Vector: scans, // trade recall for speed, rebuild instead of merge, rank-based hybrid fusion, weak in mid , model is schema.
  • Graph: adjacency, traversal as a dependency chain, degree skew, vertex cuts, rounds with barriers.
  • Geospatial: filter and refine, curved Earth, duplicate-or-overlap, , grids.
  • Time series: series identity and wall, compression, for decomposable aggregates only, .

The recurring arithmetic:

FamilyBinding resourceKnobPaid in
Textpostings scannedearly-termination thresholdindex size, freshness vs segment count
Vectormemory bandwidthrecall (nprobe, efSearch, bits)recall, rebuild cost
Graphcoordination per hopdepth, active-set shrinkagebarriers, stragglers, hub replication
Geospatialrefine workcell resolutionduplication or multi-path search
Time seriesseries count, bytes per pointrollup resolution, retentionlost future questions

The rules the families keep obeying:

  • Approximation shape depends on whether an exact answer exists.
  • No total order preserves proximity in more than one dimension.
  • When the oracle is outside the system, reproducibility replaces correctness.
  • Every index is directional; the reverse question costs a second copy.
  • Skipping, pushdown, merging and precomputation are set by the function's algebra, not the data layout.
  • Scores from independently calibrated systems are comparable only by rank.
  • A structure fitted to a distribution is valid only for that distribution, and it fails quietly.
  • When you cannot batch by address, batch by round.
  • Objects with extent force duplication or non-disjoint partitions.
  • Where data has a resolution dimension, degrade rather than delete. Two will keep paying out: the algebra rule predicts optimizability, and the fitted-structure rule explains every silent degradation.

Permanent versus contingent. Permanent: the dimensionality break, the sphere-to-plane distortion, one-sidedness, and that a mapping and its inverse are different structures. Likely to move: which family wins, specialized versus general engines, mid-selectivity filtered ANN, asynchronous graph execution. Economic: most specialize-or-extend decisions.

Cross-cutting costs. The engine is the cheap part. Every family is a derived dataset with a second write path, a rebuild time that is the real recovery objective, and a deletion problem with no clean answer. Nothing here composes: multi-modal queries become that degrade with selectivity. Recall, relevance and business outcome are three different measurements.

Back to Haatly. Elin's question, "when does a new workload need its own system?", is answered by a six-step checklist: can the predicate become a range or equality; which of the three shapes; name the binding resource and knob; price the pipeline; check whether a general engine is close enough; say what you cannot verify. Elin's summary: the question is not whether the new system is faster, but what we have promised to keep true, and for how long.

The two questions to ask of any system. What does it assume that it cannot verify? Who pays when the assumption breaks? Here: derived copies are assumed current and the data's distribution assumed unchanged, and the reader pays, silently and late.