# DINOv3 (dinov3)

`dinov3` (DINOv3-B) turns one image into an L2-normalised embedding vector that describes how the image looks. Two images that look alike get vectors that point in similar directions, which supports similarity ranking, near-duplicate detection and nearest-neighbour retrieval over an image collection.

| | |
|---|---|
| Model ID | `dinov3` |
| Model | DINOv3 ViT-B/16 (Meta) |
| Weights | Official release by Meta (`facebook/dinov3-vitb16-pretrain-lvd1689m`) |
| Use cases | [Embeddings and search](https://stack.foldbun.com/docs/use-cases/embeddings/) |
| Endpoints | `POST /v1/embeddings` |
| Pool | Public: available to every registered account, 100 calls per UTC day included |
| Billing units | `image`. Units and prices: [Billing](https://stack.foldbun.com/docs/billing/#price-list) |
| Licence | DINOv3 License |

> **Built with DINOv3**
>
> `dinov3` output is covered by the DINOv3 License. Products built on it should show the tag "Built with DINOv3".

## How it works

A call is one forward pass of the image encoder. The image is resized straight to 224 × 224 pixels, normalised, and passed through DINOv3 ViT-B/16, a vision transformer (ViT) that splits the image into 16 × 16 pixel patches. The vector is the pooled output of the encoder (the class token after the final normalisation), scaled to length 1 (L2 normalisation) and returned as float32 values. `dimensions` was 768 in the recorded responses.

The encoder takes an image and nothing else, so the vector is purely visual: it describes how an image looks, and two images are compared by the dot product of their vectors, which equals their cosine similarity. There is no text input and no text space. A text cannot be compared with a `dinov3` vector; [`siglip2`](https://stack.foldbun.com/docs/models/siglip2/) places images and texts in one space.

Each image costs one pass, so a call is billed as one `image`. The work does not depend on a cache, and the vector for the same image from a later call is computed again.

## In each use case

### Embeddings and search

`dinov3` serves `POST /v1/embeddings` with one image per call; `texts` is not accepted.

- The vector is purely visual and L2-normalised float32. Cosine similarity of two images equals the dot product of their vectors, and a higher value means more similar. Read `dimensions` for the length (768 in the recorded responses) instead of hard-coding it.
- Vectors of different models are not comparable: a collection indexed with `dinov3` is queried with `dinov3`, and its vectors cannot be compared with `siglip2` vectors. For a query that is a sentence or a set of labels, use [`siglip2`](https://stack.foldbun.com/docs/models/siglip2/#embeddings-and-search).

Use case guide and example call: [Embeddings and search](https://stack.foldbun.com/docs/use-cases/embeddings/).

## Limits and notes

- One image per call. Image limits: see [Images](https://stack.foldbun.com/docs/images/).
- Latency: the recorded call had `timing.processingMs` of 216 ms. The figure depends on the image, on queueing and on node load, and it is not a guarantee.

## Attribution

Products that use `dinov3` output should show the tag **Built with DINOv3**. The tag is not translated. The DINOv3 License governs the use of the output.
