
오픈 소스 버전 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 참조.