> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xtrace.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Embedding models

> Convert text into binary vectors for encrypted storage and search using Ollama, Sentence Transformers, OpenAI, or your own float vectors.

`Embedding` converts text into binary vectors for encrypted storage and search. The `embed_len` dimension must match the value set on your `ExecutionContext`.

Supported providers:

* **Ollama** — local, no API key required
* **Sentence Transformers** — local, models downloaded from Hugging Face (requires the `[embedding]` extra)
* **OpenAI** — cloud-based

For end-to-end privacy, run Ollama or Sentence Transformers locally. OpenAI can be used when privacy is not a concern.

The `INFERENCE_API_KEY` environment variable is read automatically when `api_key` is not passed explicitly.

## Ollama

```python theme={null}
from xtrace_sdk.x_vec.inference.embedding import Embedding

embed = Embedding("ollama", "mxbai-embed-large", 1024)
vector = await embed.bin_embed("some text")
```

For Ollama setup instructions, see the [Ollama installation docs](https://ollama.com/docs/installation).

## Sentence Transformers

Models are downloaded from Hugging Face on first use. See the [pretrained models list](https://www.sbert.net/docs/pretrained_models.html) for available models. Requires `pip install "xtrace-ai-sdk[embedding]"`.

```python theme={null}
from xtrace_sdk.x_vec.inference.embedding import Embedding

embed = Embedding("sentence_transformer", "mixedbread-ai/mxbai-embed-large-v1", 512)
vector = await embed.bin_embed("some text")
```

## OpenAI

Set your OpenAI API key via the `INFERENCE_API_KEY` environment variable or pass it directly as `api_key`.

```python theme={null}
from xtrace_sdk.x_vec.inference.embedding import Embedding

embed = Embedding("openai", "text-embedding-3-small", 1536)
vector = await embed.bin_embed("some text")
```

## Bring your own vectors

If you already have float vectors from another source, convert them to the binary format XTrace expects using `Embedding.float_2_bin`. The length of the resulting list must match `embed_len` on your homomorphic client.

```python theme={null}
from xtrace_sdk.x_vec.inference.embedding import Embedding

your_vector = [0.1, -0.2, 0.3, ...]   # list of floats, length = embed_len
binary_vector = Embedding.float_2_bin(your_vector)
```
