edit | blame | history | raw

kb-cli

知识库 CLI 工具,支持 Obsidian 风格 Markdown 文件的图谱搜索。

功能特性

  • Vault 解析器:解析 Obsidian frontmatter、标签、实体、wikilinks
  • 知识图谱构建:文件 → 节点,标签/实体/wikilinks → 边
  • SQLite 存储:高效持久化,支持增量更新
  • FTS5 全文搜索:基于 SQLite FTS5 的快速搜索
  • 图谱评分算法:考虑标签、实体、wikilinks 权重
  • 多种输出格式:表格、JSON

安装

# 编译
make build

# 安装到 ~/go/bin
make install

# 运行测试
make test

注意:需要 CGO 和 FTS5 支持。

使用方法

搜索

# 基础搜索
kb search 充装规格

# 带扩展词
kb search 充装 --expanded 重量,规格

# 带症状词
kb search 充装失败 --symptom 报错,无法启动

# JSON 输出
kb search 充装 --json

# 限制结果数
kb search 充装 --top 5

索引管理

# 构建/重建索引
kb index build

# 查看索引状态
kb index status

全局选项

--vault    知识库路径(默认:~/aisim/note/001/笔记001)
--db       索引数据库路径(默认:~/.cache/kb-cli/kb.db)

项目结构

kb-cli/
├── cmd/              # CLI 命令
│   ├── root.go       # 根命令
│   ├── search.go     # search 命令
│   ├── index.go      # index 命令
│   └── rebuild.go    # 索引重建逻辑
├── internal/
│   ├── vault/        # Vault 解析器
│   │   ├── parser.go
│   │   ├── scanner.go
│   │   └── sections.go
│   ├── graph/        # 知识图谱
│   │   ├── model.go
│   │   └── builder.go
│   ├── index/        # SQLite 存储
│   │   ├── sqlite.go
│   │   ├── fts.go
│   │   └── cache.go
│   ├── search/       # 搜索引擎
│   │   ├── engine.go
│   │   └── scorer.go
│   └── output/       # 输出格式化
│       └── formatter.go
└── main.go

评分算法

搜索结果评分考虑:
- FTS5 rank:全文搜索相关性
- 标签匹配:标签权重 2.0
- 实体匹配:实体权重 1.5
- Wikilinks:引用关系权重 1.2
- 扩展词加成:提升相关实体权重

开发

# 运行所有测试
make test

# 详细测试输出
make test-v

# 构建并运行
make build
./bin/kb search 充装

依赖

  • Go 1.21+
  • SQLite3(带 FTS5 支持)
  • github.com/mattn/go-sqlite3
  • github.com/spf13/cobra
  • gopkg.in/yaml.v3

许可证

MIT