Concepts
What is a faceprint? Face embeddings explained for developers
The number behind every face match — what it is, what it isn't, and why you can't move it between engines.
TL;DR
A faceprint (or face embedding) is a fixed-length list of numbers — a vector — that a model computes from a face image. Two photos of the same person produce vectors that are close together; different people produce vectors that are far apart, and "how close" is the similarity score you threshold. Embeddings are specific to the model that made them, so you can't compare or transfer them between engines, and they are biometric data that must be handled accordingly. This explains each of those points in practical terms.
What the vector actually is
A face-recognition model is trained so that its output vector captures identity: the same face in different lighting, poses, and ages lands in nearly the same place, while different faces land far apart. That output vector is the faceprint. It is not a picture and you can't reconstruct the original photo from it, but it is derived from a person's face — which is what makes it biometric data, not an anonymous number.
How matching works: distance becomes a score
To compare two faces you compare their vectors. A distance (or cosine similarity) between them is turned into a similarity score. You choose a threshold: above it you call them a match, below it you don't. SightRadar returns this on a 0–1 scale (AWS Rekognition uses 0–100). The score is a measure of similarity, not a probability that two people are the same person — which is why you calibrate the threshold on your own data rather than trusting a universal number.
Tip: Indexing a photo stores its embedding in a collection; searching computes the probe's embedding and finds the nearest stored ones. That's why indexing is a one-time cost per photo and search is fast — you're comparing vectors, not re-analysing images.
Why embeddings aren't portable between engines
Every model builds its own vector space. A vector from model A is meaningless to model B — the dimensions don't line up, and the distances aren't comparable. This has two concrete consequences developers hit constantly:
- You can't export faceprints from one provider and import them into another. Migrating engines means re-indexing your source images, not moving vectors. (This is the crux of a Rekognition migration.)
- A threshold doesn't transfer. A cutoff tuned on one engine's scores means something different on another's — re-run your calibration after any engine or model-version change.
Model versioning matters
Because embeddings depend on the model, a model upgrade generally changes the vector space. If a provider changes the model under a collection, previously stored vectors and newly computed ones may no longer be directly comparable — so responsible providers version the model and don't silently swap it beneath your indexed data. When you evaluate an engine, ask how model versions are handled for already-indexed faces.
The privacy implications
- A faceprint is biometric data under regimes like GDPR and BIPA, even though it's "just numbers" — it identifies a person.
- Storage is a choice. Detecting or comparing faces can happen in memory without persisting anything; indexing persists an embedding you can delete later. Store only what your feature needs.
- Isolation matters. In a multi-tenant system, one account's embeddings should never be searchable by another — that's a core isolation guarantee, not an add-on.
See how faceprints are indexed, searched, and deleted via the API.
Read the API referenceFrequently asked questions
What is a faceprint?
A faceprint, also called a face embedding, is a fixed-length vector of numbers a model computes from a face image. Photos of the same person produce vectors that are close together and different people produce vectors that are far apart; the distance between them becomes the similarity score you threshold. You can't reconstruct the original photo from the vector, but because it's derived from a person's face it is biometric data.
Can I move face embeddings between different recognition APIs?
No. Each model builds its own vector space, so a faceprint from one engine is meaningless to another and the distances aren't comparable. Migrating providers means re-indexing your source images rather than exporting and importing vectors, and any similarity threshold must be re-calibrated on the new engine.
Is a faceprint personal data under GDPR or BIPA?
Yes. Even though a faceprint is a numeric vector rather than a photo, it identifies a person and is treated as biometric data under regimes such as GDPR and BIPA. That means you need a lawful basis and consent to create one, should store only what your feature requires, and must be able to delete it on request.