AI 隐私与数据安全
AI 功能为 Obsidian 带来了强大的辅助能力,但同时也引入了数据安全和隐私的新考量。本文将帮助你了解 AI 使用中的隐私风险,并提供安全的使用策略。
为什么需要关注 AI 隐私?
Obsidian 的核心理念是本地优先——你的数据始终存储在自己的设备上。但 AI 功能通常需要将数据发送到外部服务处理,这与本地优先的理念存在张力。
需要关注的核心问题
- 数据传输:你的笔记内容会被发送到哪里?
- 数据存储:外部服务会保存你的数据吗?保存多久?
- 数据使用:你的数据会被用于训练模型吗?
- 访问控制:谁可以访问你发送的数据?
- 合规性:是否符合你所在行业的数据安全要求?
数据流分析
典型 AI 插件的数据流
text
你的笔记 → AI 插件处理 → 网络请求 → AI 服务商 → 返回结果 → 插件展示
↑ ↑
本地数据 云端处理各环节的隐私风险
| 环节 | 风险等级 | 说明 |
|---|---|---|
| 插件读取笔记 | 低 | 仅在本地,数据不出设备 |
| 数据预处理 | 低 | 本地分词、截断等操作 |
| 网络传输 | 中 | HTTPS 加密,但数据仍经过网络 |
| 云端处理 | 高 | 数据到达第三方服务器 |
| 结果存储 | 高 | 服务商可能缓存或记录请求 |
主流 AI 服务隐私对比
OpenAI (GPT 系列)
| 项目 | 说明 |
|---|---|
| API 数据使用 | 默认不用于训练(2023.3 起政策) |
| 数据保留 | 30 天后删除(用于滥用监测) |
| 传输加密 | ✅ TLS 1.2+ |
| 数据驻留 | 美国 |
| 企业版 | 提供零数据保留协议 |
Anthropic (Claude 系列)
| 项目 | 说明 |
|---|---|
| API 数据使用 | 不用于训练 |
| 数据保留 | 请求后不存储内容 |
| 传输加密 | ✅ TLS |
| 数据驻留 | 美国 |
| 安全认证 | SOC 2 Type II |
本地模型 (Ollama / LM Studio)
| 项目 | 说明 |
|---|---|
| 数据使用 | 完全本地,不传输 |
| 数据保留 | 无云端存储 |
| 传输加密 | 不适用(本地) |
| 数据驻留 | 你的设备 |
| 隐私等级 | ⭐⭐⭐⭐⭐ |
选择建议
- 日常使用、非敏感内容:云服务 API 即可
- 包含个人隐私/商业机密:优先使用本地模型
- 学术/医疗/法律等敏感领域:务必使用本地模型
安全使用策略
策略一:内容过滤
在将笔记发送给 AI 之前,过滤敏感信息:
手动过滤:
- 只选择需要 AI 处理的文本片段
- 避免将包含密码、身份证号等信息的笔记发给 AI
- 使用脱敏后的文本进行 AI 处理
自动过滤示例(Templater 脚本):
javascript
<%*
// 脱敏函数
function sanitize(text) {
// 移除手机号
text = text.replace(/1[3-9]\d{9}/g, '[手机号已脱敏]');
// 移除身份证号
text = text.replace(/\d{17}[\dXx]/g, '[身份证已脱敏]');
// 移除邮箱
text = text.replace(/[\w.-]+@[\w.-]+\.\w+/g, '[邮箱已脱敏]');
// 移除密码字段
text = text.replace(/密码[::]\s*\S+/g, '密码:[已隐藏]');
return text;
}
const content = sanitize(tp.file.content);
tR += content;
%>策略二:分层处理
根据内容敏感度选择不同的 AI 方案:
text
敏感度评估:
├── 🟢 公开信息 → 云端 AI(效率优先)
│ ├── 学习笔记
│ ├── 读书摘要
│ └── 技术文档
├── 🟡 个人信息 → 加密传输 + 云端 AI
│ ├── 工作记录
│ └── 项目笔记
└── 🔴 机密信息 → 本地 AI(安全优先)
├── 财务数据
├── 医疗记录
└── 法律文件策略三:使用本地 AI
最安全的方案是将 AI 运行在本地,数据完全不离开设备。
推荐方案:
| 方案 | 模型大小 | 最低内存 | 推荐场景 |
|---|---|---|---|
| Ollama + Qwen2.5 7B | 4.5 GB | 8 GB | 日常写作辅助 |
| Ollama + Llama 3.1 8B | 4.7 GB | 8 GB | 英文内容处理 |
| Ollama + Qwen2.5 14B | 9 GB | 16 GB | 更高质量的输出 |
| LM Studio | 按需 | 8-32 GB | 图形界面偏好 |
详见
完整的本地 AI 部署指南请参考 本地 AI 部署。
各插件隐私配置
Text Generator
yaml
# 隐私相关设置
api_type: "openai" # 或 ollama(本地)
base_url: "http://localhost:11434/v1" # 本地 Ollama
api_key: "ollama" # 本地无需真实 key
max_tokens: 500 # 限制生成长度
temperature: 0.7
# 建议关闭
send_context: false # 不自动发送上下文Smart Connections
yaml
# 隐私相关设置
api_provider: "local" # 使用本地嵌入模型
embedding_model: "local" # 本地嵌入
chat_model: "local" # 本地对话模型
# 如果必须使用云服务
# api_key: "sk-xxx"
# embedding_model: "openai-text-embedding-3-small"Obsidian Copilot
yaml
# 隐私相关设置
model_provider: "ollama" # 使用本地模型
ollama_model: "qwen2.5:7b"
base_url: "http://localhost:11434"
# QA 链设置
qa_chain_type: "stuff" # 控制上下文注入方式API Key 安全管理
安全存储
- 不要将 API Key 硬编码在笔记或模板中
- 不要将包含 API Key 的文件提交到 Git 仓库
- 使用 Obsidian 插件内置的 Key 管理功能
- 定期轮换 API Key
.gitignore 配置
确保 .gitignore 包含以下内容:
gitignore
# Obsidian 配置(可能包含 API Key)
.obsidian/plugins/*/data.json
# 环境变量文件
.env
.env.local费用控制
设置 API 使用限额,避免意外产生高额费用:
yaml
# OpenAI API 费用参考(2024 年价格)
gpt-4o:
input: $2.50 / 1M tokens
output: $10.00 / 1M tokens
gpt-4o-mini:
input: $0.15 / 1M tokens
output: $0.60 / 1M tokens
# 控制建议
monthly_budget: 10 # 美元/月
max_tokens_per_request: 1000合规性考量
个人用户
- 通常只需关注服务商隐私政策
- 避免将他人隐私信息发给 AI
- 注意 AI 生成内容的版权问题
企业用户
- 确认 AI 服务是否符合公司安全策略
- 检查数据处理协议(DPA)
- 评估数据跨境传输合规性
- 建立内部 AI 使用规范
特殊行业
| 行业 | 注意事项 |
|---|---|
| 医疗 | HIPAA 合规,患者数据不可外传 |
| 金融 | 数据驻留要求,审计追踪 |
| 法律 | 律师-客户特权保护 |
| 教育 | 学生数据保护(FERPA) |
| 政府 | 数据主权和安全认证 |
最佳实践清单
入门级
- [ ] 阅读 AI 插件和服务的隐私政策
- [ ] 不将包含密码/密钥的笔记发给 AI
- [ ] 定期检查 API 使用记录
- [ ] 为 API 账户设置费用上限
进阶级
- [ ] 对敏感内容使用本地 AI 模型
- [ ] 实施内容脱敏机制
- [ ] 使用 Templater 脚本自动过滤敏感信息
- [ ] 定期轮换 API Key
专家级
- [ ] 部署本地 AI 服务(Ollama/LM Studio)
- [ ] 配置网络代理隔离 AI 请求
- [ ] 审计 AI 插件的源代码
- [ ] 建立完整的 AI 使用安全规范
常见问题
问:AI 会读取我所有的笔记吗?
答:不会。AI 插件只在你主动触发时才会读取当前笔记或你选中的文本。但部分插件(如 Smart Connections)会为所有笔记建立嵌入索引,此时应使用本地嵌入模型。
问:我的笔记会被用于训练 AI 模型吗?
答:取决于服务商。OpenAI API 自 2023 年 3 月起默认不使用 API 数据训练模型。但如果使用免费版 ChatGPT 网页,数据可能被用于改进服务。
问:本地 AI 的输出质量够用吗?
答:7B-14B 参数的本地模型在日常写作辅助、总结、翻译等任务上已经足够。对于复杂推理和代码生成,云端大模型仍有优势。
问:如何确认插件没有偷偷上传数据?
答:可以在 Obsidian 开发者工具(Ctrl+Shift+I)的 Network 标签中监控网络请求,或使用 Wireshark 等工具抓包分析。