Files
rag/docs/开发与系统模块说明.md
lacerate551 a340eaaeee docs: 重写 RAG 系统指南并重命名(移除 AgenticRAG 内容)
- 全面重写文档,反映统一编排路径和四层缓存架构
- 添加 Query Cache 修复说明和语义缓存集成文档
- 重命名 Agentic_RAG完整指南.md → RAG系统完整指南.md
- 同步更新开发与系统模块说明.md 中的引用链接
2026-06-08 16:05:43 +08:00

48 KiB
Raw Blame History

开发与系统模块说明

本文档由原《开发文档》与《模块说明》合并而成,涵盖开发环境配置、技术栈、架构以及细粒度模块说明。

第一部分:开发文档体系

RAG 知识库问答系统 - 开发文档

项目版本: v7.0.0 更新日期: 2026-06-04 文档用途: 架构说明、技术栈、部署指南

API 接口文档: 详见 后端对接规范.md


一、项目概述

1.1 项目定位

本项目是智能出题系统的核心知识服务层,为上层 Dify 工作流提供知识检索能力。系统通过 RAG检索增强生成技术实现基于企业制度文档的智能问答支持

  • 知识库问答:基于向量检索 + BM25 + Rerank 的混合检索
  • Agentic RAG智能问答流程Query Rewriting、Context Compression、Answer Grounding
  • 多轮对话:会话历史管理、代词消解
  • 网络搜索:实时信息获取(可选,需配置 Serper API

1.2 系统架构

┌─────────────────────────────────────────────────────────────────────┐
│                          前端应用层                                  │
│                    (chat-ui/ 开发测试界面)                           │
└───────────────────────────────┬─────────────────────────────────────┘
                                │ HTTP API / SSE
                                ▼
┌─────────────────────────────────────────────────────────────────────┐
│                       API 服务层 (api/)                             │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  ┌────────────┐ │
│  │   /chat     │  │    /rag     │  │ /sessions   │  │  /search   │ │
│  │ 智能聊天    │  │ SSE 流式问答│  │ 会话管理    │  │ 混合检索   │ │
│  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘  └─────┬──────┘ │
└─────────┼────────────────┼────────────────┼───────────────┼────────┘
          │                │                │               │
          ▼                ▼                ▼               ▼
┌─────────────────────────────────────────────────────────────────────┐
│                       核心能力层 (core/)                             │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │                     Agentic RAG (agentic.py)                 │   │
│  │  ┌───────────┐  ┌───────────┐  ┌───────────┐  ┌──────────┐ │   │
│  │  │  Query    │  │  检索层   │  │  Context  │  │  Answer  │ │   │
│  │  │ Rewriting │  │向量+BM25  │  │Compression│  │ Grounding│ │   │
│  │  │ 统一入口  │  │ +Rerank   │  │ Token控制 │  │ 幻觉闭环 │ │   │
│  │  └───────────┘  └───────────┘  └───────────┘  └──────────┘ │   │
│  └─────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────────┘
                                │
                                ▼
┌─────────────────────────────────────────────────────────────────────┐
│                       数据存储层                                     │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  ┌────────────┐ │
│  │  ChromaDB   │  │   .data/    │  │  SQLite     │  │ documents/ │ │
│  │  向量数据库  │  │  图片存储   │  │  会话数据   │  │  文档源    │ │
│  └─────────────┘  └─────────────┘  └─────────────┘  └────────────┘ │
└─────────────────────────────────────────────────────────────────────┘

1.3 技术栈

层级 技术 说明
API 服务 Flask + Flask-CORS RESTful APISSE 流式返回
文档解析 MinerU 3.0+ PDF/DOCX/PPTX/图片统一解析
向量检索 ChromaDB + BGE-base-zh 本地向量数据库 + 嵌入模型
关键词检索 BM25 + jieba 中文分词 + 倒排索引
重排序 BGE-reranker-base CrossEncoder 精排
大模型 Qwen (通义千问) 问答生成、查询改写、意图分析
数据库 SQLite 会话管理、知识管理

二、项目结构

├── main.py                  # 统一启动入口
├── config.py                # API 配置(需自行创建)
├── requirements.txt         # 依赖列表
│
├── api/                     # API 路由层Flask Blueprint
│   ├── __init__.py          #   create_app() 应用工厂
│   ├── chat_routes.py       #   /chat, /rag (SSE), /search
│   ├── session_routes.py    #   /sessions, /history
│   ├── auth_routes.py       #   /health, /auth/me
│   ├── kb_routes.py         #   /collections
│   ├── document_routes.py   #   /documents/upload
│   ├── sync_routes.py       #   /sync
│   ├── image_routes.py      #   /images/<id>
│   ├── feedback_routes.py   #   /feedback
│   └── response_utils.py    #   统一响应格式工具
│
├── core/                    # RAG 核心引擎
│   ├── agentic.py           #   AgenticRAG 智能问答(兼容入口)
│   ├── agentic_base.py      #   Agentic 基类与公共逻辑
│   ├── agentic_search.py    #   智能检索模块
│   ├── agentic_answer.py    #   答案生成模块
│   ├── agentic_citation.py  #   引用与来源标注
│   ├── agentic_context.py   #   上下文压缩与管理
│   ├── agentic_query.py     #   查询改写与处理
│   ├── agentic_media.py     #   富媒体处理
│   ├── agentic_quality.py   #   质量评估与幻觉检测
│   ├── agentic_meta.py      #   元信息与状态管理
│   ├── engine.py            #   检索引擎封装
│   ├── bm25_index.py        #   BM25 索引
│   ├── chunker.py           #   文本分块
│   ├── query_classifier.py  #   查询分类器
│   ├── intent_analyzer.py   #   意图分析器
│   ├── confidence_gate.py   #   置信度门控
│   ├── quality_assessor.py  #   质量评估器
│   ├── loop_guard.py        #   循环防护
│   └── reasoning_reflector.py # 推理反思器
│
├── parsers/                 # 文档解析器
│   ├── mineru_parser.py     #   MinerU 统一解析 (PDF/DOCX/PPTX/图片)
│   ├── excel_parser.py      #   Excel 专属管道
│   └── image_extractor.py   #   图片噪音过滤
│
├── knowledge/               # 知识库管理
│   ├── manager.py           #   多向量库管理器
│   ├── router.py            #   知识库路由器
│   ├── sync.py              #   同步服务
│   ├── document.py          #   文档管理
│   ├── collection.py        #   集合管理
│   ├── search.py            #   检索接口
│   ├── permission.py        #   权限控制
│   ├── processing.py        #   处理流水线
│   ├── chunk.py             #   切片管理
│   └── ...                  #   更多模块见第二部分
│
├── services/                # 业务服务
│   ├── session.py           #   会话管理 (SQLite)
│   ├── feedback.py          #   反馈系统
│   └── outline.py           #   纲要生成
│
├── auth/                    # 认证与安全
│   ├── gateway.py           #   网关认证 (DEV_MODE mock token)
│   └── security.py          #   安全防护
│
├── repositories/            # 数据仓库层
│   ├── session_repo.py      #   会话仓库(抽象接口)
│   ├── sqlite_session_repo.py  # SQLite 实现
│   └── stateless_session_repo.py # 无状态实现
│
├── data/                    # SQLite 数据库
│   ├── db.py                #   统一数据访问层
│   ├── rag_core.db          #   会话/反馈数据
│   └── knowledge.db         #   知识管理数据
│
├── .data/                   # 运行时数据
│   ├── files/images/        #   提取的图片
│   └── mineru_output/       #   MinerU 解析输出
│
├── chat-ui/                 # 前端测试界面
│   ├── index.html           #   主页面
│   ├── app.js               #   主逻辑
│   └── api-test.js          #   API 测试面板
│
├── deploy/                  # 部署配置
│   ├── Dockerfile.prod      #   生产环境 Docker
│   ├── docker-compose.prod.yml # 生产环境 Compose
│   ├── gunicorn.conf.py     #   Gunicorn 配置
│   ├── nginx.conf           #   Nginx 配置
│   └── wsgi.py              #   WSGI 入口
│
├── docs/                    # 文档
│   ├── 后端对接规范.md       #   API 接口规范 (主要)
│   ├── 开发文档.md           #   本文档
│   └── ...
│
├── scripts/                 # 工具脚本
│   └── analyze_chunks.py    #   切片分析
│
├── tools/                   # 开发工具
│   ├── chunk_analyzer.py    #   切片分析
│   ├── chunk_metrics.py     #   指标统计
│   ├── llm_evaluator.py     #   LLM 评估
│   └── export_chunks.py     #   导出切片
│
└── exam_pkg/                # 出题系统(可选)
    ├── generator.py         #   试题生成
    ├── grader.py            #   评分批阅
    ├── manager.py           #   出题管理
    ├── local_db.py          #   本地题库
    └── api.py               #   Flask Blueprint

三、Agentic RAG 流程

3.1 完整流程图

用户问题 (query)
     │
     ▼
┌─────────────────────────────────────────────────────────────┐
│  1. Query Rewriting统一入口                              │
│     - 有历史对话 → 强制改写(消歧)                           │
│     - 短查询 (<10字符) → 强制改写(扩展)                     │
│     - 其他 → LLM 判断是否需要改写                            │
└─────────────────────────────────────────────────────────────┘
     │
     ▼
┌─────────────────────────────────────────────────────────────┐
│  2. 查询分类 (QueryClassifier)                              │
│     - FACT: 事实查询 → 直接检索                              │
│     - COMPARISON: 比较查询 → 分解检索                        │
│     - META: 元问题 → 直接回答                                │
│     - REALTIME: 实时信息 → 网络搜索(可选)                   │
└─────────────────────────────────────────────────────────────┘
     │
     ▼
┌─────────────────────────────────────────────────────────────┐
│  3. 检索流程                                                 │
│     - 向量检索 + BM25 + Rerank                               │
│     - 置信度门控检查 (threshold=0.3)                         │
│     - 多维质量评估 (相关性/完整性/准确性/覆盖率)              │
└─────────────────────────────────────────────────────────────┘
     │
     ▼
┌─────────────────────────────────────────────────────────────┐
│  4. Context Compression                                      │
│     - Rerank 过滤 (score < 0.3 丢弃)                         │
│     - 去重 (相同来源+页码只保留一个)                          │
│     - Token 控制 (max=3500 tokens, max=20 条)               │
└─────────────────────────────────────────────────────────────┘
     │
     ▼
┌─────────────────────────────────────────────────────────────┐
│  5. 答案生成                                                 │
│     - 多源融合 (知识库 + 网络)                               │
│     - 来源标注                                               │
└─────────────────────────────────────────────────────────────┘
     │
     ▼
┌─────────────────────────────────────────────────────────────┐
│  6. Answer Grounding幻觉闭环                             │
│     - 幻觉检测 (推理反思器)                                  │
│     - 发现幻觉 → 补充检索 → 重新生成                         │
│     - 最多重试 1 次                                          │
└─────────────────────────────────────────────────────────────┘
     │
     ▼
┌─────────────────────────────────────────────────────────────┐
│  7. 输出                                                     │
│     - answer: 回答内容                                       │
│     - sources: 来源列表(已去重,含页码范围)                 │
│     - images/tables: 富媒体信息                              │
│     - session_id: 会话ID用于多轮对话                      │
└─────────────────────────────────────────────────────────────┘

3.2 关键配置参数

参数 说明
MAX_CONTEXT_TOKENS 3500 上下文最大 token 数
MAX_CONTEXT_COUNT 20 上下文最大条数
RERANK_THRESHOLD 0.3 Rerank 过滤阈值
MAX_GROUNDING_RETRY 1 幻觉修正最多重试次数
max_iterations 3 最大迭代检索次数

四、API 接口

详细 API 文档: 详见 后端对接规范.md

核心接口概览

接口 方法 说明
/chat POST 智能聊天
/rag POST 知识库问答SSE 流式)
/search POST 混合检索(供 Dify 调用)
/sessions GET 会话列表
/history/<id> GET 会话历史
/collections GET 向量库列表
/images/<id> GET 获取图片
/sync POST 触发同步
/health GET 健康检查

