
إصدار مفتوح المصدر 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 ومعرف المؤسسة. الطبقة المجانية محدودة المعدل ولكنها تعمل بكامل الوظائف.
# 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 # إعداد بيانات الاعتماد + مفاتيح التشفير
xtrace kb create my-first-kb # إنشاء قاعدة معرفة (لاحظ معرف KB)
xtrace xvec load ./my-docs/ <KB_ID> # تشفير ورفع المستندات
xtrace xvec retrieve <KB_ID> "your query" # بحث
مثال غير متزامن كامل:
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.