
версия xtrace SDK с открытым исходным кодом
Зашифрованная векторная база данных.
Ваши данные никогда не покидают вашу машину в открытом виде.
Каждая векторная база данных на рынке требует, чтобы вы передавали свои данные третьей стороне в открытом виде. XTrace — нет. Ваши документы и векторы эмбеддингов шифруются на вашей машине до передачи чего-либо. Сервер хранит и ищет по шифротекстам — он вычисляет результаты поиска ближайших соседей, никогда не видя открытого текста. Ваши данные остаются вашими, даже во время поиска.
SDK содержит два модуля:
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 шифрует всё на вашей машине до того, как что-либо коснётся сети. Ваш контент эмбеддится локально с помощью выбранной вами модели, а полученные векторы и исходный текст шифруются с помощью гомоморфного шифрования Paillier и AES-256 соответственно. Сервер только хранит и оперирует шифротекстами. Когда вы ищете, ваш запрос шифруется таким же образом. Секретный ключ никогда не покидает вашу среду, и сервер никогда не видит ни одного байта открытого текста. Проверьте шифрование
[!TIP] 🚀 Создайте бесплатную учётную запись на app.xtrace.ai чтобы получить API-ключ и ID организации. Бесплатный тариф ограничен по скорости, но полностью функционален.
# Base SDK
uv pip install xtrace-ai-sdk
# With local embedding support (Sentence Transformers)
uv pip install "xtrace-ai-sdk[embedding]"
Требуется Python 3.11+.
Полная документация на docs.xtrace.ai, или соберите локально:
cd docs && make html
Самый быстрый способ перейти от нуля до результатов поиска:
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
Полный асинхронный пример:
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())
Этот репозиторий существует, чтобы вы могли проверить шифрование самостоятельно. Тесты работают полностью офлайн и не требуют учётной записи XTrace:
uv pip install -e ".[dev]"
pytest tests/x_vec/
test_paillier_encryption.py и test_paillier_lookup_encryption.py проверяют циклы шифрования/расшифрования и гомоморфное сложение на шифротекстах — те же примитивы, которые SDK использует при отправке данных в XTrace. Секретный ключ никогда не покидает вашу машину.
Мы приветствуем вклад. См. CONTRIBUTING.md для руководства.
Apache 2.0 — см. LICENSE.