五、开发环境配置

5.1 环境准备

# 创建虚拟环境
python -m venv venv
.\venv\Scripts\Activate.ps1

# 安装依赖
pip install -r requirements.txt

5.2 配置文件

复制 config.example.pyconfig.py

# config.py - 必需配置

# 通义千问 API必需
DASHSCOPE_API_KEY = "your-api-key"
DASHSCOPE_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"
DASHSCOPE_MODEL = "qwen-flash"           # 文本模型
DASHSCOPE_VL_MODEL = "qwen-vl-plus"      # 视觉模型(图片描述)

# 兼容变量
API_KEY = DASHSCOPE_API_KEY
BASE_URL = DASHSCOPE_BASE_URL
MODEL = DASHSCOPE_MODEL

# 文档路径
DOCUMENTS_PATH = "./documents"

# 开发模式(支持 mock 用户)
DEV_MODE = True

5.3 开发模式特性

特性 说明
Mock 用户 支持 mock-token-admin 等模拟 token
本地登录 /auth/login 接口支持用户名密码登录
会话存储 SQLite 本地存储,无需外部数据库
前端界面 http://localhost:5001 直接访问测试

模拟用户列表

用户名 密码 角色
admin admin123 admin
manager manager123 manager
user test123 user

六、运行命令

6.1 启动服务

