Skip to content

介绍

WIKI知识库是一个本地优先的开源知识库服务,融合向量检索、重排与对话式问答能力,内置轻量 HTTP API 与 Web 控制台,支持 SSE 流式响应,适合构建私有化知识问答应用。

亮点

  • 本地私有化存储,向量索引与分片持久化。
  • 检索 + 重排流程提升回答相关性。
  • SSE 流式响应,适配聊天场景。
  • 支持 user_idsession_id 的上下文会话。
  • 文档导入(单文档、批量上传、目录重建)。
  • 分片管理(查看、编辑、删除、重建)。
  • 多模型支持,兼容 OpenAI、DeepSeek、Qwen、Doubao、xAI、Gemini、Kimi、LM Studio 等。

功能点对比表

功能模块开源社区版商业授权版(规划/已实现)
本地知识库存储
FAISS 向量检索
文档导入/批量上传
文档识别仅文字识别支持 DOC 文档与图片/PDF/OFD 的 OCR(paddleOCR 或 Qwen/Qwen2-VL-2B-Instruct)
文档分片固定长度分片语义分片(按内容语义自动切分)
重排(Rerank)
多模型支持
SSE 流式响应
Web UI
API 接口
用户/会话上下文
Redis 高并发支持
权限与多用户-✅(企业/团队多用户与权限管理)
文档语义分片-✅(按语义自动切分,提升检索效果)
MCP 能力(模型上下文协议)-✅(支持多模型/多后端统一调度)
插件/扩展机制-✅(支持自定义插件与扩展)
企业级安全-✅(更细粒度权限、审计、加密等)
商业技术支持-
SLA 服务保障-
专属定制开发-

架构

text
client (web/app.js)
 |
 v
HTTP API (src/api.py)
 |
 +-- store (src/store)
 |     +-- db (history, session)
 |     +-- redis (session)
 |
 +-- knowledge base (src/knowledge_base.py)
        +-- embeddings
        +-- FAISS index
        +-- reranker
        +-- LLM chat

快速开始

1) 安装依赖

bash
pip install -r requirements.txt

2) 配置

按需修改 config.json(数据库、Redis、模型与上下文配置等)。

3) 启动服务

bash
python -m src.main

默认监听:http://127.0.0.1:5000

Web 控制台

访问 http://127.0.0.1:5000/ui/ 使用内置 Web UI。

功能概览(来自 web/):

  • 聊天页面:新建会话、历史记录、SSE 流式回答、深度思考开关、复制回答、来源查看。

聊天

聊天页面
  • 知识库管理:新增文本、上传文件、批量上传、文档列表筛选、分片管理(编辑/删除/重建)、检索参数设置、统计信息。

知识库管理

知识库管理

分片管理

分片管理
  • 模型管理:新增/编辑模型配置、启用/停用、设置默认、连通性测试、初始化预设配置。

模型管理

模型管理

页面入口:

  • GET /ui/ 聊天页面
  • GET /ui/kb.html 知识库管理
  • GET /ui/model.html 模型管理

支持的文档格式

格式开源社区版商业授权版说明
docx文本解析
doc-商业授权支持
xls文本解析
xlsx文本解析
txt文本解析
log文本解析
图片-商业授权支持 OCR
PDF仅纯文本商业授权支持 OCR
OFD仅纯文本商业授权支持 OCR

API 文档

  • 在线文档:http://127.0.0.1:5000/api-docshttp://127.0.0.1:5000/docs/
  • 仓库内接口说明:docs/API.md
  • 英文接口说明:docs/API-EN.md
  • 站内页面:/knowledge-base/api

API 文档

API 文档

配置说明

config.json 常用字段:

  • knowledge_base:Embedding/Rerank 模型与检索配置。
  • db:历史记录存储后端(memory / mysql / postgresql)。
  • session:会话 ID 存储后端(memory / redis)。
  • chat_context:上下文开关与最大轮数。
  • lm_studio:LM Studio 连接与超时配置。

支持的 AI 模型

通过 UniversalLLMClient 支持主流模型服务:

