
versione open source xtrace SDK
Il database vettoriale crittografato.
I tuoi dati non lasciano mai la tua macchina in chiaro.
Ogni database vettoriale sul mercato richiede di affidare i tuoi dati a terze parti in chiaro. XTrace no. I tuoi documenti e i vettori di embedding vengono crittografati sulla tua macchina prima che qualsiasi cosa venga trasmessa. Il server archivia e ricerca su testi cifrati — calcola i risultati dei nearest neighbor senza mai vedere il testo in chiaro. I tuoi dati rimangono tuoi, anche durante la ricerca.
L'SDK ha due moduli:
Tua Macchina Server XTrace
┌────────────────────────┐ ┌─────────────────────────┐
│ │ │ │
│ Documenti + Query │ │ Archivia solo testi │
│ │ │ │ cifrati │
│ ▼ │ │ │
│ Embed + Crittografa │── ciphertext ─▶│ Ricerca su vettori │
│ (chiavi restano qui) │ │ crittografati │
│ ▲ │ │ (non decifra mai) │
│ │ │◀─ ciphertext ──│ Restituisce risultati │
│ Decifra risultati │ │ crittografati │
│ │ │ │
└────────────────────────┘ └─────────────────────────┘
La chiave segreta non Zero conoscenza
lascia mai il tuo ambiente
XTrace crittografa tutto sulla tua macchina prima che qualsiasi cosa tocchi la rete. I tuoi contenuti vengono incorporati localmente con un modello a tua scelta, e sia i vettori risultanti che il testo grezzo vengono crittografati rispettivamente con crittografia omomorfica Paillier e AES-256. Il server archivia e opera solo su testi cifrati. Quando cerchi, la tua query viene crittografata allo stesso modo. La chiave segreta non lascia mai il tuo ambiente e il server non vede mai un singolo byte di testo in chiaro. Verifica la crittografia
[!TIP] 🚀 Crea un account gratuito su app.xtrace.ai per ottenere la tua chiave API e l'ID organizzazione. Il livello gratuito ha limiti di velocità ma è completamente funzionale.
# SDK di base
uv pip install xtrace-ai-sdk
# Con supporto per embedding locale (Sentence Transformers)
uv pip install "xtrace-ai-sdk[embedding]"
Richiede Python 3.11+.
Documentazione completa su docs.xtrace.ai, o creala localmente:
cd docs && make html
Il modo più rapido per passare da zero a risultati di ricerca:
uv pip install "xtrace-ai-sdk[cli]"
xtrace init # configura credenziali + chiavi di crittografia
xtrace kb create my-first-kb # crea una knowledge base (annotare l'ID KB)
xtrace xvec load ./my-docs/ <KB_ID> # crittografa e carica documenti
xtrace xvec retrieve <KB_ID> "your query" # cerca
Esempio completo asincrono:
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())
Questo repository esiste così puoi verificare la crittografia da solo. I test vengono eseguiti completamente offline e non richiedono un account XTrace:
uv pip install -e ".[dev]"
pytest tests/x_vec/
test_paillier_encryption.py e test_paillier_lookup_encryption.py verificano i round-trip di crittografia/decifratura e l'addizione omomorfica sui testi cifrati — le stesse primitive utilizzate dall'SDK quando invia dati a XTrace. La chiave segreta non lascia mai la tua macchina.
Accogliamo contributi. Vedi CONTRIBUTING.md per le linee guida.
Apache 2.0 — vedi LICENSE.