# kb-cli 知识库 CLI 工具,支持 Obsidian 风格 Markdown 文件的图谱搜索。 ## 功能特性 - ✅ **Vault 解析器**:解析 Obsidian frontmatter、标签、实体、wikilinks - ✅ **知识图谱构建**:文件 → 节点,标签/实体/wikilinks → 边 - ✅ **SQLite 存储**:高效持久化,支持增量更新 - ✅ **FTS5 全文搜索**:基于 SQLite FTS5 的快速搜索 - ✅ **图谱评分算法**:考虑标签、实体、wikilinks 权重 - ✅ **多种输出格式**:表格、JSON ## 安装 ```bash # 编译 make build # 安装到 ~/go/bin make install # 运行测试 make test ``` **注意**:需要 CGO 和 FTS5 支持。 ## 使用方法 ### 搜索 ```bash # 基础搜索 kb search 充装规格 # 带扩展词 kb search 充装 --expanded 重量,规格 # 带症状词 kb search 充装失败 --symptom 报错,无法启动 # JSON 输出 kb search 充装 --json # 限制结果数 kb search 充装 --top 5 ``` ### 索引管理 ```bash # 构建/重建索引 kb index build # 查看索引状态 kb index status ``` ### 全局选项 ```bash --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 - **扩展词加成**:提升相关实体权重 ## 开发 ```bash # 运行所有测试 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