返回 Obsidian知识库

4、 wikilinks 交叉引用与 Dataview 查询实战

第4篇|wikilinks 交叉引用与 Dataview 查询实战

预计阅读时间:20分钟
核心目标:掌握用 wikilinks 构建知识网络,以及用 Dataview 做主动知识发现


4.1 wikilinks 基础

4.1.1 语法

[[页面标题]]           → 链接到当前目录下的某页面
[[子目录/页面标题]]    → 链接到子目录下的页面
[[页面标题|显示文本]]   → 链接但显示自定义文字

4.1.2 实际示例

## 相关概念
- Attention 机制:[[attention机制]]
- Transformer:[[transformer架构]]
- 深入理解可参考 [[https://arxiv.org/abs/1706.03762|原始论文]]

## 也可以这样
[[attention机制|点击查看 Attention 详解]]

4.1.3 链接状态

在 Obsidian 中,你会看到三种颜色:

| 颜色 | 含义 |
|------|------|
| 白色/普通色 | 页面存在,链接正常 |
| 红色 | 页面不存在(broken link),需要创建 |
| 灰色 | 页面已存在但被移到了其他目录 |


4.2 为什么 wikilinks 是 LLM Wiki 的核心

RAG 系统的知识是「隐性关联」——两篇文档讨论同一个概念,但模型要靠猜才能发现。

wikilinks 是「显性关联」——当你写 [[attention机制]] 时,你就是在明确告诉系统:这个页面和 attention 机制有关

效果:

  • Graph View 能可视化成知识图谱
  • Dataview 能查询「哪些页面引用了 X」
  • Agent 能顺着链接发现相关知识,而不是每次都从全文检索

4.3 wikilinks 使用规范(来自 SCHEMA)

回顾第3篇的 conventions:

  • 每个 Wiki 页面至少 2 个出站 wikilinks——防止页面孤立
  • 链接到已存在的页面(红色 broken link 太多说明在造孤岛)
  • 链接描述要直观——[[transformer]][[T]] 更好读

4.3.1 好链接 vs 坏链接

# ✅ 好链接
[[transformer架构]] — 清晰表达了关联内容
[[openai-gpt4|OpenAI GPT-4]] — 显示文本更友好
[[rlhf#与DPO对比]] — 链接到目标页面的特定章节

# ❌ 坏链接
[[T]] — 缩写太模糊
[[AI/ML]] — 路径含空格/斜杠,容易出错
[[  transformer  ]] — 多了空格

4.4 主动知识发现:用 Dataview 查询

Dataview 是 Obsidian 的查询引擎,用类 SQL 语法在 Markdown 文件的 YAML frontmatter 上做查询。

4.4.1 基本查询结构

```dataview
TABLE <列1>, <列2>
FROM "<目录>"
WHERE <条件>
SORT <排序列> <升序/降序>
```

4.4.2 常用查询示例

查询1:列出所有 entity 类型页面

```dataview
TABLE title, tags, updated
FROM "entities"
SORT updated DESC
```

查询2:查找所有包含 nlp 标签的页面

```dataview
TABLE title, type, updated
FROM ""
WHERE contains(tags, "nlp")
SORT title ASC
```

查询3:找出超过 90 天未更新的「过时」页面

```dataview
TABLE title, type, updated
FROM ""
WHERE updated < 2026-02-01
SORT updated ASC
```

查询4:统计各类型页面的数量

```dataview
TABLE length(rows) as count
FROM ""
GROUP BY type
```

查询5:查找所有 confidence: low 的页面

```dataview
TABLE title, tags, sources
FROM ""
WHERE confidence = "low"
```

4.5 高级查询:发现「知识盲区」

4.5.1 孤立页面检测(Inbound Links = 0)

找出哪些页面从未被其他页面引用:

```dataview
LIST title
FROM ""
WHERE length(file.inlinks) = 0 AND file.folder != "raw"
SORT title ASC
```

⚠️ 新建的空页面(还没有写入任何 wikilinks)会出现在这里,这是正常的。但如果一个老页面长期孤立,说明它和其他知识没有建立联系,需要补充 wikilinks。

4.5.2 找出引用了某页面的所有页面

```dataview
LIST title
FROM ""
WHERE contains(file.inlinks, [[transformer架构]])
```

4.5.3 某标签下更新最频繁的页面(热度排行)

```dataview
TABLE title, updated
FROM ""
WHERE contains(tags, "models.llm")
SORT updated DESC
LIMIT 10
```

4.5.4 来源最多的页面(知识枢纽页)

```dataview
TABLE title, length(sources) as sourceCount
FROM ""
WHERE length(sources) > 0
SORT sourceCount DESC
LIMIT 10
```

4.6 Graph View:可视化知识网络

Cmd/Ctrl + G 打开 Graph View。

4.6.1 图谱视图说明

        [transformer架构]
           /        \
          /          \
   [attention机制]  [self-attention]
          \          /
           \        /
         [multi-head-attention]
  • 节点 = Wiki 页面
  • 连线 = wikilinks 关系
  • 节点大小 = 被引用次数(inlinks 越多,节点越大)

4.6.2 过滤和聚焦

Obsidian Graph View 支持筛选:

  • 按标签筛选:只看 models.llm 相关的节点
  • 按路径筛选:只看 entities/ 下的节点
  • 高亮当前页面的一度、二度关联节点

4.6.3 本地 Graph vs 全局 Graph

| 视图 | 打开方式 | 用途 |
|------|---------|------|
| Local Graph | 右键页面 → Open Local Graph | 只看当前页面及其直接关联 |
| Global Graph | Cmd/Ctrl + G | 整个 Vault 的全局知识网络 |


4.7 实际工作流:用查询驱动 Wiki 维护

Dataview 不仅仅是「看看有什么页面」,更是维护 Wiki 健康度的工具。

工作流示例:Weekly Wiki Review(每周一次)

① 查询孤立页面 → 补充 wikilinks
② 查询过时页面(>90天未更)→ 更新或标记 stale
③ 查询 confidence: low 的页面 → 找更多来源提升置信度
④ 查询无 sources 的页面 → 判断是否需要补充来源
⑤ 统计各类型页面数量 → 了解 Wiki 覆盖的广度

示例查询组合

```dataview
TABLE title, type, updated, length(file.inlinks) as links
FROM ""
WHERE file.folder != "raw" AND file.folder != "_archive"
SORT links ASC
LIMIT 20
```

这个查询找出链接数最少(最容易孤立)的 20 个页面,是优先维护的对象。


4.8 反向Wikilinks:inlinks 的价值

「被引用」比「主动引用」更重要。

  • file.outlinks = 我主动链接了谁(我认可的知识关联)
  • file.inlinks = 谁主动链接了我(我的知识价值)

一篇页面 inlinks 越多,说明它越处于知识网络的核心位置,是真正的「枢纽页」。

# 比如 transformer架构 可能有 50 个 inlinks
# 说明 50 个其他页面都认为它和自己的主题相关

4.9 小结

  • wikilinks 是 LLM Wiki 的「血管」——让知识流动、关联、形成网络
  • 每个页面至少 2 个出站链接——这是防止「孤岛页」的核心规范
  • Dataview 是主动知识管理的工具——发现孤立、过时、低置信度页面
  • Graph View 把静态文件变成可交互的知识图谱
  • inlinks 数量 = 页面在知识网络中的重要度

下一篇预告:第5篇我们将进入工程落地阶段,讲解 Obsidian Headless 在服务器上的配置——如何让 Agent 在后台持续维护 Wiki,同时 Obsidian 桌面端实时同步看到更新。