知识图谱可视化
AI 分析笔记间的关联关系,推荐应该建立的链接,可视化知识结构,发现知识孤岛。
适用场景
- 知识库结构优化
- 发现笔记间的潜在关联
- 识别知识孤岛
- 构建 MOC(Map of Content)
前置准备
必需插件
| 插件 | 用途 | 安装方式 |
|---|---|---|
| Text Generator | AI 分析 | 社区插件市场 |
| Dataview | 数据查询 | 社区插件市场 |
| Graph Analysis | 图谱分析 | 社区插件市场 |
推荐插件
| 插件 | 用途 |
|---|---|
| Obsidian Graph | 可视化图谱 |
| Juggl | 高级图谱视图 |
| Neighbouring Files | 显示相关文件 |
分析模板
markdown
---
title: 知识图谱分析
date: {{date}}
scope: {{scope}}
tags: [knowledge-graph]
---
# 知识图谱分析
## 📊 图谱概览
<!-- 统计数据 -->
## 🔗 关联发现
<!-- AI 发现的潜在关联 -->
## 📈 结构建议
<!-- 优化建议 -->
## 🎯 孤岛笔记
<!-- 缺少链接的笔记 -->关联分析 Prompt
markdown
# 知识关联分析
## 笔记集合
{{notes}}
## 分析要求
### 输出
## 关联发现
### 强关联(应该链接)
| 笔记A | 笔记B | 关联原因 | 关联类型 |
|-------|-------|----------|----------|
| 笔记1 | 笔记2 | 都讨论X主题 | 相关 |
### 潜在关联(建议探索)
| 笔记A | 笔记B | 可能关系 |
|-------|-------|----------|
## 知识孤岛
以下笔记缺少外部链接:
1. 笔记名 - 建议:链接到X、Y
## 主题聚类
### 聚类1:主题名
- 笔记1
- 笔记2
- 建议:创建 MOC(Map of Content)
### 聚类2:主题名
- 笔记3
- 笔记4
## 结构优化建议
1. 创建 MOC:[主题]
2. 合并建议:笔记A + 笔记B(内容高度重叠)
3. 拆分建议:笔记C(包含多个主题)
## 关键节点
以下笔记被频繁引用,是核心知识:
1. 笔记名 - 被引用 X 次返回
详细操作步骤
步骤一:收集笔记信息
javascript
// Templater 脚本:收集笔记元数据
async function collectNoteMetadata() {
const files = app.vault.getMarkdownFiles();
const metadata = [];
for (const file of files) {
const cache = app.metadataCache.getFileCache(file);
const links = cache?.links || [];
const backlinks = app.metadataCache.getBacklinksForFile(file);
metadata.push({
path: file.path,
title: cache?.frontmatter?.title || file.basename,
tags: cache?.frontmatter?.tags || [],
outLinks: links.map(l => l.link),
inLinks: Array.from(backlinks.keys())
});
}
return metadata;
}步骤二:AI 关联分析
javascript
// 使用 AI 分析潜在关联
async function analyzeConnections() {
const notes = await collectNoteMetadata();
// 按 folder 分组分析
const groups = groupByFolder(notes);
for (const [folder, groupNotes] of Object.entries(groups)) {
const analysis = await textGenerator.generate(`
分析以下笔记的潜在关联:
${groupNotes.map(n => `
- ${n.title}
标签:${n.tags.join(', ')}
出链:${n.outLinks.slice(0, 5).join(', ')}
`).join('\n')}
请找出:
1. 应该建立但未建立的链接
2. 可以合并的相似笔记
3. 建议创建的 MOC
`);
await saveAnalysis(folder, analysis);
}
}步骤三:生成 MOC 建议
markdown
# AI 生成 MOC
## 分析范围
{{notes_in_topic}}
## 生成的 MOC 结构
```textgen
分析以下笔记,生成一个 Map of Content:
笔记列表:
{{note_list}}
输出格式:
# [主题] MOC
## 概述
[简短描述]
## 核心概念
- [[笔记1]] - 简要说明
- [[笔记2]] - 简要说明
## 进阶内容
- [[笔记3]]
- [[笔记4]]
## 相关资源
- [[资源笔记]]
## 高级技巧
### 1. 孤岛笔记检测
```dataview
TABLE
file.name as "孤岛笔记",
file.folder as "文件夹",
file.created as "创建时间"
FROM ""
WHERE file.inlinks.length = 0
AND file.outlinks.length = 0
AND !contains(file.folder, "Templates")
SORT file.created DESC
LIMIT 202. 核心节点识别
dataview
TABLE
file.name as "核心笔记",
file.inlinks.length as "被引用次数",
file.outlinks.length as "引用次数"
FROM ""
WHERE file.inlinks.length >= 5
SORT file.inlinks.length DESC
LIMIT 203. 自动关联建议
javascript
// 实时关联建议
class ConnectionSuggester {
async suggestConnections(currentNote) {
const content = await app.vault.read(currentNote);
// 使用嵌入向量找相似笔记
const similar = await smartConnections.findSimilar(content, 5);
// 使用 AI 分析关联原因
for (const note of similar) {
const reason = await textGenerator.generate(`
为什么这两篇笔记应该关联?
笔记A:${currentNote.basename}
笔记B:${note.basename}
简短说明关联原因(一句话)。
`);
suggestions.push({ note, reason });
}
return suggestions;
}
}常见问题
Q1: 分析速度太慢?
解决方案:
javascript
// 分批分析 + 缓存
const CACHE_KEY = 'graph-analysis-cache';
async function cachedAnalysis() {
// 检查缓存
const cached = await loadCache(CACHE_KEY);
if (cached && !isExpired(cached)) {
return cached.data;
}
// 分批处理
const batchSize = 50;
const results = [];
for (let i = 0; i < files.length; i += batchSize) {
const batch = files.slice(i, i + batchSize);
const batchResults = await analyzeBatch(batch);
results.push(...batchResults);
// 避免卡顿
await sleep(1000);
}
// 保存缓存
await saveCache(CACHE_KEY, results, { expiry: '1d' });
return results;
}Q2: 关联建议不准确?
优化方案:
markdown
# 提高准确性的 Prompt
## 笔记A
标题:{{title_a}}
内容摘要:{{summary_a}}
标签:{{tags_a}}
## 笔记B
标题:{{title_b}}
内容摘要:{{summary_b}}
标签:{{tags_b}}
## 分析维度
1. 主题相关性(0-10)
2. 内容互补性(0-10)
3. 引用价值(0-10)
## 输出
- 综合评分:X/10
- 关联原因:[具体说明]
- 建议链接方式:[A->B / 双向 / 通过 MOC]Q3: 如何可视化分析结果?
markdown
# Graph 视图配置
## 设置方法
1. 打开 Graph 视图
2. 点击设置图标
3. 配置颜色和分组:
### 按文件夹着色
- "Areas/" - 蓝色
- "Projects/" - 绿色
- "Resources/" - 橙色
- "Archive/" - 灰色
### 按连接数筛选
- 显示连接数 > 5 的节点
- 高亮孤立节点(红色)实际案例
案例:构建编程知识库 MOC
markdown
## 初始状态
- 120 篇编程笔记
- 大量断链和孤岛
- 缺乏结构
## AI 分析过程
### 第一步:识别主题聚类
AI 发现以下主题:
1. JavaScript(35篇)
2. Python(28篇)
3. 算法(20篇)
4. 数据库(15篇)
5. 其他(22篇)
### 第二步:生成 MOC
为每个主题创建 MOC:
- [[JavaScript MOC]]
- [[Python MOC]]
- [[算法 MOC]]
### 第三步:建立关联
AI 建议的链接:
- [[JavaScript]] -> [[TypeScript]](强关联)
- [[算法]] -> [[数据结构]](补充关系)
- [[Python]] -> [[机器学习]](应用关系)
## 改进结果
| 指标 | 改进前 | 改进后 |
|------|--------|--------|
| 平均连接数 | 1.2 | 4.5 |
| 孤岛笔记 | 45 | 8 |
| MOC 数量 | 0 | 5 |
| 检索效率 | 低 | 高 |效率提升
- 知识发现速度:提升 3 倍
- 孤岛笔记识别:从手动 8 小时 → 自动 5 分钟
- MOC 创建:从手动 2 小时 → AI 辅助 15 分钟