首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《构建个人知识图谱》019:集成 Obsidian

Obsidian 作为客户端笔记工具,为很多人记录和学习提供了一个很好的平台。今天把数翼知识图谱工具和 Obsidian 结合起来,让知识变得更可用。

下面讲一下如何把 Obsidian 数据和 数翼知识图谱结合起来。

(相关演示视频放在了正文讲解的过程中。)

Obsidian 数据结构

集成 Obsidian 的核心思路是把 Obsidian 当成数据源提供给图谱作展示。

目录

Obsidian 使用树状结构组织笔记:

对应系统也是文件夹+文件的树形结构。

节点

很自然的,我们把每个笔记当成一个节点,笔记之间的链接当成关系连接。大概是这样:

我们这里把进和出的连接都考虑到(也就是常说的双向链接)。

标签(Tag)

接着,我们也把标签当成节点,标签和节点直接也形成了一个关系的连接,类似这样:

标签类型标签有元数据的标签、正文的标签两种,可以根据需要来选择是不是同时需要。

Obsidian 数据服务

基本的思路是读取 Obsidian Vault 中的数据,然后把它们转换成知识图谱的格式。

读取的最简单方案就是直接读取文件夹和文件,解析文件格式,然后提取其链接和标签等信息。

可以让 AI 帮我们写个程序来解析:

Python extra relations links and tags from obsidian note

import re

def extract_links_and_tags(note_content):

"""Extracts links and tags from Obsidian note content.

Args:

note_content: The content of the Obsidian note.

Returns:

A tuple of two lists: links and tags.

"""

links = re.findall(r"\[\[(.*?)\]\]", note_content)

tags = re.findall(r"#(.*?)(?=\s|$)", note_content)

return links, tags

# Example usage:

note_content = """

This is a sample Obsidian note.

Here's a link to another note: [[Linked Note]]

And here are some tags: #tag1 #tag2 #tag3

"""

links, tags = extract_links_and_tags(note_content)

print("Links:", links)

print("Tags:", tags)

另外,还有一些开源项目可以帮助我们来提取数据,比如:

• obsidiantools[1]

• py-obsidianmd[2]

最终的数据结构可以参考:

{

"nodes": [

{

"id": "LeaferUI",

"name": "LeaferUI",

"type": "node",

"tags": ["Prompt"]

},

...

],

"links": [

{

"source": "LeaferUI",

"target": "PromptStore",

"type": "node"

},

...

],

"tags": [

"Knowledge", "Prompt"

]

}

节点和边我都增加了类型node或tag,这样就可以在知识图谱中区分节点和标签。

比如在可视化的时候通过形状来区分节点和标签,节点的形状是圆,标签的形状是方形。

交互优化

图谱切换

现在图谱数据支持两种数据源,一种是我们常规的服务端数据、另一种是我们刚刚增加的 Obsidian 图谱数据。

直接把两个数据源的数据合并在一起,就可以实现图谱切换的功能,为了方便区分,我们再数据源前面增加一个图标来进行区分:

搜索

之前的搜索体验不好,我们增加一个搜索面板,可以参考各类网站的站内搜索功能:

点击搜索结果的节点名称,自动定位到对应的节点位置。

节点颜色

之前通过 UI 创建的节点,我们都可以在 UI 上设置颜色,或者使用自动化工具获取节点的 Logo,

并且提取 Logo 的主色作为节点的颜色。

对于 Obsidian 的节点,我们不变在 UI 中设置颜色, 但是可以同样使用 Logo 的主色作为节点的颜色,但是这样颜色随机性比较高,大规模图谱的时候对分析没有帮助。

这里我们使用节点的主标签(第一个标签 Tag)来进行分组,每个分组设置一种颜色。

这样数据分析的时候就比较有用:

或者这样:

对于图谱数据分析来说,一般情况下颜色自动生成,具有较高的辨识度即可,不需要为手动设置颜色。

标签过滤

当你节点达到一定数量的时候,我们会对图谱的一部分进行查看,这时候可以通过标签过滤来进行筛选。

我们在 UI 中增加一个标签过滤面板,展示图谱中所有的标签:

也可以选择需要的标签,只展示标签相关的节点:

大概操作如下:

固定节点

在数据分析的时候,有时候需要通过鼠标拖动固定一些节点,让分析更方便, 这个功能在初始的几个版本里面就存在,不过在节点多了之后就显得更有用。

简单看下视频操作:

Obsidian 插件我们知道,Obsidian 本身就有一个内置插件来实现知识图谱。

而且有两个 3D 图谱的社区插件,来满足简单的3D查看需求:

大家可以去试下。

引用链接

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OQ1Xj-5lMWLaOP6IosOyrcag0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券