benmaster82/Kwipu

Ask questions across your Markdown notes using a fully local Graph RAG engine. Built for Obsidian vaults, works with any folder of Markdown files. Extracts entity-relation triples from wikilinks & YAML frontmatter, retrieves answers via hybrid search (vector + BM25 + temporal). Multilingual. No cloud. Runs on Ollama.

它解决的问题

将您的知识保存在纯文本文件中——如 Markdown 笔记或 Obsidian 仓库——对于存储来说很棒,但很难看到联系并提出诸如“谁在参与 Project Alpha?”或“一月份的会议决定了什么?”这样的问题。Kwipu 将文档文件夹转换为可搜索、连接的图,其中笔记成为实体,笔记之间的链接成为关系,每个答案都附带精确源块的引用。

工作原理

Kwipu 读取 .md、.txt、.pdf 和 .docx 文件,并构建一个 属性图 —— 一个网络,其中每个笔记是一个节点,节点之间的连接来自两个来源:

  • 结构关系,从 YAML frontmatter(标签、角色、项目字段)和 [[wikilinks]](例如,“与 [[Bob]] 合作”变成“与...合作”关系)自动提取。这些关系记录其来源:哪个文件、哪个 frontmatter 字段或行,以及内容哈希。
  • 语义关系,由 LLM 从文本本身提取(例如,“Alice 专精于 React”获得“专精于”边)。这些关系保留到其源块的链接,以便答案可以引用它们。

图和向量持久化到存储目录。系统监视您的源文件夹:新文件触发增量插入,而编辑或删除则触发批量的完整重建。更改通过修订清单原子发布,所有组件(终端、桥接、MCP)自动重新加载新提交的生成。

当您提问时,Kwipu 使用 向量相似度、BM25 关键词搜索、时间元数据 和可选的 同义词检索(同义词检索在 --fast 模式、MCP 和桥接查询中禁用)的组合来检索相关上下文。然后 LLM 基于该上下文生成答案,并附上源块的引用。

您可以通过三个界面进行交互——它们共享相同的知识:

  • 终端(核心 CLI):提问、监视文件夹、直接打印有依据的答案。
  • 网页浏览器:交互式 3D 图可视化,您可以点击节点查看上下文卡片(frontmatter、带有来源行的链接、反向链接、LLM 关系和源块),并在 UI 中提问。
  • MCP 服务器:通过 stdio 暴露 query_graph 和 query_graph_detailed,以便 AI 客户端可以查询相同的索引。

适用人群

那些将笔记、会议记录、项目文档或研究保存在纯文本文件或 Obsidian 仓库中,并希望以对话方式查询它们的人。无论您是单独工作还是团队合作,如果您想要带来源的答案而不是原始文档,Kwipu 都适合您。仅使用终端的用户需要 Python 和 Ollama;网页界面还需要 Node.js。您可以使用本地模型完全在本地运行所有内容,或者如果您对其数据政策感到满意,可以使用云 LLM。

亮点

  • 将笔记文件夹转换为属性图 RAG 索引——无需手动标记或图建模。
  • 实体就是笔记本身:别名、重命名和路径限定名称(例如,People/Alice 与 Archive/Alice)都解析到同一个节点。
  • 答案始终基于源块,并附带引用。
  • 仅终端模式是一个完整的界面——无需浏览器或 Node.js。
  • 交互式 3D 网页可视化,带有上下文卡片,显示每个关系的精确行来源。
  • 监视源文件夹,对新文件增量更新索引;在编辑或删除时安全重建。
  • 完全本地选项使用 Ollama(例如,qwen2.5:7b + nomic-embed-text)或云默认(gpt-oss:20b-cloud)——选择在索引之前做出,远程端点需要 HTTPS,除非明确允许。
  • 支持英语、意大利语、法语、德语、西班牙语和葡萄牙语。
  • 通过终端、REST 桥接 API 和 MCP 服务器暴露相同的知识。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目