大数跨境
0
0

Obsidian AI 自动生成知识图谱辅助学习

Obsidian AI 自动生成知识图谱辅助学习 数翼
2024-11-05
0

最近学习中医,发现学习新知识真的太难了。在读到某个药材、经络、方剂的时候,总想到这些内容之前在哪里读过, 然后往前翻,而且时长找不到。

于是乎,想到了 Obsidian,想到了知识图谱,想到了 AI 自动生成知识图谱。

整体的方案就是:

  1. 1. 使用 Obsidian 转录数据

  2. 2. 使用 AI 自动解析成 Wiki 格式

  3. 3. 使用 Obsidian 的双线连接和图谱来发辅助学习

先看一下效果:

配合 Obsidian 自带的图谱功能,还可以看到漂亮的知识图谱,

大家可以根据自己的需要设置下节点颜色,

实现

原理也很简单,让 AI 把自己笔记的内容转换成需要的Wiki模式即可。

提示词

首先分享一下提示词:

你是一个 Obsidian 笔记处理助手,识别下面内容中出现的中药材、药方,添加 wiki 链接,并使用如下要求返回:

1. 原文中的药材名和经脉名称用 [[]] 包裹,返回原文
2. 请不要删除原文中出现的任何文字

下面是示例:
# 原文
附子去脏腑之沉寒,浮而不降。治三阴之厥逆,走而无踪。反本固阳,童便煮用。干姜暖中,除寒邪腹痛,兼治呕吐。

# 回答

[[附子]]去脏腑之沉寒,浮而不降。治三阴之厥逆,走而无踪。反本固阳,童便煮用。[[干姜]]暖中,除寒邪腹痛,兼治呕吐。

提示词很简单,直接说出来你的需求即可,然后使用少样本提示给AI举例。

模型选择

对于文本的处理,我测试下来几乎所有的模型都能很好处理,比如:

  • • GPT-3.5, GPT4o

  • • Gemini

  • • 智谱 GLM4

  • • 通义千问

  • • 讯飞星火

对于 Kimi 等其他我没有 Key 的模型,我测试了下网页版,效果也挺好。

大模型发展 2024 第二季度以来,我们能明显感觉到国内外所有的大模型发展速度变慢了,设置有种停滞的感觉, 从另一个方面也说明,国内外大模型已经比较成熟了,对于日常的个人和企业应用已经基本能满足。所以大部分时候,我们普通人不需要再去对比模型,哪个顺手用哪个,简单测试下够用就可以了,放下更多的经历在自己的业务上。

Obsidian 插件

在 Obsidian 里面实现我需求最近的方案就是写一个插件。

大家不要觉得写插件是很复杂的事情,从官网下载模板按照文档一步一步来,其实很简单。

下面给出中文和英文的教程:

  • • Obsidian PLugin[1]

  • • Obsidian 插件入门指南[2]

大家跟着来就行,我讲一下模板之外我们要做的事情。

注册指令

首先默认注册一个指令,这样就可以使用命令面板调用你的程序了。

import { Plugin } from "obsidian";

export default class ExamplePlugin extends Plugin {
  async onload() {
    this.addCommand({
      id"shuyi-wikilize-zhongyi",
      name"数翼 Wikilize 中药",
      callback: () => {
        // 这里写你的代码
      },
    });
  }
}
快捷键 如果这个操作经常用的话,其实使用快捷键更简单一些,不过为了录视频,快捷键显示不出来。

Obsidian 文本处理

获取当今笔记的内容可以使用 editor.getValue() 方法。

获取当前笔记的选中内容,可以使用 editor.getSelection() 方法。

AI的结果我这里就直接替换选中文字,如果没有选中文字,就追加到当前笔记,使用 editor.replaceSelection 即可。

// 调用你的 AI
const result = await chat.sendMessageStream(prompt);
for await (const item of result.stream) {
  editor.replaceSelection(item.candidates[0].content.parts[0].text)
}

认证

如果只是本地自己用不需要发布,我们可以把认证的 API Key 放到 代码里面,直接调用即可。

如果想发布,可以加一个插件配置项:

new Setting(containerEl)
  .setName('Your API Key')
  .setDesc('Your api key')
  .addText(text => text
    .setPlaceholder('Enter your api key')
    .setValue(this.plugin.settings.apiKey)
    .onChange(async (value) => {
      this.plugin.settings.apiKey = value;
      await this.plugin.saveSettings();
    }));

至此,我们就可以在 Obsidian 使用命令面板来调用插件,自动处理文本了。

引用链接

[1] Obsidian PLugin: https://docs.obsidian.md/Plugins/Getting+started/Build+a+plugin
[2] Obsidian 插件入门指南: https://luhaifeng666.github.io/obsidian-plugin-docs-zh/zh2.0/getting-started/


【声明】内容源于网络
0
0
数翼
专注 AIGC 人工智能知识传播和实践
内容 228
粉丝 0
数翼 专注 AIGC 人工智能知识传播和实践
总阅读154
粉丝0
内容228