Skip to content

知识图谱可视化

AI 分析笔记间的关联关系,推荐应该建立的链接,可视化知识结构,发现知识孤岛。

适用场景

  • 知识库结构优化
  • 发现笔记间的潜在关联
  • 识别知识孤岛
  • 构建 MOC(Map of Content)

前置准备

必需插件

插件用途安装方式
Text GeneratorAI 分析社区插件市场
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 20

2. 核心节点识别

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 20

3. 自动关联建议

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 分钟
最后更新:2026年4月7日编辑此页反馈问题