使用说明
您的数据,位于您的设备上。
浏览器中的本地隐私——矢量数据库、RAG和本地LLM。
所有处理都保持在客户端,没有出口。
为什么是Domicile?
Domicile是一个私有的AI堆栈——向量数据库、RAG和一个完全在浏览器中运行的本地LLM。本地级数据保管和特权保护,无需本地基础设施。你的文件永远不会离开他们的合法住所。
- 私人:数据永远不会离开设备——零出口,零第三方处理器
- 快:使用WASM SIMD回退实现WebGPU加速
- 自由:零云成本,无需API密钥,无需每次付费
- 完成:矢量数据库+嵌入+双LLM+带引用的RAG
- 离线:初始加载后无需互联网即可工作
快速开始
npm install @kyrillosishak/domicile
import Domicile from '@kyrillosishak/domicile';
// A private, in-browser custody layer
const db = new Domicile({
storage: { dbName: 'matter-files' },
index: { dimensions: 384, metric: 'cosine' },
embedding: { model: 'Xenova/all-MiniLM-L6-v2', device: 'webgpu' },
});
await db.initialize();
await db.insert({
text: 'Privileged communication — attorney work product',
metadata: { matter: 'M-204', privilege: 'true' },
});
const results = await db.search({ text: 'summary of work product', k: 5 });
console.log(results);
特性
- 向量数据库:IndexedDB中的持久客户端存储,具有纯TypeScript HNSW图索引。使用余弦、欧几里德或点度量(真实相似性得分、非重建删除)保存和搜索100K以上的文档,所有这些文档都驻留在设备上。
- 本地嵌入:Transformers.js,支持WebGPU加速和WASM回退。模型权重缓存在设备上,因此重复查询永远不会到达网络。
- 双LLM运行时:WebLLM用于GPU快速推理,Wllama用于CPU可移植性——自动回退,因此生成可以在任何工作站上运行。
- RAG及其引用:答案基于你的源文件,引用将每一项声明都链接到支持它的文件——可审计的,而不是黑匣子。
- MCP集成:将您的托管层作为模型上下文协议工具公开——将Domicile连接到Claude Desktop和您的团队已经构建的代理堆栈中。
- 居住设计:数据驻留在设备上——没有云出口,没有第三方处理器,没有驻留漂移。边界是架构性的,而不是有人会忘记检查的配置。
为谁
律师事务所和法律团队 --敏感事项文件、特权通信和客户数据永远不会离开工作站。Domicile在本地运行RAG和生成,因此律师客户端权限永远不会通过第三方云路由。建筑符合GDPR,离线工作。
集成和基础设施团队 --您为需要本地担保而无需本地资本支出的客户提供的托管层。将其发布到他们的应用程序中,配置驻留,然后离开——没有服务器可以运行,也没有数据平面需要保护。
核心功能
向量搜索
// Retrieval with metadata filtering
const results = await db.search({
text: 'indemnification clauses',
k: 10,
filter: { field: 'matter', operator: 'eq', value: 'M-204' },
});
for (const r of results) {
console.log(r.score.toFixed(3), r.metadata);
}
// Inspect custody state
const stats: IndexStats = await db.stats();
console.log(stats.vectorCount, stats.memoryUsage);
RAG管道
import { RAGPipelineManager, WllamaProvider } from '@kyrillosishak/domicile';
const llm = new WllamaProvider({ model: '...' });
const rag = new RAGPipelineManager(db, llm, embedding);
// Ask questions grounded in your documents
const result = await rag.query('Summarize the position.', {
topK: 3,
generateOptions: { maxTokens: 256, temperature: 0.7 },
});
console.log(result.answer);
console.log(result.sources); // Cited source documents
MCP集成
import { MCPServer } from '@kyrillosishak/domicile';
// Expose your custody layer as tools for AI agents
const mcp = new MCPServer(db, rag);
const tools: MCPTool[] = mcp.getTools();
// → [search, insert, rag_query, ...]
// Wire into Claude Desktop or any MCP-aware agent
mcp.serve({ transport: 'stdio' });
建筑
一个分层的、按设计驻留的堆栈。每一层都是可交换的,无需服务器即可运行。数据向下流动;答案源源不断——都在设备上。
- 接口:您的应用程序与干净的TypeScript API对话,或通过MCP-Claude Desktop、ChatGPT与AI代理对话,任何能说出协议的东西。
- 智能RAG管道管理器通过WebLLM和Wllama运行时以及GPU到CPU的自动回退来协调检索和生成。
- 检索:Transformers.js生成嵌入;纯TS HNSW指数返回具有真实分数的最近邻。BM25稀疏索引通过互易秩融合与密集索引融合,交叉编码器重新排序器锐化前k个索引——所有这些都是通过元数据过滤的。
- 监护:IndexedDB存储管理器,具有配额感知驱逐和JSON/二进制导出导入功能,用于迁移和客户端切换。
- 加速度:WebGPU可用时GPU计算,否则WASM SIMD回退,使用工作池进行批处理并行。
- 可靠性:一个类型化的错误层次结构、LRU缓存、内存管理器和一个内置的基准运行器来衡量这一切。
graph TB
subgraph "Interface"
APP[User Application]
MCP[MCP Interface]
end
subgraph "Intelligence"
API[VectorDB API]
RAG[RAG Pipeline Manager]
end
subgraph "Retrieval"
TJS[Transformers.js]
CACHE[Model Cache]
end
subgraph "LLM Layer"
WLLAMA[wllama - WASM]
WEBLLM[WebLLM - WebGPU]
end
subgraph "Index Layer"
HNSW[HNSW Graph Index]
BM25[BM25 Sparse Index]
end
subgraph "Custody"
IDB[IndexedDB]
STORE[Storage Manager]
end
APP --> API
MCP --> API
API --> RAG
API --> HNSW
RAG --> TJS
RAG --> WLLAMA
RAG --> WEBLLM
TJS --> CACHE
HNSW --> STORE
STORE --> IDB
演出
可复制自 domicile bench --与大楼大门相同的套房。在Linux/服务器CPU(节点)上测量;浏览器WebGPU运行将有所不同。
| 操作 | 延迟 | 吞吐量/质量 | 备注 |
|---|---|---|---|
| 搜索(10K向量,128维余弦) | p50 2.4ms/p99 7ms | recall@10=0.91 | 纯TS HNSW,热缓存 |
| 搜索(1K向量,128维余弦) | p50 1.4ms/p99 1.8ms | recall@10=1.00 | 非重建删除<0.01ms |
| 引文准确性(法律已知答案语料库) | -- | recall@3=0.92 | 密集+混合+再储层检索 |
| RAG查询(全管道) | 检索+生成 | 流式传输 | 本地LLM,浏览器绑定 |
复制: npm run build && node dist/cli/index.js bench
发展
# Install dependencies
npm install
# Run tests
npm test
# Run tests in watch mode
npm run test:watch
# Run integration tests (requires network)
npm run test:integration
# Build library
npm run build
# Type check
npm run type-check
# Run benchmarks
npm run benchmark
浏览器支持
- Chrome/Edge:90+(WebGPU:113+)
- 火狐:88+(WebGPU:尚不支持)
- 狩猎旅行:14+(WebGPU:尚不支持)
要求:
- IndexedDB支持
- WebAssembly支持
- ES2020+JavaScript
可选:
- WebGPU用于加速推理
- 用于多线程的SharedArrayBuffer
路线图
- ~~ Python绑定(PyScript)~~--作为
@kyrillosishak/domicile-pyscript(单独包装) - ~~ React钩子包~~--从主包导出(
useDomicile,useSearch,useRag,useRagStream,useCapabilities,useIngestProgress) 混合搜索(密集+稀疏)--在中实现BM25Index+互惠等级融合,集成到RAGPipelineManager多模态嵌入(CLIP)--通过发货createMultiModalGenerator(CLIP文本+共享空间中的图像嵌入)浏览器中的量化--quantize/dequantize在quantization/index.ts(fp32,fp16,int8,int4)
桌面应用程序
Domicile Desktop是一个基于Tauri的原生应用程序,在webview中运行完整的Domicile引擎——没有虚假的关键字排名,真正的HNSW+Transformers.js+WebLLM/Wllama堆栈。
本地建设
# Build the library first
npm run build
# Build the desktop app
cd desktop
npm install
npm run tauri:build
输出将在 desktop/src-tauri/target/release/bundle/ (.dmg, .deb, .AppImage, .msi, .exe 取决于平台)。
它做什么
- 物质工作空间 --拖放文件或粘贴文本;文档被分块(通道级别,256个令牌滑动窗口),嵌入设备中,并保存在IndexedDB中
- 问 --流式RAG,具有混合BM25+密集检索、可选的交叉编码器重新排序、绑定到源段落的内联引用芯片
- 监护小组 --实时能力矩阵(WebGPU/WASM/SIMD/SharedArrayBuffer/IndexedDB),引擎+索引+文档计数+设备层,始终为零出口计数器
- 设置 --嵌入模型、事件ID、混合/重新存储切换、导出/清除保管
建筑
- 牛磺酸壳 (约10 MB Rust包装器)--无Chromium捆绑包,可审计二进制文件
- Web视图 运行与浏览器/NMP包完全相同的Domicile引擎
- 驻地警卫 下载后,除模型权重缓存外,断言网络出口为零
贡献
欢迎捐款。请打开问题或PR。
许可证
麻省理工学院©2026
专为注重隐私的法律和整合团队打造
