
open source version xtrace sdk
현재 시장에 나와 있는 모든 벡터 데이터베이스는 데이터를 평문으로 제3자에게 넘겨야 합니다. XTrace는 그렇지 않습니다. 문서와 임베딩 벡터는 전송되기 전에 사용자 머신에서 암호화됩니다. 서버는 암호문을 저장하고 검색합니다 — 평문을 보지 않고 최근접 이웃 결과를 계산합니다. 검색 중에도 데이터는 사용자의 것입니다.
SDK는 두 가지 모듈로 구성됩니다:
사용자 머신 XTrace 서버
┌────────────────────────┐ ┌─────────────────────────┐
│ │ │ │
│ 문서 + 질의 │ │ 암호문만 저장 │
│ │ │ │ │
│ ▼ │ │ 암호화된 벡터 │
│ 임베딩 후 암호화 │── 암호문 ────▶│ 검색 │
│ (키는 여기에 유지) │ │ (절대 복호화하지 않음) │
│ ▲ │ │ │
│ │ │◀─ 암호문 ────│ 암호화된 결과 반환 │
│ 결과 복호화 │ │ │
│ │ │ │
└────────────────────────┘ └─────────────────────────┘
비밀 키는 절대 떠나지 않음 영지식
XTrace는 네트워크에 닿기 전에 모든 것을 사용자 머신에서 암호화합니다. 사용자가 선택한 모델로 콘텐츠를 로컬에서 임베딩하고, 결과 벡터와 원시 텍스트는 각각 Paillier 준동형 암호화와 AES-256으로 암호화됩니다. 서버는 오직 암호문만 저장하고 연산합니다. 검색 시 질의도 동일한 방식으로 암호화됩니다. 비밀 키는 사용자 환경을 떠나지 않으며, 서버는 평문의 단일 바이트도 볼 수 없습니다. 암호화 확인
[!TIP] 🚀 app.xtrace.ai에서 무료 계정을 만드세요 API 키와 조직 ID를 받으려면. 무료 티어는 속도 제한이 있지만 완전히 사용 가능합니다.
# Base SDK
uv pip install xtrace-ai-sdk
# 로컬 임베딩 지원 포함 (Sentence Transformers)
uv pip install "xtrace-ai-sdk[embedding]"
Python 3.11+가 필요합니다.
전체 문서는 docs.xtrace.ai에서 확인하거나, 로컬로 빌드:
cd docs && make html
0에서 검색 결과까지 가장 빠른 방법:
uv pip install "xtrace-ai-sdk[cli]"
xtrace init # 자격 증명 + 암호화 키 설정
xtrace kb create my-first-kb # 지식 베이스 생성 (KB ID 기록)
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 참조.