知识库

旗鱼的知识库让你可以导入文档建立私有知识库,AI 能够检索其中的内容来回答问题。同时 AI 有多级记忆系统,能记住你教给它的信息。

导入文档

支持的格式

格式 扩展名 说明
Markdown .md 最佳格式,保留结构信息
纯文本 .txt 适合日志、笔记等
PDF .pdf 自动提取文本内容
Word .docx 自动提取文本和表格

导入方式

  1. 点击左侧边栏的 知识库图标
  2. 点击「导入文档」
  3. 选择要导入的文件(可多选)
  4. 等待处理完成

处理过程包括:

  • 文档分段:将长文档切分成语义完整的小段落
  • 向量嵌入:为每个段落生成向量表示(使用本地嵌入模型)
  • 建立索引:构建向量索引 + 关键词索引(和向量放在同一份数据里),支持语义搜索和关键词搜索双通道检索

全部本地处理

文档的处理完全在本地进行,使用内置的嵌入模型(Transformers.js),不会上传到任何外部服务。你的数据始终留在自己的电脑上。

导入建议

  • 选择有价值的文档:项目文档、运维手册、团队规范等高频查阅的内容
  • 保持文档更新:文档内容变化后,删除旧版重新导入
  • Markdown 效果最好:标题层级清晰的 Markdown 文档,分段质量最高
  • 避免过大文件:单个文件建议不超过 10MB,过大文件处理时间较长

使用知识库

导入文档后,AI 在执行任务时会自动检索知识库中的相关内容来辅助回答。你也可以主动让 AI 查询:

根据知识库中的内容,我们的部署流程是什么?
知识库里有没有关于数据库备份的文档?
查一下我们的 API 文档中关于用户认证的部分

检索原理

当 AI 需要查找信息时,会同时使用两种检索方式:

  • 语义搜索:理解问题的含义,找到语义相近的内容(即使用词不同也能找到)
  • 关键词搜索(BM25):精确匹配关键词,适合查找特定名称、配置项等

两种结果会融合排序,取最相关的内容注入到 AI 的上下文中。

三级记忆系统

旗鱼的 AI 有三级记忆,模拟人类记忆的工作方式:

L1 — 任务记忆(短期记忆)

最近几次任务的完整对话记录,直接保留在上下文中。就像刚做完的事,你还记得每句话。

  • 自动管理,不需要手动操作
  • 越近期的任务记录越完整,越早期的越精简
  • 5 级渐进式压缩:从完整对话到一句话摘要,在 token 预算内最大化信息保留

L2 — 知识文档(长期事实记忆)

你主动教给 AI 的信息,或 AI 自己总结的重要事实。每次对话时自动加载到上下文中。

比如你告诉 AI:

记住:我们的生产数据库地址是 10.0.1.50:3306,用户名是 app_user

以后在任何对话中,AI 都会自动知道这个信息。

组织方式:

  • 按上下文维度组织——每台服务器有独立的「主机画像」,记录该服务器的系统信息、安装的软件、网络配置等
  • 无终端模式下按用户维度组织,记录你的个人偏好和工作习惯
  • 只保留高频复用的核心事实,每条信息都值得花 token 自动注入

什么适合存入 L2:

适合 不适合
服务器 IP、端口、密码 一次性的排查过程
项目部署流程 临时的测试数据
团队编码规范 完整的日志内容
常用命令别名 具体某次操作的细节

L3 — 对话记录(情景记忆)

完整的历史对话记录永久保存。AI 可以通过搜索工具主动检索。就像需要“想一想”才能回忆的完整经历。

你: 上次我们修复 nginx 502 错误是怎么做的?
AI: [搜索历史对话记录,找到相关记录并汇总]

L2 和 L3 的区别:

  • L2 提供事实(「nginx 监听 8080 端口」),每次自动加载
  • L3 提供经验(「上次怎么排查的」),按需搜索加载
  • 有了 L3 兜底,L2 不需要记录所有细节,只保留核心事实即可

知识库管理

在知识库面板中可以:

  • 查看已导入的文档列表和状态
  • 搜索知识库中的内容,验证检索效果
  • 删除不需要的文档(释放存储空间)

CLI 操作

也可以通过命令行管理知识库:

sailfish knowledge:list      # 查看已导入文档
sailfish knowledge:search "关键词"  # 搜索知识库

需先安装 sailfish 命令(设置 → 数据管理);开发仓库可用 npm run sailfish --。