基于 seekdb 搭建知识库桌面应用
本教程将引导您快速上手使用 seekdb 构建 MineKB(Mine Knowledge Base,个人本地知识库)桌面应用,展示如何通过向量搜索和大语言模型实现智能问答。
概述
应用的核心特性:
- 多项目管理:支持创建多个独立的知识库项目。
- 文档处理:支持 TXT、MD、PDF、DOC、DOCX、RTF 等多种格式,自动进行文本提取和向量化。
- 智能搜索:基于 seekdb 的向量索引(HNSW),实现高效的语义搜索。
- 对话问答:通过 AI 对话的方式查询知识库,获得基于文档内容的精准回答。
- 本地存储:所有数据存储在本地,保护隐私安全。
应用选择 seekdb 的原因:
- 嵌入式部署:作为库嵌入应用,无需独立服务。
- 原生向量支持:内置 vector 类型和 HNSW 索引,向量搜索性能提升 10-100x。
- All-in-One:同时支持事务、分析和向量搜索,一个数据库满足所有需求。
- SQL 接口:标准 SQL 语法,开发友好。
前提条件
环境要求
开发和运行知识库桌面应用需要满足以下环境:
- 操作系统:支持 Linux,推荐 Ubuntu 20.04+。
- Node.js:支持 16.x+,用于前端开发,推荐 18.x LTS。
- Rust:支持 1.70+,Tauri 依赖,推荐 1.75+。
- Python:支持 3.x+,推荐 3.9+。
技术栈和依赖包
- 前端技术栈(详见
package.json)@tauri-apps/api:Tauri 前端 API,用于调用 Rust 命令@radix-ui/*:无障碍 UI 组件库react-markdown:Markdown 渲染react-syntax-highlighter:代码高亮lucide-react:图标库
- 后端技术栈(详见
Cargo.toml)tauri:Tauri 框架核心tokio:异步运行时reqwest:HTTP 客户端(调用 AI API)pdf-extract、docx-rs:文档解析nalgebra:向量计算
Python 依赖(详见 requirements.txt)
seekdb==0.0.1.dev4
安装 seekdb
确保已安装 seekdb,并验证安装成功:
pip install seekdb -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 验证安装:
python3 -c "import seekdb; print(seekdb.__version__)"
API KEY 配置
提示
开通阿里云百炼大模型服务需要您跳转至第三方平台完成。此操作将遵循第三方平台的收费规则,并可能产生相应费用。请在继续前,访问其官网或查阅相关文档,确认并接受其收费标准。如不同意,请勿继续操作。
MineKB 需要阿里云百炼 API 来提供 Embedding 和 LLM 服务。注册阿里云百炼账号,开通模型服务并获取 API 密钥。
获取 API Key 后,将 API Key 填入配置文件:src-tauri/config.json
{
"api": {
"dashscope": {
"api_key": "<sk-your-api-key-here>",
"base_url": "https://dashscope.aliyuncs.com/api/v1",
"embedding_model": "text-embedding-v1",
"chat_model": "qwen-plus"
}
},
"database": {
"path": "./mine_kb.db",
"name": "mine_kb"
}
}
提示
- 通义千问 LLM 提供了一定的免费使用额度。使用过程中请关注免费额度使用情况,超出将会产生费用。
- 本教程以通义千问 LLM 为例来介绍问答机器人的搭建,您也可以选择使用其他 LLM 进行搭建,选用其他 LLM 需要更新
src-tauri/config.example.json文件中的apiKey、model和baseUrl参数。
本地运行应用
步骤一:编译和启动
-
clone 项目并安装依赖
# 克隆项目
git clone https://github.com/ob-labs/mine-kb.git
cd mine-kb
# 安装前端依赖
npm install
# 安装 Python 依赖
pip install seekdb==0.0.1.dev4 -i https://pypi.tuna.tsinghua.edu.cn/simple/ -
配置 API Key:
cp src-tauri/config.example.json src-tauri/config.json
# 编辑配置文件,填入你的 API Key
nano src-tauri/config.json -
启动应用
npm run tauri:dev
当用户启动 MineKB 应用时,系统会依次执行以下初始化流程:
- 应用初始化(代码详见:
src-tauri/src/main.rs)- 初始化日志系统