# 激活虚拟环境
.\venv\Scripts\Activate.ps1

# 启动服务
python main.py                  # 端口 5001
python main.py --port 8080      # 指定端口

6.2 同步知识库

# 通过 API 触发同步
curl -X POST http://localhost:5001/sync

# 或通过前端界面操作

七、会话管理

7.1 多轮对话流程

首次对话:
POST /rag { "message": "出差补助标准", "collections": ["public_kb"] }
    ↓
finish 事件返回 session_id
    ↓
前端保存 session_id

后续对话:
POST /rag { "message": "它有什么限制", "session_id": "xxx", "collections": ["public_kb"] }
    ↓
RAG 服务自动从 SQLite 加载历史
    ↓
Query Rewriting: "它" → "出差补助"
    ↓
生成带上下文的回答

7.2 会话相关 API

接口 说明
GET /sessions 获取用户会话列表
GET /history/<session_id> 获取会话历史
DELETE /session/<session_id> 删除会话

八、部署指南

8.1 生产环境建议

项目 建议
DEV_MODE 设置为 false
WSGI 服务器 gunicorn 或 uWSGI
反向代理 Nginx
HTTPS 配置 SSL 证书

8.2 职责边界

后端负责 RAG 服务负责
用户认证 知识库问答
权限判断 向量检索
会话管理(生产) 返回溯源
消息存储 文档处理