提供商示例模型配置示例
OpenAIGPT-4, GPT-3.5-Turbobase_url: https://api.openai.com/v1
DeepSeekdeepseek-chat, deepseek-coderbase_url: https://api.deepseek.com/v1
Qwenqwen-max, qwen-plusbase_url: https://dashscope.aliyuncs.com/compatible-mode/v1
Doubaodoubao-pro-32kbase_url: https://ark.cn-beijing.volces.com/api/v3
xAIgrok-betabase_url: https://api.x.ai/v1
Geminigemini-probase_url: https://generativelanguage.googleapis.com/v1beta
Kimimoonshot-v1-32kbase_url: https://api.moonshot.cn/v1
LM Studio本地模型base_url: http://localhost:1234/v1

示例见 config.multi-provider.example.json

可选解析与 OCR

如需 OCR 或 PDF Marker 能力,请安装 requirements.optional-parser.txt

配置示例文件:config.multi-provider.example.json

Embedding/Reranker 推荐配置

下表为 0.6B / 4B / 8B 模型的推荐部署配置,便于选择合适硬件与参数:

规模CPU内存GPU适用场景备注
0.6B8 核16GB可选(>= 6GB)开发/测试、中小数据本地默认规模
4B16 核32GB建议 >= 12GB生产单机、中等并发建议开启 GPU
8B24 核64GB建议 >= 24GB高质量检索/高并发GPU 必开

配置建议:

  • 规模越大,GPU 越关键;显存不足时会回退 CPU,响应显著变慢。
  • 模型缓存与向量索引建议放 SSD,降低加载和检索延迟。
  • 多实例部署时配合 Redis 作为 session 后端。

config.json 示例

0.6B(轻量默认):

json
{
  "knowledge_base": {
    "embedding": {
      "model": "Qwen/Qwen3-Embedding-0.6B",
      "device": "auto",
      "local_files_only": true
    },
    "rerank": {
      "model": "Qwen/Qwen3-Reranker-0.6B",
      "use_lm_studio": false
    },
    "retrieval": {
      "candidate_multiplier": 8,
      "min_candidates": 30,
      "embed_weight": 0.35,
      "rerank_weight": 0.65
    }
  }
}

4B(中等规模):

json
{
  "knowledge_base": {
    "embedding": {
      "model": "Qwen/Qwen3-Embedding-4B",
      "device": "cuda",
      "local_files_only": true
    },
    "rerank": {
      "model": "Qwen/Qwen3-Reranker-4B",
      "use_lm_studio": false
    },
    "retrieval": {
      "candidate_multiplier": 6,
      "min_candidates": 24,
      "embed_weight": 0.4,
      "rerank_weight": 0.6
    }
  }
}

8B(高质量/高并发):

json
{
  "knowledge_base": {
    "embedding": {
      "model": "Qwen/Qwen3-Embedding-8B",
      "device": "cuda",
      "local_files_only": true
    },
    "rerank": {
      "model": "Qwen/Qwen3-Reranker-8B",
      "use_lm_studio": false
    },
    "retrieval": {
      "candidate_multiplier": 5,
      "min_candidates": 20,
      "embed_weight": 0.45,
      "rerank_weight": 0.55
    }
  }
}

Session ID 唯一性

session.backend=redis 时,会话 ID 由 Redis 原子自增生成,可保证同一用户在高并发与多实例部署下不重复。若 Redis 不可用,会回退为内存生成(仅保证进程内唯一)。

数据与存储

  • 默认数据目录:kb_store/
  • 文档会被切分、向量化并存入 FAISS
  • 元信息以 JSON 形式保存用于检索

安全说明

  • 建议仅在可信网络内开放 API。
  • 使用 encrypt_secret.py 加密 config.json 中的密钥。

工具脚本

  • encrypt_secret.py:加密配置密钥
  • tune_threshold.py:阈值评估

构建与发布

bash
python -m build

产物位于 dist/

贡献

欢迎提交 Issue 与 PR。功能变更请同步更新文档。

许可

MulanPSL2