Skip to content

Knowledge Base API 文档

接口一览与请求示例,方便本地调试和集成。

Base URLhttp://127.0.0.1:5000

通用响应结构

除静态页面外,API 响应统一包装为:

{
  "total": 1,
  "code": 200,
  "data": {},
  "pageIndex": 1
}
  • code:HTTP 对应状态码
  • data:实际业务数据
  • total:结果总数(服务端按数据类型推断)
  • pageIndex:页码,默认 1

错误示例:

{
  "total": 0,
  "code": 400,
  "data": {
    "error": "query is required"
  },
  "pageIndex": 1
}

1. 健康检查

GET/health
data 示例:
{
  "ok": true,
  "message": "alive"
}

1.1 会话

默认使用 Redis 原子自增生成会话 ID,可确保同一用户在高并发/多实例下不重复;若 Redis 不可用,服务会回退到内存生成(进程内唯一)。

GET/session
参数(query string):
  • user_id / userId (string, 必填)
data 示例:
{
  "ok": true,
  "user_id": "user-001",
  "session_id": "d8f4..."
}
POST/session
请求体(JSON):
{
  "user_id": "user-001"
}
data 示例:
{
  "ok": true,
  "user_id": "user-001",
  "session_id": "d8f4..."
}

2. 查询问答

支持 GET /queryPOST /query

2.1 GET /query

GET/query
参数(query string):
  • query (string, 必填)
  • k (int, 默认 2)
  • relevance_threshold (float, 可选)
  • model_config_id (int, 可选,优先使用指定模型配置)
  • model_config_name (string, 可选,按名称匹配模型配置)
  • use_default_model_config (bool, 默认 true)
  • llm_model (string, 兼容字段,当前不作为模型选择依据)
  • generate_answer (bool, 默认 true)
  • deep_think (bool, 默认 true)
  • temperature (float, 默认 0.2)
  • max_tokens (int, 可选,默认取 config.jsonknowledge_base.chat.max_tokens)
  • user_id / userId (string, 可选)
  • session_id / sessionId (string, 可选,未传且有 user_id 时自动生成)
  • stream (bool, 可选,true 启用 SSE 流式返回)
  • pageIndex (int, 可选)

模型调用仅通过数据库模型配置执行:优先 model_config_id,其次 model_config_name,最后默认配置;若未配置可用模型,接口会返回错误。

stream=true 时,响应为 SSE(text/event-stream)。

若传入 user_id 但未传 session_id,服务端会生成新的 session_id 并在响应里返回。

2.2 POST /query

POST/query
请求体(JSON):
{
  "query": "如何重置密码?",
  "k": 2,
  "relevance_threshold": null,
  "model_config_id": null,
  "model_config_name": null,
  "use_default_model_config": true,
  "llm_model": null,
  "generate_answer": true,
  "deep_think": true,
  "temperature": 0.2,
  "max_tokens": 512,
  "user_id": "user-001",
  "session_id": "",
  "stream": false,
  "pageIndex": 1
}
data 示例:
{
  "answer": "...",
  "finish_reason": "stop",
  "is_complete": true,
  "session_id": "d8f4...",
  "user_id": "user-001",
  "thinking_summary": "...",
  "relevance_threshold": 1.2,
  "threshold_relaxed": false,
  "messages": [
    {"role": "system", "content": "..."},
    {"role": "user", "content": "..."},
    {"role": "assistant", "content": "..."}
  ],
  "results": [
    {
      "distance": 0.1023,
      "filename": "account_guide.md",
      "similarity": 0.9072,
      "text": "命中分片全文...",
      "preview_text": "命中分片预览(最多约 240 字)..."
    }
  ]
}

启用 stream=true 时,响应为 SSE,事件包含:

  • meta:包含 resultssession_iduser_id
  • thinking_delta:思考过程增量文本,字段 delta
  • delta:增量文本,字段 delta
  • done:完成事件,包含 answerfinish_reasonthinkingthinking_summary

当启用深度思考且模型提供摘要时,返回 thinking_summary;否则为空或不返回。

前端调用示例(SSE):
fetch('/query?stream=1', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Accept: 'text/event-stream',
  },
  body: JSON.stringify({
    query: '如何重置密码?',
    user_id: 'user-001',
    session_id: '',
    stream: true,
  }),
});

3. 文档管理

3.1 新增文本文档

POST/kb/document
请求体:
{
  "filename": "guide.md",
  "text": "文档内容"
}
data 示例:
{
  "ok": true,
  "chunks_added": 3
}

3.2 上传文件

POST/kb/file
Content-Type:multipart/form-data
字段:
  • file (file, 必填)
  • filename (string, 可选)
  • encoding (string, 可选)
  • pageIndex (int, 可选)
