Skip to content

知识库问答接口

知识库问答接口

设计

  • 支持基本RAG、智能体多跳RAG、混合RAG等实现
  • 支持流式与非流式响应

实现

bash
 rag            # RAG 核心逻辑子模块
 |-- agent_rag.py   # 基于 Agent 的 RAG 实现
 |-- basic_rag.py   # 基础版 RAG 实现
 |-- controller.py  # RAG 接口控制器
 |-- hybrid_rag.py  # 混合检索 RAG 实现
 |-- prompts.py     # RAG 提示词模板定义
 |-- rag_base.py    # RAG 基础抽象类
 `-- schema.py      # RAG 接口数据模型

关键请求参数说明:app\api\v1\module_rag\rag\schema.py

image-20260213112719507

基本RAG使用示例

请求:使用基本RAG、非流式请求

json
{
  "model": "deepseek-v3.2",
  "query": "热门专业top20中,前3名有哪些?",
  "stream": false,
  "chain_type": "basic",
  "kb_ids": [
    1
  ]
}

响应:包含回答,以及相关引用的文档片段、分数等信息

json
{
  "code": 200,
  "message": "success",
  "data": {
    "retrieval_time_ms": 6495,
    "rerank_time_ms": 0,
    "generation_time_ms": 1828,
    "total_time_ms": 10609,
    "chain_type": "basic",
    "model_used": "deepseek-v3.2",
    "session_id": null,
    "answer": "根据《热门专业top20.md》,前3名依次为:  \n1. 电气工程及其自动化  \n2. 软件工程专业  \n3. 英语",
    "sources": [
      {
        "doc_id": "1",
        "title": "热门专业top20.md",
        "chunk_id": "464156524001365268",
        "content": "热门专业top20,排名分先后\n\n1、电气工程及其自动化\n\n电气工程及其自动化专业是就业的专业......",
        "score": 0.6972755789756775,
        "metadata": null
      },
      {
        "doc_id": "1",
        "title": "热门专业top20.md",
        "chunk_id": "464156524001365269",
        "content": "15、护理学专业\n\n护理学专业就业率高,特别是三甲医院和诊所。虽然工作辛苦,但就业上没有问......",
        "score": 0.6294510960578918,
        "metadata": null
      },
      {
        "doc_id": "3",
        "title": "天坑专业top10.md",
        "chunk_id": "464156524001365275",
        "content": "10大天坑专业,排名部分先后\n\n1.法学:理想丰满,现实骨感\n\n“维护正义”的初心敌不过行业的残.......",
        "score": 0.5588494539260864,
        "metadata": null
      }
    ]
  }
}

智能体RAG使用示例

请求:使用智能体RAG、流式请求

json
{
  "model": "deepseek-v3.2",
  "query": "热门专业top20中,前3名有哪些?这3个专业,西安交大2024年录取分是多少",
  "stream": true,
  "chain_type": "agent",
  "kb_ids": [
    1
  ]
}

响应:控制台日志中能看到推理与引用过程,最后流式返回最终答案

image-20260213114053372

流式响应顺序:

  • event: sources - 返回检索到的文档来源信息
  • event: token - 逐个返回生成的回答
  • event: stats - 返回统计信息
  • event: done - 返回完成标志

image-20260213114331642