Skip to content

znq19/KiraKB_Plugin

Repository files navigation

KiraKB (Knowledge Base)插件使用指南

为 KiraAI 量身打造的知识库插件 —— 让数字生命们拥有长期记忆的多版本共存可检索与实时操作的知识库


✨ 插件亮点

  • 多版本管理:支持为同一知识库创建不同嵌入模型(如 BGE-M3、OpenAI)的版本,随时切换,对比效果,无需重复上传文档。
  • 智能检索:混合检索(向量 + BM25)结合重排序(可选),精准召回用户所需信息。
  • 文档全生命周期:支持上传、编辑、软删除、恢复文档,所有操作均可通过 WebUI 或聊天工具(AI 自动调用)完成。
  • OCR 支持:利用 KiraAI 的默认多模态(视觉)模型,自动识别扫描版 PDF 中的文字。
  • 后台任务:创建版本、批量向量化等耗时操作在后台运行,WebUI 实时显示进度,不阻塞主程序。
  • 权限控制:通过提示词约定,只有主人可以删除/修改知识条目,普通用户只能新增(AI 会判断信息是否有价值)。
  • 零配置启动:插件自动使用 KiraAI 主系统中配置的默认嵌入模型和视觉模型,可无需重复配置。

🤔 为什么需要「版本」与「切换」?

向量模型(嵌入模型)是将文字转化为数字向量的工具,不同的模型输出的向量维度(例如 384 维、768 维、1024 维)和语义空间都不一样。如果直接更换模型,之前用旧模型生成的向量索引将无法被新模型检索——要么维度不匹配导致程序崩溃,要么检索结果完全随机。

KiraKB 的解决方案
为同一个知识库保留多个独立版本,每个版本记录当时使用的模型名称、维度和创建时间。你可以:

  • 随时在版本间切换,不影响其他版本的数据。
  • 用新模型增量创建版本(只处理新增文档),无需重建整个知识库。
  • 对比不同模型的检索效果,选择最适合当前场景的版本激活。

这样一来,更换模型不再是“推倒重来”的噩梦,而是灵活可逆的探索过程。


📦 安装