也支持 JSON 方式:
{
  "filename": "notes.txt",
  "text": "..."
}

返回结构与 POST /kb/document 类似。

3.3 批量上传文件

POST/kb/files
Content-Type:multipart/form-data
字段:
  • files (file, 必填,可多选)
  • encoding (string, 可选)
  • pageIndex (int, 可选)

3.4 删除单个文档

DELETE/kb/document/{filename}
data 示例:
{
  "ok": true,
  "chunks_removed": 5
}

3.5 获取文档列表

GET/kb/documents
data 示例:
{
  "ok": true,
  "count": 2,
  "documents": [
    {
      "filename": "guide.md",
      "chunk_count": 3,
      "char_count": 1200
    }
  ]
}

3.6 获取知识库统计

GET/stats
data 示例:
{
  "ok": true,
  "stats": {
    "document_count": 2,
    "chunk_count": 8,
    "dimension": 1024,
    "index_total": 8,
    "embedding_model": "Qwen/Qwen3-Embedding-0.6B",
    "reranker_model": "Qwen/Qwen3-Reranker-0.6B",
    "chat_model": "gpt-oss-20b",
    "use_lm_studio_chat": true
  }
}

3.7 清空知识库

DELETE/kb
data 示例:
{
  "ok": true
}

3.8 获取分片列表

GET/kb/chunks
参数(query string):
  • pageIndex (int, 可选,默认 1)
  • pageSize (int, 可选,默认 20)
  • filename (string, 可选)
  • q (string, 可选,关键词搜索)
data 示例:
{
  "ok": true,
  "count": 2,
  "chunks": [
    {
      "id": 0,
      "filename": "guide.md",
      "text": "...",
      "char_count": 320
    }
  ]
}

3.9 修改分片

PUT/kb/chunk/{id}
请求体(JSON):
{
  "text": "更新后的分片内容"
}
data 示例:
{
  "ok": true
}

3.10 删除分片

DELETE/kb/chunk/{id}
data 示例:
{
  "ok": true
}

3.11 重建文件分片

POST/kb/chunks/rebuild
请求体(JSON):
{
  "filename": "guide.md"
}
data 示例:
{
  "ok": true,
  "chunks_added": 3
}

4. 历史记录

4.1 查询历史

GET/history
参数:limit (int, 可选), action (string, 可选), group_by_session (bool, 可选), pageIndex (int, 可选)

group_by_session=true 时返回 sessions,否则返回 history

data 示例:
{
  "ok": true,
  "sessions": [
    {
      "session_id": "session-user-001-1",
      "first_query": "如何重置密码?",
      "timestamp": "2026-02-15T03:20:10+00:00",
      "user_id": "user-001",
      "count": 2,
      "items": [
        {
          "id": 1,
          "action": "query",
          "request": {"query": "如何重置密码?"},
          "response": {
            "answer": "...",
            "results": [
              {
                "filename": "account_guide.md",
                "similarity": 0.91,
                "text": "命中分片全文...",
                "preview_text": "命中分片预览..."
              }
            ]
          }
        }
      ]
    }
  ]
}

4.2 清空历史

DELETE/history
data 示例:
{
  "ok": true,
  "removed": 12
}

4.3 删除单条历史

DELETE/history/{id}
data 示例:
{
  "ok": true,
  "removed": 1
}

4.4 删除整个会话

DELETE/session/{session_id}
data 示例:
{
  "ok": true,
  "removed": 1
}

5. 模型配置管理

以下接口依赖数据库后端;若未启用数据库,接口会返回不可用提示。

5.1 获取 Provider 列表

GET/model/providers
data 示例:
{
  "ok": true,
  "providers": [
    {"name": "lm_studio", "base_url": "http://localhost:1234/v1", "requires_api_key": false},
    {"name": "openai", "base_url": "https://api.openai.com/v1", "requires_api_key": true}
  ]
}

5.2 查询配置列表

GET/model/configs
参数(query string):provideris_activemodel_type(均可选)

5.3 新增配置

POST/model/config
必填字段:nameproviderbase_urlmodel_name

5.4 查询单个配置

GET/model/config/{id_or_name}

5.5 更新配置

PUT/model/config/{id}

5.6 删除配置

DELETE/model/config/{id}

5.7 默认配置

GET/model/config/default
POST/model/config/{id}/default

5.8 测试配置与初始化预设

POST/model/config/test
POST/model/config/bootstrap

6. 前端与文档路由

  • GET /GET /ui:前端页面
  • GET /ui/app.cssGET /ui/app.js:前端静态资源
  • GET /assets/*:图片等静态资源
  • GET /api-docsGET /docs:接口文档