九、错误码说明

状态码 说明 处理建议
200 成功 -
400 请求参数错误 检查请求体格式
401 未认证 检查 Header 认证信息
403 权限不足 检查用户角色权限
404 资源不存在 检查 session_id 或资源路径
500 服务器内部错误 查看服务日志

十、相关文档


第二部分:模块规范体系

项目模块说明文档 (v7.0.0)

本项目经过大规模重构采用模块化架构。当前版本已包含细粒度多向量库权限控制、文档生命周期跟踪、本地化自动出题系统、FAQ问答闭环反馈收集以及 Agentic RAG 细粒度拆分模块。图谱模块(graph/)已完全移除。

项目架构概览

┌─────────────────────────────────────────────────────────────────────────────┐
│                              API 服务层                                      │
│                            main.py (入口)                                   │
│    (Flask 应用工厂,整合所有 Blueprint提供 REST API)                        │
└─────────────────────────────────────────────────────────────────────────────┘
         │         │         │         │         │         │         │
         ▼         ▼         ▼         ▼         ▼         ▼         ▼
┌──────────┐┌──────────┐┌──────────┐┌──────────┐┌──────────┐┌──────────┐┌──────────┐
│ RAG 核心 ││ 知识库   ││ 出题系统 ││ 安全模块 ││ 同步服务 ││ 反馈闭环 ││ 纲要生成 │
│core/     ││knowledge/││exam_pkg/ ││auth/     ││knowledge/││services/ ││services/ │
│agentic_* ││manager.py││generator ││gateway.py││sync.py   ││feedback.py││outline.py│
│engine.py ││search.py ││grader.py ││security.py│          ││          ││          │
│bm25_     ││document.py││manager.py│          ││          ││          ││          │
│index.py  ││chunk.py  ││local_db.py│          ││          ││          ││          │
│chunker.py││permission││api.py    ││          ││          ││          ││          │
│          ││processing││          ││          ││          ││          ││          │
└──────────┘└──────────┘└──────────┘└──────────┘└──────────┘└──────────┘└──────────┘
     │                                                    │
     ▼                                                    │
┌──────────────────────────┐                              │
│   多向量库管理            │                              │
│ knowledge/manager.py     │                              │
│ knowledge/router.py      │                              │
│ knowledge/collection.py  │                              │
└──────────────────────────┘                              │
                              ┌─────────────────────┼─────────────────────┐
                              │                     │                     │
                              ▼                     ▼                     ▼
                       ┌──────────┐          ┌──────────┐          ┌──────────┐
                       │会话管理  │          │题库生成  │          │会话仓库  │
                       │services/ │          │exam_pkg/ │          │repos/    │
                       │session.py│          │generator │          │session_  │
                       └──────────┘          └──────────┘          │repo.py   │
                                                                   └──────────┘

目录结构

项目根目录/
├── main.py                  # ✨ 统一启动入口(推荐)
├── config.py                # API 配置(不提交)
├── config.example.py        # API 配置模板
├── requirements.txt         # 依赖列表
├── requirements-prod.txt    # 生产环境依赖
│
├── api/                     # API 路由层Flask Blueprint
│   ├── __init__.py          #   create_app() 应用工厂
│   ├── chat_routes.py       #   /chat, /rag, /rag/stream, /search
│   ├── session_routes.py    #   /sessions, /history, /session, /clear
│   ├── auth_routes.py       #   /stats, /health, /auth/me
│   ├── audit_routes.py      #   /audit/logs
│   ├── kb_routes.py         #   /collections, /documents/sync, /kb/route
│   ├── document_routes.py   #   /documents/upload, /documents/list, 版本管理
│   ├── sync_routes.py       #   /sync, /subscribe, /notifications
│   ├── feedback_routes.py   #   /feedback/*, /reports/*, /faq/*
│   ├── image_routes.py      #   图片相关接口
│   └── response_utils.py    #   统一响应格式工具
│
├── core/                    # RAG 核心引擎
│   ├── __init__.py
│   ├── agentic.py           #   AgenticRAG 智能问答(兼容入口)
│   ├── agentic_base.py      #   Agentic 基类与公共逻辑
│   ├── agentic_search.py    #   智能检索模块
│   ├── agentic_answer.py    #   答案生成模块
│   ├── agentic_citation.py  #   引用与来源标注
│   ├── agentic_context.py   #   上下文压缩与管理
│   ├── agentic_query.py     #   查询改写与处理
│   ├── agentic_media.py     #   富媒体(图片/表格)处理
│   ├── agentic_quality.py   #   质量评估与幻觉检测
│   ├── agentic_meta.py      #   元信息与状态管理
│   ├── engine.py            #   检索引擎封装
│   ├── bm25_index.py        #   BM25 关键词索引
│   ├── chunker.py           #   语义分块器
│   ├── query_classifier.py  #   查询分类器
│   ├── intent_analyzer.py   #   意图分析器
│   ├── query_decomposer.py  #   查询分解器
│   ├── query_expansion.py   #   查询扩展
│   ├── confidence_gate.py   #   置信度门控
│   ├── quality_assessor.py  #   质量评估器
│   ├── reasoning_reflector.py # 推理反思器
│   ├── loop_guard.py        #   循环防护
│   ├── mmr.py               #   MMR 多样性排序
│   ├── cache.py             #   通用缓存
│   ├── semantic_cache.py    #   语义缓存
│   ├── adaptive_topk.py     #   自适应 TopK 选取
│   ├── llm_budget.py        #   LLM Token 预算管理
│   ├── llm_utils.py         #   LLM 调用工具
│   ├── status_codes.py      #   状态码定义
│   └── constants.py         #   全局常量
│
├── parsers/                 # 文档解析器
│   ├── __init__.py
│   ├── mineru_parser.py      #   MinerU 统一解析PDF/DOCX/PPTX/图片)
│   ├── pdf_mineru.py         #   MinerU PDF 兼容别名
│   ├── excel_parser.py       #   Excel 解析Pandas 管道)
│   ├── txt_parser.py         #   TXT 解析
│   └── image_extractor.py   #   图片提取器
│
├── knowledge/               # 知识库管理模块
│   ├── __init__.py
│   ├── base.py              #   知识库基类与公共定义
│   ├── manager.py           #   多向量库管理器
│   ├── router.py            #   知识库路由器
│   ├── collection.py        #   向量库集合管理
│   ├── document.py          #   文档管理(增删改查)
│   ├── document_versions.py #   文档版本管理
│   ├── search.py            #   知识库检索接口
│   ├── permission.py        #   权限控制
│   ├── processing.py        #   文档处理流水线
│   ├── chunk.py             #   切片管理
│   ├── index.py             #   索引管理
│   ├── sync.py              #   同步服务
│   ├── cleanup.py           #   清理与回收
│   ├── lazy_enhance.py      #   延迟增强(按需优化)
│   └── vector_store/        #   向量数据库与BM25索引
│       ├── chroma/          #   ChromaDB存储
│       └── bm25/            #   BM25索引存储
│
├── repositories/            # 数据仓库层
│   ├── __init__.py
│   ├── session_repo.py      #   会话仓库(抽象接口)
│   ├── sqlite_session_repo.py  #   SQLite 会话仓库实现
│   └── stateless_session_repo.py # 无状态会话仓库实现
│
├── exam_pkg/                # 考试系统
│   ├── __init__.py
│   ├── generator.py         #   试题生成器
│   ├── grader.py            #   评分与批阅
│   ├── manager.py           #   出题与批卷管理
│   ├── local_db.py          #   本地题库
│   └── api.py               #   Flask Blueprint (exam_bp)
│
├── services/                # 业务服务
│   ├── __init__.py
│   ├── session.py           #   会话管理
│   ├── feedback.py          #   反馈质量闭环
│   └── outline.py           #   纲要生成与推荐
│
├── auth/                    # 认证与安全
│   ├── __init__.py
│   ├── gateway.py           #   网关认证
│   └── security.py          #   输入/输出安全
│
├── storage/                 # 文件存储服务
│   ├── __init__.py
│   ├── file_fetcher.py      #   文件获取
│   └── file_provider.py     #   文件提供
│
├── data/                    # SQLite 数据库
│   ├── __init__.py
│   ├── db.py                #   统一数据访问层
│   ├── rag_core.db          #   核心数据(会话、反馈)
│   └── knowledge.db         #   知识管理(同步、大纲、版本)
│
├── tools/                   # 开发与分析工具
│   ├── chunk_analyzer.py    #   切片质量分析
│   ├── chunk_metrics.py     #   切片指标统计
│   ├── chunk_report.py      #   切片报告生成
│   ├── llm_evaluator.py     #   LLM 评估器
│   ├── export_chunks.py     #   导出切片
│   ├── clean_vector_store.py #  清理向量库
│   ├── rebuild_pdf_vectors.py # 重建 PDF 向量
│   └── upload_test_files.py #   上传测试文件
│
├── deploy/                  # 部署配置
│   ├── Dockerfile           #   开发环境 Docker
│   ├── Dockerfile.prod      #   生产环境 Docker
│   ├── docker-compose.yml   #   开发环境 Compose
│   ├── docker-compose.prod.yml # 生产环境 Compose
│   ├── gunicorn.conf.py     #   Gunicorn 配置
│   ├── nginx.conf           #   Nginx 配置
│   └── wsgi.py              #   WSGI 入口
│
├── documents/               # 知识库文档目录
├── models/                  # 本地模型目录
├── scripts/                 # 工具脚本
│   ├── analyze_chunks.py    #   切片分析
│   ├── analyze_content_list.py # 内容列表分析
│   ├── check_tables.py      #   数据表检查
│   ├── compare_embedding_models.py # 嵌入模型对比
│   ├── eval_e2e.py          #   端到端评估
│   ├── evaluate_answer.py   #   答案评估
│   ├── evaluate_rag.py      #   RAG 评估
│   ├── fix_image_paths.py   #   图片路径修复
│   ├── migrate_add_metadata.py   # 元数据迁移
│   ├── migrate_split_databases.py # 数据库拆分迁移
│   ├── migrate_version_status.py  # 版本状态迁移
│   ├── rebuild_multi_kb.py        # 重建多向量库
│   └── test_rag_questions.py      # RAG问题测试
├── tests/                   # 测试
├── chat-ui/                 # 前端界面
├── dev-ui/                  # 开发前端Vite + Vue
├── venv/                    # 虚拟环境
│