前置条件

  • 已安装Python 3.10+
  • 已部署并成功运行 KiraAI
  • KiraAI 主系统中已配置至少一个嵌入模型(作为 default_embedding
  • (可选)如需 OCR 功能,需配置视觉模型(作为 default_vlm

安装步骤

  1. 下载插件压缩包
    从发布页下载,解压后得到 kirakB 文件夹。

  2. 放置插件
    将整个 kiraKB 文件夹复制到 KiraAI 的插件目录中:

    KiraAI项目文件夹/data/plugins/
    
  3. 安装依赖
    进入 KiraAI 的虚拟环境(如果使用),然后执行:

    pip install -r data/plugins/kiraKB/requirements.txt
  4. 重启 KiraAI
    重启后插件会自动加载。

  5. 访问管理界面
    打开浏览器访问 http://127.0.0.1:19122(端口可在插件配置中修改)。


📁 文件树

KiraKB/
├── manifest.json           # 插件元信息
├── schema.json             # 配置定义
├── requirements.txt        # Python 依赖
├── main.py                 # 插件主逻辑(LLM 工具)
├── kb_manager.py           # 知识库核心管理(版本、文档、软删除)
├── task_manager.py         # 后台任务管理
├── web_server.py           # WebUI 服务端
├── document_parser.py      # 文档解析(含 OCR)
├── vector_store.py         # 向量存储(FAISS + SQLite)
├── chunking.py             # 文本分块
├── retriever.py            # 混合检索
└── web/
    └── index.html          # 管理界面前端

⚙️ 配置

插件配置通过 KiraAI 的 WebUI 进行(主界面 → 插件管理 → KiraKB)。主要配置项:

配置项 说明 默认值
knowledge_base_dir 知识库存储根目录 data/knowledge_base
chunk_size 文档分块字符数 500
chunk_overlap 分块重叠字符数 50
default_top_k 默认检索结果数量 5
enable_hybrid_search 是否启用 BM25 混合检索 true
enable_rerank 是否启用重排序(需配置重排序模型) false
webui_port 管理界面端口 19122
webui_token 访问令牌(留空无认证)

💡 嵌入模型和视觉模型无需在插件中配置,直接使用 KiraAI 主系统的 default_embeddingdefault_vlm


🚀 快速开始

1. 创建知识库

  • 打开 WebUI (http://127.0.0.1:19122),点击 + 新建知识库,输入 ID(如 kiraai_docs),系统会自动创建目录。

2. 上传文档

  • 支持 .txt.md 文本文件,也可上传 PDF、Word、Excel、PPT(需安装 markitdown)。
  • 点击“上传”选择文件,文档会被保存为原始文本并自动向量化到当前激活版本。

3. 创建向量版本

  • 每个知识库需要至少一个版本才能检索。在右侧“版本管理”中点击 + 创建新版本
  • 填写模型名称(例如 BAAI/bge-m3)和维度(例如 1024),可选择仅处理部分文档。
  • 提交后后台开始向量化,WebUI 底部会显示进度条。完成后点击“激活”即可。

4. 测试检索

  • 在下方“检索测试”区输入问题(如“KiraAI 如何安装插件”),点击检索,查看返回的文档片段。注意:这个搜索依然是调用当前配置的默认嵌入模型,是会花费token的。

5. 让 AI 使用知识库

  • 在 KiraAI 的角色设定中添加以下提示词(示例):
## 知识库使用规则(KiraKB)
- **检索**:当用户询问 KiraAI 相关问题时,必须调用 `knowledge_search` 工具,格式:`knowledge_search(query="用户问题")`。完整采纳答案,保留链接和步骤。若工具无结果,结合常识、网络搜索回答并调侃:“资料没写,可能……自己查查?”
- **查看列表**`list_knowledge_bases` 可列出所有知识库。
- **新增**`knowledge_update_entry(content, title, kb_id)`。仅当信息有价值时调用。主人(QQ号11451415551)可无条件新增。非主人需判断有用性。
- **删改**`knowledge_delete_entry(title, kb_id)`**仅主人可执行**。非主人请求删除必须拒绝:“只有主人能删改知识库。”
- **语气**:符合人设,但核心信息完整。

之后,AI 就会在对话中自动调用知识库工具和执行你的要求。


🛠️ 详细功能指南

知识库管理(WebUI)

左侧面板 - 文档管理

  • 上传文档:支持多选,自动保存原始文件。
  • 编辑文档:点击文档旁的“编辑”按钮,可修改内容,保存后会立即重新向量化到当前激活版本。
  • 删除文档:软删除(文档保留,仅从向量索引中移除),可在“显示已删除”中恢复。
  • 显示已删除:列出所有软删除的文档,点击“恢复”即可重新向量化。

右侧面板 - 版本管理

  • 创建新版本:选择模型名称/维度,可指定包含的文档(留空表示全部)。创建过程在后台运行,不影响其他操作。
  • 激活版本:点击“激活”使该版本成为检索目标。同一时间只有一个激活版本。
  • 删除版本:只能删除非激活版本。删除后不可恢复。

底部 - 检索测试 & 任务进度

  • 实时测试当前激活版本的检索效果。注意:这个搜索依然是调用当前配置的默认嵌入模型,是会花费token的。
  • 后台任务(创建版本、批量更新)会显示进度条,可随时查看状态。

AI 工具(聊天中自动调用)

工具名 用途 示例
list_knowledge_bases 列出所有知识库及当前激活版本 AI 自动调用以确定目标知识库
knowledge_search 检索知识库 knowledge_search(query="插件开发指南", kb_id="kiraai_docs")
knowledge_update_entry 新增/更新知识条目 knowledge_update_entry(content="...", title="KiraKB 安装步骤")
knowledge_delete_entry 删除知识条目(仅主人) knowledge_delete_entry(title="旧版本说明")

注意:knowledge_update_entry 会自动判断标题是否已存在,若存在则覆盖更新;删除是软删除,可在 WebUI 恢复。

数据存储结构

data/knowledge_base/
└── kiraai_docs(示例)/                 # 知识库 ID
    ├── raw_docs/                # 原始文档(.txt + .meta.json)
    │   ├── abc123.txt
    │   └── abc123.meta.json     # 含 original_name, deleted 标记等
    ├── versions/                # 所有版本
    │   ├── BAAI_bge-m3_1734567890/
    │   │   ├── vectors/         # FAISS 索引 + SQLite 元数据
    │   │   ├── model_info.json  # 模型名称、维度、创建时间
    │   │   └── doc_chunk_map.json
    │   └── ...
    ├── info.json                # 知识库显示名称、描述
    └── current_version          # 当前激活版本 ID

📄 停用词文件(stopwords.txt)

什么是停用词?

停用词是指在检索时没有实际意义、可以忽略的常用词,例如中文的“的、了、在、是”,英文的“a、an、the、and”。在混合检索的 BM25 关键词匹配阶段,这些词会被自动过滤掉,避免它们干扰相关性评分。

为什么需要停用词?

假设用户问:“怎么安装 KiraAI 的插件?”
如果不加停用词,BM25 会计算“怎么”、“安装”、“KiraAI”、“的”、“插件”每个词的权重。“怎么”和“的”几乎出现在所有问句中,会导致无关文档被误判为相关。过滤掉它们后,只保留“安装”、“KiraAI”、“插件”,结果可能更精准——但有的时候,如果你设计知识库就是希望对“怎么办”“为什么”等提问有响应,则不应过滤。

KiraKB 中的停用词文件

  • 位置KiraAI/data/stopwords.txt(插件首次启动时会自动创建一个空文件)
  • 格式:每行一个停用词,支持中文和英文。
  • 作用范围:仅影响 BM25 关键词检索部分,不影响向量检索。

如何自定义停用词?

你可以手动编辑 data/stopwords.txt,添加你希望过滤的词。例如:

的
了
在
是
啊
哦
a
an
the
and
or
but

如果不添加任何词,停用词功能等同于关闭,不影响检索效果。

💡 停用词不是必须的,如果你发现某些高频词干扰了检索结果,可以尝试添加它们到停用词表。一般默认空文件即可。


❓ 常见问题

1. 更换嵌入模型后,旧版本还能用吗?

可以。旧版本保留在 versions/ 目录,你可以随时激活它。但新上传的文档只会向量化到当前激活版本。如果想用新模型处理所有文档,请创建新版本(选择全部文档)。

2. 上传 PDF 后没有内容?

  • 如果是扫描版 PDF,需要配置视觉模型(default_vlm)并确保 pdf2image 已安装(pip install pdf2image)。
  • 普通 PDF 无需额外配置,直接提取文字。

3. WebUI 提示“没有激活的版本”?

  • 请先创建版本(右侧“创建新版本”),然后激活它。只有激活版本才能检索。

4. 如何让 AI 知道哪些信息值得记忆?

  • 在提示词中明确:只有主人可以删除,普通用户的新增需 AI 判断价值。你可以通过对话告知 AI“这个信息有用,记下来”或“这个不用记”。

5. 知识库太大,创建版本很慢?

  • 后台任务支持进度显示,耐心等待。建议创建版本时只选择新增的文档(增量创建),避免全量重建。

6. 如何备份知识库?

  • 直接备份 data/knowledge_base/ 目录即可。恢复时复制到相同位置,重启 KiraAI 会自动加载。

7. 插件更新后数据会丢失吗?

  • 不会。数据独立于代码存储。但更新前建议备份 data/knowledge_base/

🙏 版权与致谢

本插件基于 AstrBot 知识库思路进行移植和改造,感谢原作者们的贡献。
特别感谢 KiraOS 项目在 WebUI 设计上的启发与思路,它一直是 Kira 系列插件的学习标杆与骄傲。
衷心感谢 KiraAI 开发者 xxynet 让 Kira 项目诞生与持续热情,让数字生命变得可能。

本项目作为 KiraAI 的附属插件,采用 AGPL-3.0 协议开源,允许在协议范围内自由使用、修改和分发。


享受与您的数字生命共享知识的乐趣吧! 🎉 如果遇到问题,欢迎在 KiraAI QQ交流群874381335讨论,并自行修改。因为本人技术实在太差,还请谅解,祝玩的愉快和让 Kira 变得更聪明~

About

为 KiraAI 量身打造的知识库插件 —— 让数字生命们拥有长期记忆的多版本共存可检索与实时操作的知识库

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors