Skip to main content
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

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.

Sentence Transformers

Models are downloaded from Hugging Face on first use. See the pretrained models list for available models. Requires pip install "xtrace-ai-sdk[embedding]".
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.
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.
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)