注意: 根目录下的 .py 文件大多已迁移至子包,保留仅为向后兼容。 新代码请使用子包路径导入,如 from auth.gateway import require_gateway_auth


模块详细说明

一、API 路由层 (api/)

1. api/__init__.py - 应用工厂

职责:创建并配置 Flask 应用,注册所有 Blueprint

主要功能

  • 初始化共享服务SessionManager、AuditLogger、AgenticRAG
  • 注册所有 API Blueprint
  • 可选模块按需加载

使用方式

from api import create_app

app = create_app()
app.run(host='0.0.0.0', port=5001)

2. API Blueprint 分组

Blueprint 文件 端点前缀 主要功能
auth_bp auth_routes.py - /stats, /health, /auth/me
session_bp session_routes.py - /sessions, /history, /session, /clear
audit_bp audit_routes.py - /audit/logs
chat_bp chat_routes.py - /chat, /rag, /rag/stream, /search
kb_bp kb_routes.py - /collections, /documents/sync, /kb/route
document_bp document_routes.py - /documents/upload, /documents/list
sync_bp sync_routes.py - /sync, /subscribe, /notifications
feedback_bp feedback_routes.py - /feedback/, /reports/, /faq/*
image_bp image_routes.py - 图片上传、处理相关接口
exam_bp exam_pkg/api.py /exam 出题系统相关接口

工具模块

文件 说明
response_utils.py 统一响应格式封装(成功/错误/流式响应构造)

二、核心 RAG 模块 (core/)

3. core/agentic.py - Agentic RAG 兼容入口

职责:智能问答的 Agent 决策引擎(向后兼容入口,内部委托至细粒度模块)

主要功能

  • Agent 决策循环(检索、改写、分解、回答)
  • 网络搜索集成Serper API
  • 多源结果融合
  • SSE 流式输出

关键类/函数

类/函数 说明
AgenticRAG 主类,封装所有 Agent 功能
process() 处理用户查询
chat_search() 聊天搜索(支持网络搜索)
simple_query() 简化调用接口

使用方式

from core.agentic import AgenticRAG, simple_query

# 完整模式
rag = AgenticRAG()
result = rag.process("出差补助标准是什么?")

# 简化模式
result = simple_query("出差补助标准")

4. Agentic 细粒度拆分模块

v7.0.0 将 agentic.py 的职责拆分为以下独立模块,各司其职:

模块 职责
agentic_base.py Agentic 基类与公共逻辑(配置注入、依赖初始化)
agentic_search.py 智能检索模块(向量检索 + BM25 + Rerank 编排)
agentic_answer.py 答案生成模块(多源融合、流式输出)
agentic_citation.py 引用与来源标注(来源去重、页码范围合并)
agentic_context.py 上下文压缩与管理Token 控制、去重、截断)
agentic_query.py 查询改写与处理(代词消解、查询扩展)
agentic_media.py 富媒体处理(图片/表格提取与标注)
agentic_quality.py 质量评估与幻觉检测Answer Grounding
agentic_meta.py 元信息与状态管理(计时、统计、调试信息)

5. core/engine.py - 检索引擎封装

职责:统一的检索引擎接口

主要功能

  • 向量检索
  • BM25 关键词检索
  • 混合检索 + Rerank

6. core/bm25_index.py - BM25 索引管理

职责BM25 关键词索引的构建和查询

7. core/query_classifier.py - 查询分类器

职责:对用户查询进行意图分类,辅助选择合适的检索策略

8. core/intent_analyzer.py - 意图分析器

职责:深度意图分析,识别查询类型(事实/比较/元问题/实时信息)

9. core/query_decomposer.py - 查询分解器

职责:将复杂查询分解为多个子查询并行检索

10. core/query_expansion.py - 查询扩展

职责:基于 LLM 对查询进行语义扩展,提升召回率

11. core/confidence_gate.py - 置信度门控

职责:基于置信度判断是否需要额外的检索或改写

12. core/quality_assessor.py - 质量评估器

职责:评估检索结果和生成回答的质量

13. core/reasoning_reflector.py - 推理反思器

职责:对推理过程进行反思和优化

14. core/loop_guard.py - 循环防护

职责:防止 Agent 陷入无限循环,控制最大迭代次数

15. 缓存与检索优化模块

模块 职责
mmr.py MMRMaximal Marginal Relevance多样性排序减少冗余结果
cache.py 通用缓存层,加速重复查询
semantic_cache.py 语义缓存,基于向量相似度的缓存匹配
adaptive_topk.py 自适应 TopK 选取,根据查询复杂度动态调整返回数量

16. LLM 工具模块

模块 职责
llm_budget.py LLM Token 预算管理,控制上下文与输出长度
llm_utils.py LLM 调用工具,封装 API 请求、重试与错误处理

17. 全局定义模块

模块 职责
status_codes.py 状态码定义(成功/失败/部分成功等)
constants.py 全局常量(阈值、默认参数、配置键名)

三、知识库管理模块 (knowledge/)

18. knowledge/manager.py - 多向量库管理器

职责:多向量库的创建、管理和检索

主要功能

  • 多向量库创建与管理public_kb + dept_xxx
  • 每个向量库独立的 BM25 索引
  • 并行检索多个向量库
  • RRF 融合结果

使用方式

from knowledge.manager import get_kb_manager

kb_manager = get_kb_manager()

# 创建向量库
kb_manager.create_collection('dept_finance', display_name='财务部知识库')

# 检索
results = kb_manager.search_multiple(['public_kb', 'dept_finance'], query_vector)

19. knowledge/router.py - 知识库路由器

职责:根据查询意图和用户权限智能选择目标向量库

主要功能

  • 规则匹配(关键词识别部门)
  • LLM 意图分析(复杂查询)
  • 权限过滤

20. knowledge/sync.py - 知识库同步服务

职责:自动检测文档变更并触发增量更新

21. 知识库新增模块

v7.0.0 对 knowledge/ 进行了细粒度拆分,新增以下模块:

模块 职责
base.py 知识库基类与公共定义(接口抽象、数据类型)
collection.py 向量库集合管理(创建、删除、元数据维护)
document.py 文档管理(增删改查、状态跟踪)
document_versions.py 文档版本管理(版本创建、回滚、差异对比)
search.py 知识库检索接口(统一检索入口、多策略融合)
permission.py 权限控制(用户/部门/角色维度的访问控制)
processing.py 文档处理流水线(解析 -> 分块 -> 向量化 -> 入库)
chunk.py 切片管理(切片存储、检索、元数据)
index.py 索引管理(向量索引构建与更新)
cleanup.py 清理与回收(孤立切片清理、过期数据回收)
lazy_enhance.py 延迟增强(按需优化,如懒加载索引、延迟构建 BM25

四、数据库模块 (data/)

22. data/db.py - 统一数据访问层

职责:集中管理所有数据库连接

主要功能

  • 统一数据库路径配置
  • 连接池管理(上下文管理器)
  • WAL 模式 + 外键约束
  • 自动事务管理

数据库架构

数据库 主要功能
rag_core.db 会话管理、用户反馈、FAQ
knowledge.db 知识库同步、文档版本、纲要缓存

使用方式

from data.db import get_connection, init_databases

# 初始化数据库
init_databases()

# 使用连接
with get_connection("core") as conn:
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM sessions WHERE user_id = ?", (user_id,))
    rows = cursor.fetchall()

五、出题系统模块 (exam_pkg/)

23. exam_pkg/generator.py - 试题生成器

职责:基于知识库内容自动生成试题

主要功能

  • 调用 Dify 工作流生成题目
  • 题目类型控制(选择、判断、简答等)
  • 难度分级生成

24. exam_pkg/grader.py - 评分与批阅

职责:自动批阅试卷并生成评分报告

25. exam_pkg/manager.py - 出题核心逻辑

职责:试卷生成、保存、批阅的核心业务逻辑

主要功能

  • 试卷 CRUD 操作
  • 审核流程管理
  • 自动批阅与报告生成

26. exam_pkg/local_db.py - 本地题库

职责:本地题目存储与管理

27. exam_pkg/api.py - 出题系统 API

职责:出题系统的 Flask Blueprint

API 端点

端点 方法 说明
/exam/generate-by-file POST 按文件生成题目(带溯源)
/exam/generate POST 生成试卷
/exam/list GET 获取试卷列表
/exam/<id> GET/PUT/DELETE 试卷 CRUD
/exam/grade-from-mysql POST 基于 MySQL 数据批卷

六、服务模块 (services/)

28. services/session.py - 会话管理

职责:多用户对话历史管理

主要功能

  • 会话创建与管理
  • 消息历史存储
  • 上下文压缩
  • 会话过期清理

使用方式

from services.session import SessionManager

sm = SessionManager()
session_id = sm.create_session("user_123")
sm.add_message(session_id, "user", "出差补助标准是什么?")
history = sm.get_history(session_id)

29. services/feedback.py - 反馈服务

职责:用户反馈收集与 FAQ 自动沉淀

30. services/outline.py - 纲要生成器

职责:自动生成文档结构纲要


七、认证与安全模块 (auth/)

31. auth/gateway.py - 网关认证

职责:网关注入的 Header 认证与多向量库权限控制

主要功能

  • 从 Header 读取用户信息X-User-ID、X-User-Role、X-User-Department
  • 角色映射
  • 多向量库权限控制
  • @require_gateway_auth 装饰器

网关注入的 Header

Header 说明
X-User-ID 用户唯一标识
X-User-Name 用户名
X-User-Role 用户角色
X-User-Department 部门

32. auth/security.py - 安全防护

职责Prompt 注入防护


八、数据仓库层 (repositories/)

33. repositories/session_repo.py - 会话仓库(抽象接口)

职责:定义会话持久化的抽象接口,支持多种后端实现

34. repositories/sqlite_session_repo.py - SQLite 会话仓库

职责:基于 SQLite 的会话仓库实现,适用于开发和单机部署

35. repositories/stateless_session_repo.py - 无状态会话仓库

职责:无状态会话仓库实现,会话数据由调用方管理,适用于分布式部署


九、开发与分析工具 (tools/)

工具 职责
chunk_analyzer.py 切片质量分析(覆盖率、重叠度、语义完整性)
chunk_metrics.py 切片指标统计(长度分布、数量汇总)
chunk_report.py 切片报告生成(可视化分析报告)
llm_evaluator.py LLM 评估器(基于大模型的检索质量评估)
export_chunks.py 导出切片(导出为 JSON/CSV 格式)
clean_vector_store.py 清理向量库(移除孤立向量、回收空间)
rebuild_pdf_vectors.py 重建 PDF 向量(强制重新索引指定文档)
upload_test_files.py 上传测试文件(自动化测试数据准备)

十、部署配置 (deploy/)

文件 职责
Dockerfile 开发环境 Docker 镜像构建
Dockerfile.prod 生产环境 Docker 镜像构建(多阶段构建,精简体积)
docker-compose.yml 开发环境容器编排
docker-compose.prod.yml 生产环境容器编排(含 Nginx、Gunicorn
gunicorn.conf.py Gunicorn 配置worker 数量、超时、日志)
nginx.conf Nginx 反向代理配置负载均衡、静态文件、SSE 支持)
wsgi.py WSGI 入口Gunicorn 启动点)

十一、文件存储服务 (storage/)

模块 职责
file_fetcher.py 文件获取(从远程/本地获取文件)
file_provider.py 文件提供(统一文件访问接口)

数据库文件说明

文件名 主要功能 详细文档
data/rag_core.db 会话管理、用户反馈、FAQ 数据库设计文档.md
data/knowledge.db 知识库同步、文档哈希、纲要缓存、版本管理 数据库设计文档.md
knowledge/vector_store/ 多向量库存储ChromaDB + BM25 多向量库实现权限划分.md

运行命令

# ✨ 推荐方式 - 新入口
python main.py                  # 启动 API 服务(端口 5001
python main.py --port 8080      # 指定端口

# 旧入口(仍可用)
python main.py                  # 启动统一网关与大模型 API 服务
python scripts/test_rag_questions.py  # 自动化问答自评估测试
python scripts/rebuild_multi_kb.py    # 强制重建各个部门/集合维度的知识库

相关文档


最后更新

  • 文档版本v7.0.0
  • 更新时间2026-06-04
  • 主要更新:
    • 版本号从 v6.1.0 升级至 v7.0.0
    • core/ 模块:补充 Agentic 细粒度拆分模块agentic_base/search/answer/citation/context/query/media/quality/meta、intent_analyzer、query_decomposer、query_expansion、mmr、cache、semantic_cache、adaptive_topk、llm_budget、llm_utils、status_codes、constants
    • knowledge/ 模块:补充 base、collection、document、document_versions、search、permission、processing、chunk、index、cleanup、lazy_enhance
    • services/ 模块:移除 audit.py、user_info.py仅保留 session.py、feedback.py、outline.py
    • api/ 模块:移除 graph_routes.py、question_routes.py、outline_routes.py补充 response_utils.py
    • exam_pkg/ 模块:更新为 generator.py、grader.py、manager.py、local_db.py、api.py移除 analysis.py、question_hook.py
    • 图谱模块 (graph/) 已完全移除
    • 新增 repositories/ 模块session_repo、sqlite_session_repo、stateless_session_repo
    • 新增 tools/ 模块chunk_analyzer、chunk_metrics、chunk_report、llm_evaluator、export_chunks 等)
    • 新增 deploy/ 部署配置Dockerfile.prod、docker-compose.prod.yml、gunicorn.conf.py、nginx.conf、wsgi.py
    • 新增 storage/ 文件存储服务file_fetcher、file_provider