
version open source du SDK xtrace
La base de données vectorielles chiffrée.
Vos données ne quittent jamais votre machine en clair.
Toutes les bases de données vectorielles sur le marché exigent que vous confiiez vos données en clair à un tiers. XTrace ne le fait pas. Vos documents et vecteurs d'embedding sont chiffrés sur votre machine avant toute transmission. Le serveur stocke et recherche sur des textes chiffrés — il calcule les résultats des plus proches voisins sans jamais voir le texte en clair. Vos données restent vôtres, même pendant la recherche.
Le SDK comporte deux modules :
Your Machine XTrace Server
┌────────────────────────┐ ┌─────────────────────────┐
│ │ │ │
│ Documents + Queries │ │ Stores only ciphertext │
│ │ │ │ │
│ ▼ │ │ Searches over │
│ Embed + Encrypt │── ciphertext ─▶│ encrypted vectors │
│ (keys stay here) │ │ (never decrypts) │
│ ▲ │ │ │
│ │ │◀─ ciphertext ──│ Returns encrypted │
│ Decrypt results │ │ results │
│ │ │ │
└────────────────────────┘ └─────────────────────────┘
Secret key never leaves Zero knowledge
XTrace chiffre tout sur votre machine avant que quoi que ce soit ne touche le réseau. Votre contenu est intégré localement avec un modèle de votre choix, et les vecteurs résultants ainsi que le texte brut sont chiffrés respectivement avec le chiffrement homomorphe Paillier et AES-256. Le serveur ne stocke et n'exploite que des textes chiffrés. Lorsque vous effectuez une recherche, votre requête est chiffrée de la même manière. La clé secrète ne quitte jamais votre environnement, et le serveur ne voit jamais un seul octet de texte en clair. Vérifiez le chiffrement
[!TIP] 🚀 Créez un compte gratuit sur app.xtrace.ai pour obtenir votre clé API et votre ID d'organisation. Le niveau gratuit est limité mais entièrement fonctionnel.
# Base SDK
uv pip install xtrace-ai-sdk
# With local embedding support (Sentence Transformers)
uv pip install "xtrace-ai-sdk[embedding]"
Nécessite Python 3.11+.
Documentation complète sur docs.xtrace.ai, ou construisez localement :
cd docs && make html
Le moyen le plus rapide d'aller de zéro aux résultats de recherche :
uv pip install "xtrace-ai-sdk[cli]"
xtrace init # set up credentials + encryption keys
xtrace kb create my-first-kb # create a knowledge base (note the KB ID)
xtrace xvec load ./my-docs/ <KB_ID> # encrypt and upload documents
xtrace xvec retrieve <KB_ID> "your query" # search
Exemple asynchrone complet :
import asyncio
from xtrace_sdk.x_vec.utils.execution_context import ExecutionContext
from xtrace_sdk.x_vec.crypto.key_provider import PassphraseKeyProvider
from xtrace_sdk.x_vec.data_loaders.loader import DataLoader
from xtrace_sdk.x_vec.inference.embedding import Embedding
from xtrace_sdk.integrations.xtrace import XTraceIntegration
from xtrace_sdk.x_vec.retrievers.retriever import Retriever
# One-time setup: generate your private cryptographic state and save it
provider = PassphraseKeyProvider("your-secret-passphrase")
ctx = ExecutionContext.create(
key_provider=provider,
homomorphic_client_type="paillier_lookup",
embedding_length=512,
key_len=1024,
path="data/exec_context",
)
embed = Embedding("sentence_transformer", "mixedbread-ai/mxbai-embed-large-v1", 512)
xtrace = XTraceIntegration(org_id="your_org_id", api_key="your_api_key")
async def main():
# Encrypt and store documents — content and vectors never leave in plaintext
loader = DataLoader(ctx, xtrace)
docs = [{"chunk_content": "XTrace encrypts your embeddings.", "meta_data": {}}]
vectors = [await embed.bin_embed(d["chunk_content"]) for d in docs]
index, db = await loader.load_data_from_memory(docs, vectors)
await loader.dump_db(db, index=index, kb_id="your_kb_id")
# Query with an encrypted vector — the server never sees the query in plaintext
retriever = Retriever(ctx, xtrace)
vec = await embed.bin_embed("How does XTrace protect my data?")
ids = await retriever.nn_search_for_ids(vec, k=3, kb_id="your_kb_id")
results = await retriever.retrieve_and_decrypt(ids, kb_id="your_kb_id")
for r in results:
print(r["chunk_content"])
asyncio.run(main())
Ce dépôt existe pour que vous puissiez vérifier le chiffrement vous-même. Les tests s'exécutent entièrement hors ligne et ne nécessitent aucun compte XTrace :
uv pip install -e ".[dev]"
pytest tests/x_vec/
test_paillier_encryption.py et test_paillier_lookup_encryption.py vérifient les allers-retours de chiffrement/déchiffrement et l'addition homomorphe sur les textes chiffrés — les mêmes primitives que le SDK utilise lors de l'envoi de données à XTrace. La clé secrète ne quitte jamais votre machine.
Nous accueillons les contributions. Consultez CONTRIBUTING.md pour les directives.
Apache 2.0 — voir LICENSE.