本地 AI 实战
基于 本地 AI 完整指南 完成环境配置后,本文介绍本地 AI 在 Obsidian 中的实际应用案例。
推荐模型选择
根据不同用途选择合适的模型:
| 用途 | 推荐模型 | 特点 |
|---|---|---|
| 通用对话 | Llama 3.2 7B | 平衡性能与速度 |
| 中文优化 | Qwen 2.5 7B | 中文理解强 |
| 代码生成 | CodeLlama 7B | 代码专精 |
| 推理任务 | DeepSeek-R1 7B | 逻辑推理强 |
| 长文本 | Mistral 7B | 32K 上下文 |
| 嵌入向量化 | nomic-embed-text | 检索优化 |
实用 Prompt 模板
笔记摘要
markdown
请用中文总结以下笔记内容:
{{selection}}
要求:
1. 提取 3-5 个核心观点
2. 每个观点不超过 30 字
3. 使用列表格式
4. 保留关键数据内容润色
markdown
请润色以下文字:
{{selection}}
要求:
1. 修正语法错误
2. 改善表达流畅度
3. 保持原意不变
4. 使用简洁的语言知识问答
markdown
基于我的问题,请提供详细解答:
问题:{{question}}
背景:{{context}}
要求:
1. 回答准确完整
2. 如有不确定的地方请说明
3. 提供相关建议学习卡片
markdown
将以下内容转化为学习卡片:
{{content}}
格式:
Q: 问题
A: 答案
要求:
- 每个知识点一张卡片
- 问题简洁明了
- 答案完整准确中英翻译
markdown
请将以下内容翻译为中文/英文:
{{selection}}
要求:
1. 保持专业术语的准确性
2. 语气与原文一致
3. 必要时保留原文术语(括号标注)Templater 集成实战
自动摘要脚本
在 Templater 中创建自定义函数:
javascript
// 用户脚本文件: scripts/askLocalAI.js
async function askLocalAI(prompt, model = "llama3.2") {
const response = await fetch("http://localhost:11434/api/generate", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
model: model,
prompt: prompt,
stream: false
})
});
const data = await response.json();
return data.response;
}
module.exports = askLocalAI;在模板中使用:
markdown
<%*
const content = tp.file.selection();
if (content) {
const prompt = `请用中文总结以下内容,不超过200字:\n\n${content}`;
const summary = await tp.user.askLocalAI(prompt);
tR += `\n\n## AI 摘要\n${summary}`;
}
%>多模型协作工作流
不同任务使用不同模型:
javascript
// 用户脚本文件: scripts/aiWorkflow.js
async function analyzeContent(content) {
// 第一步:提取关键点(小模型,快速)
const keyPoints = await askLocalAI(
`提取关键点:${content}`,
"phi3"
);
// 第二步:深度分析(大模型,更准确)
const analysis = await askLocalAI(
`分析以下关键点的关联:${keyPoints}`,
"llama3.2"
);
// 第三步:生成建议(中文模型,自然表达)
const suggestions = await askLocalAI(
`基于分析提出行动建议:${analysis}`,
"qwen2.5"
);
return { keyPoints, analysis, suggestions };
}
module.exports = analyzeContent;智能知识库问答
基于 Smart Connections 的知识库对话
配置 Smart Connections 使用本地模型后,可以:
- 语义搜索:输入自然语言查询相关笔记
- 知识问答:基于你的笔记库回答问题
- 发现关联:自动推荐相关笔记
常用查询示例
text
# 查找特定主题的笔记
"我之前写的关于机器学习的笔记有哪些?"
# 汇总某个领域的知识
"总结我关于项目管理的心得"
# 寻找解决方案
"我之前是怎么处理同步冲突的?"性能基准参考
| 模型 | 参数量 | 显存占用 | 生成速度 | 质量 |
|---|---|---|---|---|
| Llama 3.2 3B | 3B | 2GB | 50+ tok/s | ⭐⭐⭐ |
| Llama 3.2 7B | 7B | 4-5GB | 30-40 tok/s | ⭐⭐⭐⭐ |
| Qwen 2.5 7B | 7B | 4-5GB | 30-40 tok/s | ⭐⭐⭐⭐⭐(中文) |
| DeepSeek-R1 7B | 7B | 4-5GB | 25-35 tok/s | ⭐⭐⭐⭐(推理) |
| Llama 3.2 13B | 13B | 8-10GB | 15-20 tok/s | ⭐⭐⭐⭐⭐ |
常见问题
Q1: 中文回答质量不好?
bash
# 使用中文优化的模型
ollama pull qwen2.5:7b
ollama pull deepseek-r1:7b
# 或在 Prompt 中明确要求中文
ollama run llama3.2
>>> 请用中文回答:什么是机器学习?Q2: 如何在多台设备同步?
使用局域网访问:
bash
# 服务器端(高性能电脑)
export OLLAMA_HOST=0.0.0.0:11434
ollama serve
# 客户端(其他设备)
# Text Generator 设置
Base URL: "http://192.168.1.100:11434" # 服务器 IPQ3: 批量处理笔记?
javascript
// 批量处理多个笔记
const files = app.vault.getMarkdownFiles()
.filter(f => f.path.includes("ToProcess"));
for (const file of files) {
const content = await app.vault.read(file);
const summary = await askLocalAI(`总结:${content.substring(0, 1000)}`);
// 处理结果...
}相关资源
- 本地 AI 完整指南 - 环境安装与配置
- AI 插件配置 - 插件详细设置
- AI 工作流 - 完整工作流程
- 知识库问答 - 本地知识库问答
- 多语言知识库 - 本地翻译应用