[Feature] 功能建议:支持 Obsidian 知识库作为生成数据集时的语境参考层
背景与痛点
现有的工作流是线性的:上传文档 → 切片 → 生成 QA。这个流程对单篇文档的覆盖没问题,但在实际使用中有一个结构性缺陷——
LLM 在生成每组 QA 时,只能看到当前切片,完全不知道:
- 这个知识点在整个领域体系中处于什么位置
- 这个概念与其他概念有什么关联(例如"鸡新城疫免疫逃逸"和"疫苗设计"之间的推理链)
- 哪些问题已经在其他切片中被覆盖,哪些盲区还没有被提问到
结果是:生成的问题容易浅表、重复,缺少跨概念推理,这恰恰是微调数据集质量的核心短板。
为什么选择 Obsidian 知识库
很多用 Easy Dataset 做专业领域微调的用户(尤其是一人小团队),已经在用 Obsidian 维护自己的领域知识笔记。这些笔记不是原始文献,而是经过个人消化和整理的结构化知识图谱,包含:
- 概念之间的
[[双链]]关系 - 个人对领域的理解框架和推理路径
- 原始素材与提炼结论之间的层级关系
如果生成 QA 时能引用这层知识,生成的问题会更有深度,答案推理链会更完整,数据集的微调效果会有质的提升。
建议的实现方向
核心思路很简单:在项目设置中增加一个可选的"知识库语境"配置项,当用户开启后,生成问题和答案时将相关知识注入系统提示词。
接入方式建议支持两种,代价都不高:
方式一:直接读取 .md 文件夹
用户指定一个本地目录路径(比如 Obsidian vault 的 wiki/ 子目录),Easy Dataset 按需读取相关 .md 文件内容,解析 [[wikilink]] 引用关系,在生成时将语境文本拼入 prompt。这个方案零依赖,纯文件读取,实现最简单。
方式二:通过 Obsidian Local REST API 插件调用 Obsidian 有一个官方社区插件叫 Local REST API(装机量超 30 万),在本地起一个 HTTPS 服务,可以搜索笔记内容、读取文件、查询链接关系 。用户只需在 Obsidian 里装好这个插件,Easy Dataset 就能通过 HTTP 调用它——不需要读文件系统权限,也天然支持 Obsidian 的搜索语法。这个方案对 Obsidian 用户体验更好,尤其是需要模糊查找和按关键词语境检索的场景。
两种方式可以并行支持,用户在设置里选一种,互不干扰。
最小可行版本(避免过度设计)
不需要一开始就做得很复杂,最小版本只需要:
- 项目设置里新增"知识库语境"开关和路径/API 地址配置
- 生成时按当前切片的关键词,从知识库中捞取最相关的几段内容
- 把这些内容作为额外上下文拼入系统提示词
不需要向量检索,不需要 embedding,基于关键词的简单匹配就已经比现在强很多了。
使用场景举例
我在做一个兽医领域 LLM 的微调数据集,用 Obsidian 维护了禽病诊断推理的知识图谱(原始文献放 raw/,整理后的笔记放 wiki/,一个 index.md 做全局索引)。现在每次生成 QA,LLM 完全不知道"鸡传染性法氏囊病"和"免疫抑制"之间的关联(鸡传染性法氏囊病造成鸡的严重免疫抑制),生成的问题停留在症状描述层面,无法触及鉴别诊断推理链。如果能把 wiki 里相关条目注入进去,生成的数据集质量会完全不同。
总结
这个功能不改变现有工作流,完全向后兼容,只是给有知识库的用户多了一个可选的增强层。对于做专业领域微调的用户来说,这可能是比增加导出格式更有价值的功能。
Source: ConardLi/easy-dataset