Skip to main content
Version: Next

Embeddings (Experimental)

caution

This is an experimental feature. Configuration, data format, index layout, and APIs may still change in breaking ways between releases.

Embeddings add meaning-based capabilities on top of the Generic Data Index:

  • Semantic search — queries match by meaning instead of exact words ("British roadster" finds an MG even if no field contains "roadster"), including multilingual queries.
  • Image search — text queries against image assets ("yellow van"), no tagging required.
  • Duplicate detection — exact duplicates via a content hash, near-duplicates via vector and MinHash similarity, for both objects and images.

The feature is off by default and calls an external inference service you provide — the bundle ships no model. See Getting Started to turn it on.

How it works

When an element is saved or re-indexed, its content becomes an embedding input — a composed text for data objects, a thumbnail for image assets. An inference service you configure turns that input into a vector, and the vector is stored in the element's regular search index document. A search embeds the query with the same (or a paired cross-modal) model and runs a kNN query against those fields.

Two properties are worth knowing up front because they shape day-to-day operations:

  • Vectors are reused, not recomputed. Each stored vector carries an identity key derived from the model and the exact input, so re-indexing unchanged content costs no inference calls — see Caching.
  • Generation is asynchronous and never blocks. It runs through Symfony Messenger; if the inference service is unavailable, the element is indexed without vectors, marked for backfill, and repaired later. Saving and indexing should never fail because of embeddings.

Further reading

  • Getting Started — from a freshly installed bundle to working semantic search: choosing a model, running an inference service, enabling the feature, verifying it.
  • Configuration — reference for every option and its default.
  • Caching — how vector reuse works, what it means for your system, and how to bypass it.
  • Inference Service — hosting options, obtaining a model, the HTTP contract an endpoint must fulfil, and the serving invariants (unit vectors, versioned preprocessing, cross-modal pairing).
  • Defaults and Benchmarks — which model, text format and compression the bundle defaults to, and the measurements behind each choice.
  • Evaluation Tool — benchmark search and duplicate-detection quality against curated label files, on your own data.
  • Customization — write your own provider to support an endpoint the shipped one cannot talk to.
  • Semantic Search in Studio — the bpt.semanticSearch column filter for Studio's grid and search endpoints: request contract, top-k/ordering semantics, degrade behaviour.