Skip to content

KnowledgeRAG-GZHU 项目功能说明文档

项目名称:ASF-RAG(广州大学智能知识库系统) 仓库地址https://github.com/Zhongye1/KnowledgeRAG-GZHU文档版本:v2.0 · 最后更新:2026-03-25 架构模式:前后端分离 — Vue3 SPA + FastAPI REST/SSE


目录

  1. 项目概述
  2. 技术栈
  3. 项目结构
  4. 功能模块详解
  5. RAG 核心架构
  6. 后端 API 接口总览
  7. 路由与页面地图
  8. 模型配置参考
  9. 本地部署指南

一、项目概述

KnowledgeRAG-GZHU(ASF-RAG)是一套面向个人与团队知识管理的 AI 增强型知识库系统,核心能力是将用户自有文档与大语言模型(LLM)相结合,通过 RAG(检索增强生成) 技术实现对私有知识库的精准问答。

核心理念

用户私有文档 → 向量化存储 → 混合检索(BM25 + FAISS)→ LLM 生成回答 → 引用溯源

主要特性

特性说明
🔍 混合检索BM25 关键词 + FAISS 语义向量双路检索,RRF 融合排序
🤖 双模式问答普通 RAG(强制检索)+ ReAct Agent(自主推理)可切换
📊 知识图谱自动提取文档实体与关系,Sigma.js 可视化
💬 多轮对话基于 Ollama 的本地对话,支持 RAG 增强模式
🔗 URL 内容导入一键导入网页链接至知识库
👤 完整用户系统JWT 认证、QQ 第三方登录、邮件密码重置
📚 三级权限体系个人 / 共享 / 广场三种知识库模式
🏃 任务自动化ReAct Agent 自然语言任务输入,自动拆解执行

二、技术栈

前端

分类技术 / 库版本
框架Vue 3^3.4.21
构建Vite^5.2.8
语言TypeScript^5.4.4
UI 组件库TDesign Vue Nextlatest
聊天组件@tdesign-vue-next/chat^0.4.3
状态管理Pinia^3.0.3
路由Vue Router^4.5.1
HTTPAxios^1.11.0
图形可视化Sigma.js + Graphology^3.0.2 / ^0.26.0
Markdown 渲染marked + highlight.js + DOMPurify
样式TailwindCSS + Less
打字机效果vue-typewriter-effect^1.0.1
ID 生成uuid^11.1.0

后端

分类技术 / 库版本
框架FastAPI0.116.1
ASGIUvicorn0.35.0
AI 框架LangChain + LangChain-Community0.3.27
LLM 接入LangChain-Ollama0.3.6
向量数据库FAISS (CPU)>=1.12.0
Embeddingsentence-transformers (HuggingFace)>=5.1.0
数据库MySQL (PyMySQL)1.1.1
认证PyJWT (HS256)2.10.1
文档解析pdfplumber / PyPDF2 / python-docx / pytesseract / camelot-py
图像处理Pillow11.3.0
爬虫解析BeautifulSoup4 / Requests
数据验证Pydantic2.11.7
环境变量python-dotenv1.1.1
桌面封装PyQt5(可选,系统托盘)

三、项目结构

KnowledgeRAG-GZHU/
├── RagFrontend/                   # Vue3 前端应用
│   ├── src/
│   │   ├── main.ts                # 应用入口
│   │   ├── App.vue                # 根组件(左右布局)
│   │   ├── router/
│   │   │   └── index.ts           # 路由定义 + JWT 守卫
│   │   ├── store/
│   │   │   ├── index.ts           # Pinia 实例
│   │   │   └── modules/
│   │   │       ├── useCardData.ts # 知识库卡片 Store
│   │   │       ├── useChatImg.ts  # 聊天图片 Store
│   │   │       └── useDataUser.ts # 用户数据 Store
│   │   ├── utils/
│   │   │   ├── apiConfig.ts       # 所有 API 端点集中配置
│   │   │   ├── ASFaxios.ts        # Axios 封装(自动携带 JWT)
│   │   │   └── ollamaApi.ts       # Ollama 服务单例 API
│   │   ├── views/
│   │   │   ├── KnowledgePages/    # 知识库相关页面
│   │   │   │   ├── KnowledgeBase.vue         # 知识库列表主页
│   │   │   │   ├── KnowledgeDetail.vue       # 知识库详情页
│   │   │   │   ├── knowledge-setting-card.vue# 知识库高级设置
│   │   │   │   └── knowledge_graph_setting.vue# 图谱参数配置
│   │   │   ├── Chat.vue           # 多轮对话聊天页
│   │   │   ├── Agent.vue          # ReAct Agent 任务模式
│   │   │   ├── History.vue        # 历史记录聚合页
│   │   │   ├── FileManagement.vue # 全局文件管理
│   │   │   ├── DOC.vue            # 项目文档(Markdown 渲染)
│   │   │   ├── LogonOrRegister/   # 登录/注册落地页
│   │   │   ├── Ollama_Pages/      # Ollama 模型管理
│   │   │   ├── ACMD_serach/       # 学术文献搜索
│   │   │   └── TabHeader/         # 用户中心
│   │   └── components/
│   │       ├── SideBar.vue        # 左侧导航栏
│   │       ├── GlobalSearch.vue   # 全局搜索浮窗(Ctrl+K)
│   │       ├── chat-main-unit/    # 聊天核心组件(含引用溯源)
│   │       ├── knowledge-unit/    # 知识库卡片组件
│   │       ├── graph-unit/        # 知识图谱可视化组件
│   │       ├── canvas-point-unit/ # 粒子动画 / 动态 Logo
│   │       ├── user-primary/      # 用户信息编辑组件
│   │       └── ERS-Pages/         # 错误页面(404)
│   └── package.json

├── RagBackend/                    # FastAPI 后端服务
│   ├── main.py                    # 应用入口,注册路由、CORS、静态文件
│   ├── requirements.txt           # Python 依赖清单
│   ├── .env                       # 环境变量(DB_PASSWORD / JWT_SECRET / MODEL...)
│   ├── models/
│   │   └── model_config.py        # 统一模型配置(LLM/Embedding/Rerank/KG)
│   ├── document_processing/       # 文档处理模块
│   │   ├── doc_upload.py          # 分块上传(CREATE)
│   │   ├── doc_manage.py          # 文档 CRUD(UPDATE/READ/DELETE)
│   │   └── doc_list.py            # 全局文件列表 + 预览
│   ├── knowledge_base/            # 知识库管理
│   │   ├── knowledgeBASE4CURD.py  # 知识库增删改查(本地 JSON 存储)
│   │   └── knowledgebase_cover.py # 封面图床管理
│   ├── knowledge_graph/
│   │   └── generate_kg.py         # 知识图谱生成(Ollama 提取实体关系)
│   ├── RAG_M/
│   │   ├── RAG_app.py             # RAG 服务路由入口
│   │   └── src/
│   │       ├── agent/react_agent.py     # ReAct Agent 主类
│   │       ├── rag/rag_pipeline.py      # 普通 RAG 管道(强制检索)
│   │       ├── rag/hybrid_retriever.py  # BM25 + FAISS + RRF 混合检索
│   │       ├── rag/native_rag.py        # 原生 RAG(不依赖 LangChain)
│   │       ├── vectorstore/vector_store.py  # FAISS 向量存储管理(全局缓存)
│   │       └── ingestion/document_loader.py # 多格式文档加载器
│   ├── chat_units/
│   │   └── chat_management/
│   │       ├── chat_send.py       # 消息发送(调用 Ollama)
│   │       ├── chat_history_attacher.py # 历史上下文附加
│   │       ├── chat_delete.py     # 对话删除
│   │       └── chat_download.py   # 对话导出(JSON)
│   ├── ollama_management/
│   │   └── ollama_sRCP.py         # 爬取 Ollama 官网模型列表(1h 缓存)
│   ├── RAGF_User_Management/
│   │   ├── db_config.py           # MySQL 连接配置(统一入口)
│   │   ├── LogonAndLogin.py       # 用户注册 / 登录(JWT/HS256)
│   │   ├── User_settings.py       # 用户设置(头像 / 昵称 / 签名)
│   │   ├── QQ_Login.py            # QQ OAuth2.0 第三方登录
│   │   └── Reset_Password.py      # 密码重置(邮箱 SMTP 验证码)
│   ├── local-KLB-files/           # 知识库文件本地存储根目录
│   ├── metadata/                  # 文件元数据 JSON
│   └── tests/                     # 测试套件

└── docs/
    ├── Agent与RAG架构说明.md      # RAG/Agent 架构技术说明
    └── 项目功能说明.md            # 本文档

四、功能模块详解

4.1 知识库管理

入口路由/knowledge核心文件KnowledgeBase.vue · knowledgeBASE4CURD.py

知识库是整个系统的基础单元,每个知识库对应本地一个独立目录,拥有独立的文件存储、向量索引和知识图谱。

功能列表

功能操作方式说明
新建知识库点击"新建知识库"按钮输入名称后立即创建,自动生成本地存储目录
查看知识库列表进入 /knowledge卡片式展示,含名称、描述、封面、创建时间
搜索知识库顶部搜索框实时过滤按名称关键词即时筛选
星标置顶点击卡片星标图标星标知识库置顶显示,持久化到 localStorage
删除知识库卡片悬浮删除操作二次确认后删除,同时清理本地文件
进入详情点击知识库卡片跳转至 /knowledge/knowledgeDetail/:id

知识库数据结构

知识库元数据以 knowledge_data.json 形式存储在每个知识库目录下:

json
{
    "id": "知识库唯一ID",
    "title": "知识库名称",
    "description": "描述",
    "avatar": "头像emoji或URL",
    "cover": "封面图片路径",
    "createdTime": "2026-03-25 00:00:00"
}

4.2 文档管理与上传

入口路由/knowledge/knowledgeDetail/:id(顶部数据集区域) 核心文件KnowledgeDetail.vue · doc_upload.py · doc_manage.py

4.2.1 文件上传

支持多格式文档上传,采用分块上传机制保证大文件传输稳定性:

支持格式处理方式
PDFpdfplumber / PyPDF2 解析,可选 OCR(pytesseract)
Word (.docx)python-docx + docx2txt 提取文本
Excel / CSVpandas + openpyxl 表格解析
TXT / MD直接读取
图片pytesseract OCR 提取文字

上传流程

前端选择文件 → 分块(每块默认 2MB)→ POST /api/upload-chunk/ → POST /api/upload-complete/ → 合并 → 元数据写入
  • 文件大小限制:50MB
  • 重复文件检测:MD5 哈希比对
  • 文件类型验证:扩展名白名单校验

4.2.2 URL 内容导入

操作方式:知识库详情页 → 点击"导入链接"按钮

  • 支持批量导入(每行一个 URL)
  • 实时显示每条链接的导入状态(成功 / 错误)
  • 导入成功后自动刷新文档列表
  • 后端接口:POST /api/url-import/(待实现时给出友好提示)

4.2.3 文档管理

功能说明
文档列表显示名称、分块数、上传日期、切片方法、启用状态
启用/禁用Toggle 开关控制文档是否参与 RAG 检索
删除文档逐条或批量删除,同步清理本地文件和元数据
搜索过滤按文件名搜索 + 按状态(全部/启用/禁用)筛选
分页展示每页 5 条,支持翻页

4.3 RAG 智能问答

入口路由/knowledge/knowledgeDetail/:id(检索模块 Tab) 核心文件RAG_app.py · rag_pipeline.py · hybrid_retriever.py · native_rag.py

系统提供两种 RAG 实现,可通过 Tab 切换:

模式一:LangChain RAG(推荐)

用户提问 → 文档向量化(/ingest) → 混合检索 → OllamaLLM 生成回答 → SSE 流式返回

接口POST /api/RAG/RAG_query

请求参数

json
{
    "query": "你的问题",
    "docs_dir": "local-KLB-files/<知识库ID>",
    "use_hybrid": true
}

混合检索详解

BM25 关键词检索 ──────────┐
                           ├── RRF 倒排融合排序 → Top-K 文档块 → LLM
FAISS 向量相似度检索 ──────┘

RRF 融合公式:score(d) = Σ 1 / (k + rank_i(d))(k=60)

模式二:原生 RAG(不依赖 LangChain)

  • 先向量化:POST /api/RAG/native_ingest
  • 再问答:POST /api/RAG/native_query
  • 适合对 LangChain 依赖有顾虑的场景

向量化操作

步骤接口说明
文档向量化POST /api/RAG/ingestSSE 流式进度,嵌入模型 all-MiniLM-L6-v2(384维)
向量存储缓存全局 _vsm_cache同一知识库首次加载后缓存,避免重复加载 embedding 模型

AI 回答引用溯源

聊天组件(chat-main-unit.vue)对每条 AI 回答展示来源气泡

  • 显示引用的文件名和相关度得分
  • 点击可展开查看具体引用片段
  • 支持折叠/展开所有来源

4.4 ReAct Agent 任务模式

入口路由/agent核心文件Agent.vue · react_agent.py · RAG_app.py/agent_query

Agent 模式是系统最核心的 AI 能力亮点,采用 ReAct(Reasoning + Acting) 架构,让 LLM 自主决策是否需要检索知识库、检索多少次。

ReAct 推理循环

Question: 用户输入的任务

Thought: 我需要在知识库中查找相关信息
Action: search_knowledge_base
Action Input: 查询关键词
Observation: 【来源1:文档名.pdf(相关度: 0.82)】检索到的文档片段...

Thought: 我已找到足够信息
Final Answer: 根据知识库内容,...(完整回答)

前端功能

功能说明
自然语言任务输入大文本框输入,Ctrl+Enter 快捷提交
示例任务内置 4 个示例任务卡片,点击一键填入
执行选项可选:使用知识库(选择具体库)/ 联网搜索
步骤可视化实时展示 Thought/Action/Observation 每一步
历史任务面板左侧抽屉,所有历史任务持久化到 localStorage
重新执行点击历史任务可填回输入框重新运行
清空历史一键清除所有历史任务记录

与普通 RAG 的对比

维度普通 RAGReAct Agent
检索时机每次必执行检索LLM 自主决定是否检索
检索次数固定 1 次1 到 N 次(受 max_iterations 限制)
适合场景明确文档查询复杂推理、多轮问答、混合对话
响应格式流式文本 + 来源推理步骤日志 + 最终回答
短路优化简单对话无需检索,直接回答

接口POST /api/RAG/agent_query(SSE 流式)


4.5 多轮对话聊天

入口路由/chat/chat/:id核心文件Chat.vue · chat-main-unit.vue · chat_send.py

功能列表

功能说明
会话管理左侧会话列表,支持新建、切换、删除会话
多轮上下文完整历史记录随每次请求携带,Ollama 理解上下文
RAG 增强模式侧边栏底部开关,选择知识库后问答走 RAG 检索
知识库选择器RAG 模式下下拉选择具体知识库
Ollama 设置可配置服务器地址、超时时间、使用模型
会话持久化会话存储到后端,GET /api/chat/chat-documents 加载
导出对话GET /api/chat/download-chat-json 下载 JSON
Markdown 渲染AI 回答支持代码高亮、表格、列表等完整 Markdown

对话架构

用户输入 → 前端附加历史 → POST /api/chat/send-message
         → 后端调用 Ollama /api/chat(携带 history)
         → 返回 { reply, model }
         → 前端渲染 Markdown + 引用溯源气泡

4.6 知识图谱

入口路由:知识库详情页"知识图谱"设置 + /testrange(可视化测试) 核心文件knowledge_graph_setting.vue · graph-main.vue · generate_kg.py

生成流程

  1. 在知识库详情页开启"启用知识图谱提取"
  2. 选择图谱方法(通用 / 高级 / 领域专用)
  3. 选择实体类型(人物、组织、地点、概念等)
  4. 可选:实体标准化 / 生成社区报告 / 关系抽取
  5. 调用 POST /api/kg/process-knowledge-base,后端使用 qwen3:0.6b 提取实体和关系

可视化特性

  • 基于 Sigma.js + Graphology 渲染力导向图
  • 支持节点搜索(GET /api/kg/search-nodes/{kbId}
  • 展示图谱统计信息(节点数、边数)
  • 支持合并多文档图谱(GET /api/kg/get-kb-merged-graph/{kbId}

4.7 历史记录

入口路由/history核心文件History.vue

聚合显示所有类型的历史记录,提供统一检索入口。

记录类型

类型图标说明
💬 AI 对话chat来自聊天页的会话历史
🤖 任务task来自 Agent 的任务执行历史
📝 笔记note用户创建的笔记
🔍 搜索search历史搜索记录

功能特性

功能说明
类型过滤顶部 Tab 按类型筛选(全部/对话/任务/笔记/搜索)
关键词搜索顶部搜索框,实时过滤标题和内容预览
日期分组按今天 / 昨天 / 更早分组展示
复制内容一键复制记录内容到剪贴板
删除记录逐条删除或一键清空全部
详情抽屉点击卡片在右侧抽屉查看完整内容

4.8 文件管理中心

入口路由/files核心文件FileManagement.vue · doc_list.py

功能特性

  • 以 TDesign 表格展示所有知识库的全部文档
  • 按知识库文件夹分 Tab 筛选
  • 文件信息:名称、类型(彩色标签)、大小、上传时间、状态
  • 支持文档预览(调用 /api/files/api/document/preview/
  • 支持文档删除
  • 支持分页和排序
  • 刷新按钮手动同步最新状态

4.9 用户系统

入口路由/LogonOrRegister · /user · /user/userInfo核心文件LogonOrRegister.vue · LogonAndLogin.py · QQ_Login.py · Reset_Password.py · User_settings.py

4.9.1 注册与登录

功能接口说明
邮箱注册POST /api/login/register邮箱 + 密码,SHA-256 哈希存储
邮箱登录POST /api/login/login返回 JWT Token(HS256,7 天有效)
QQ 第三方登录POST /api/qq/loginOAuth2.0 流程,绑定或新建账号
JWT 验证GET /api/users/me路由守卫每次导航时调用验证

4.9.2 密码重置

  • 发送验证码:POST /api/reset/send-code(SMTP QQ 邮箱发送 6 位数字验证码)
  • 验证并重置:POST /api/reset/verify-code
  • 验证码内存存储,有效期 5 分钟,最多重试 5 次

4.9.3 个人中心

功能接口说明
查看个人信息GET /api/user/GetUserData展示昵称、头像、签名、邮箱
更新昵称/签名POST /api/UpdateUserData表单提交
上传头像POST /api/UpdateUserDataFormData 文件上传,存储到 user_avatars/

4.9.4 登录页特效

  • 动态背景图(Unsplash / 知乎图床)
  • 打字机效果标题(vue-typewriter-effect)
  • 毛玻璃卡片 UI
  • 登录/注册/找回密码表单切换时图片随状态变化

4.10 Ollama 模型管理

入口路由/service核心文件ollama_basic_pages.vue · OllamaModelList.vue · OllamaModelDownload.vue · OllamaSettings.vue · ollama_sRCP.py

Tab 功能

Tab功能
已安装模型列表展示本地已安装模型(名称/大小/修改时间/摘要),支持批量删除
下载模型从 Ollama 官网爬取模型列表(1h 缓存),搜索并一键拉取,流式显示下载进度
服务设置配置 Ollama 服务器地址(默认 http://localhost:11434),保存到 localStorage

推荐模型配置

场景推荐模型内存需求
低配环境(≤8GB)qwen2:0.5b(~400MB)~600MB
中配环境(16GB)qwen:7b-chat(4.2GB)~8GB
知识图谱提取qwen3:0.6b~800MB

4.11 学术文献搜索

入口路由/acmd_sre核心文件ACMD_search.vue

基于 Lens API 的学术文献搜索功能,纯前端直连。

搜索选项

选项说明
关键词支持复杂查询表达式
结果数量可选 10/20/50/100
包含字段标题 / 作者 / 年份 / 摘要 可勾选
发表年份起始到结束年份范围过滤
排序方式相关度 / 发表时间 / 引用数

搜索结果卡片展示:标题、作者列表、发表年份、摘要(可折叠)、DOI 链接。


4.12 全局搜索

快捷键Ctrl + K(全局任意页面) 核心文件GlobalSearch.vue · App.vue(键盘监听)

  • 浮窗形式弹出
  • 同时搜索知识库名称和对话内容
  • 支持键盘上下导航(
  • Enter 跳转至对应页面
  • Esc 关闭

4.13 知识库权限与分享

入口:知识库详情页 → 设置卡片 → "权限与分享"选项卡 核心文件knowledge-setting-card.vue

三级知识库类型

类型图标说明
个人 🔒私密专属仅自己可见
共享 👥团队协作设置成员角色和权限
广场 🌐公开发现开放给所有用户浏览

成员角色(共享模式)

角色权限人数限制
管理员完全控制(增删改配置)最多 5 名
编辑者读写(上传/修改文档)无限制
查看者只读(搜索/问答)无限制

安全策略

策略说明
加入审批新成员加入需管理员审核
禁止导出禁止非管理员下载文件
添加水印导出内容自动添加水印
只读模式全员只读,禁止修改

分享链接

  • 开关控制是否开启分享
  • 选择有效期:7天 / 30天 / 永久
  • 可设置访问密码
  • 一键复制链接或生成二维码

五、 RAG 核心架构

整体数据流

用户输入

   ├─ /RAG_query ──────────→ RAGPipeline(每次强制检索)
   │                              ├── BM25 关键词检索
   │                              ├── FAISS 向量相似度检索
   │                              └── RRF 倒排融合 → Top-K 文档
   │                                      └── OllamaLLM 生成回答(SSE 流式)

   └─ /agent_query ────────→ ReActRAGAgent(LLM 自主决策)
                                   ├── LLM 推理:是否需要检索?
                             │    ├── 需要 → search_knowledge_base Tool
                             │    │           └── HybridRetriever(可循环)
                             │    └── 不需要 → 直接回答
                             └── Final Answer → SSE 逐步返回

向量存储优化

VectorStoreManager 采用全局字典缓存_vsm_cache):

  • docs_dir 为 key,同一知识库只加载一次 HuggingFace Embedding 模型
  • 首次加载约 1-3 秒,后续请求毫秒级响应
  • 避免了每次请求重复加载 embedding 模型的性能问题

文档加载支持格式

document_loader.py 支持:PDF、DOCX、TXT、MD、CSV、XLSX(通过 LangChain Unstructured 加载器)


六、后端 API 接口总览

知识库管理

MethodPath功能
POST/api/create-knowledgebase/创建知识库
GET/api/get-knowledge-item/{id}/获取单个知识库信息
GET/api/documents-list/{KLB_id}/获取知识库文档列表
PUT/api/update-document-status/启用/禁用文档
DELETE/api/delete-documents/批量删除文档

文档上传

MethodPath功能
POST/api/upload-chunk/分块文件上传
POST/api/upload-complete/合并分块为完整文件

文件列表管理(前缀 /api/files

MethodPath功能
GET/api/files/api/all-documents/获取所有文档列表
GET/api/files/api/document/preview/文档内容预览
DELETE/api/files/api/document/删除文档

RAG 服务(前缀 /api/RAG

MethodPath功能
POST/api/RAG/ingest文档向量化(SSE 流式进度)
POST/api/RAG/RAG_query普通 RAG 流式问答
POST/api/RAG/RAG_query_sync同步问答(测试用)
POST/api/RAG/agent_queryReAct Agent 流式问答(SSE)
POST/api/RAG/agent_query_syncReAct Agent 同步问答
POST/api/RAG/native_ingest原生 RAG 向量化
POST/api/RAG/native_query原生 RAG 问答

知识图谱(前缀 /api/kg

MethodPath功能
POST/api/kg/process-all-files处理所有文件生成图谱
POST/api/kg/process-knowledge-base处理指定知识库
GET/api/kg/get-kb-merged-graph/{kbId}获取合并图谱数据
GET/api/kg/search-nodes/{kbId}图谱节点关键词搜索
GET/api/kg/graph-stats/{kbId}图谱节点/边统计
GET/api/kg/get-kb-graph-data/{kbId}/{filename}单文件图谱数据

对话管理(前缀 /api/chat

MethodPath功能
POST/api/chat/send-message发送消息(调用 Ollama)
GET/api/chat/chat-documents获取会话列表
POST/api/chat/save-session保存会话
DELETE/api/chat/delete-session删除会话
GET/api/chat/download-chat-json导出对话 JSON

用户系统

MethodPath功能
POST/api/login/register用户注册(邮箱+密码)
POST/api/login/login用户登录(返回 JWT)
GET/api/users/me验证 JWT 有效性
GET/api/user/GetUserData获取用户数据
POST/api/UpdateUserData更新用户信息/头像
POST/api/qq/loginQQ OAuth2.0 登录
POST/api/reset/send-code发送邮箱验证码
POST/api/reset/verify-code验证码验证并重置密码

其他

MethodPath功能
GET/api/ollama-modelsOllama 官网模型列表(1h 缓存)
GET/服务健康检查
GET/helloworld/测试端点

静态资源

路径内容
/static/知识库文件本地存储目录
/static/covers/知识库封面图片
/static/avatars/用户头像

七、路由与页面地图

/                          → 重定向至 /knowledge
/knowledge                 → 知识库列表主页
/knowledge/knowledgeDetail/:id → 知识库详情(文件管理 + RAG 问答 + 图谱设置)
/chat                      → 多轮对话聊天
/chat/:id                  → 指定会话 ID 的对话
/agent                     → ReAct Agent 任务模式
/history                   → 历史记录中心
/files                     → 全局文件管理
/service                   → Ollama 模型管理
/acmd_sre                  → 学术文献搜索(Lens API)
/user                      → 用户中心(Tab 容器)
  /user/userInfo           → 用户信息编辑
  /user/coming-soon/:id    → 功能即将上线占位页
/LogonOrRegister           → 登录/注册(公开路由,无需 JWT)
/DOC                       → 项目开发文档(Markdown 渲染)
/testrange                 → 知识图谱可视化测试
/404                       → 404 错误页
/:pathMatch(.*)*           → 自动重定向至 /404

路由守卫:除 /LogonOrRegister 外,所有路由在导航时自动调用 GET /api/users/me 验证 JWT,无效时清除本地 token 并重定向登录页,携带 ?redirect= 参数。


八、模型配置参考

配置项环境变量默认值说明
LLM 模型MODELqwen:7b-chat用于 RAG 问答 / Agent / 聊天
Embedding 模型EMBEDDING_MODELsentence-transformers/all-MiniLM-L6-v2文档向量化,384 维
Rerank 模型RERANK_MODELbge-large可选的结果重排序
知识图谱 LLMKG_MODELqwen3:0.6b实体关系提取
Ollama 地址OLLAMA_BASE_URLhttp://localhost:11434Ollama 服务地址
MySQL 密码DB_PASSWORD必须在 .env 中配置
MySQL 数据库DB_NAMErag_user_db用户数据库名
JWT 密钥JWT_SECRETchangeme_jwt_secret生产环境务必修改!
SMTP 邮箱SMTP_USER发件邮箱(如 QQ 邮箱)
SMTP 授权码SMTP_PASSWORDQQ 邮箱授权码

.env 文件示例RagBackend/.env):

env
MODEL=qwen2:0.5b
EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2
KG_MODEL=qwen3:0.6b
OLLAMA_BASE_URL=http://localhost:11434

DB_HOST=127.0.0.1
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_mysql_password
DB_NAME=rag_user_db
DB_CHARSET=utf8mb4

JWT_SECRET=your_jwt_secret_key

SMTP_HOST=smtp.qq.com
SMTP_PORT=465
SMTP_USER=your_qq@qq.com
SMTP_PASSWORD=your_smtp_auth_code

九、本地部署指南

前置要求

依赖版本要求说明
Node.js>= 18.x前端构建
Python>= 3.10后端运行
MySQL>= 8.0用户数据存储
OllamalatestLLM 本地推理

后端启动

bash
# 1. 进入后端目录
cd KnowledgeRAG-GZHU/RagBackend

# 2. 创建虚拟环境
python -m venv venv
.\venv\Scripts\activate      # Windows
# source venv/bin/activate   # macOS/Linux

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

# 4. 配置环境变量
# 复制并修改 .env 文件(必须配置 DB_PASSWORD / JWT_SECRET)

# 5. 确保 MySQL 已启动(服务名因安装而异)
# Windows: Start-Service MySQL96
# macOS: brew services start mysql

# 6. 启动服务
uvicorn main:app --host 0.0.0.0 --port 8000 --reload

后端服务:http://localhost:8000 API 文档:http://localhost:8000/docs(Swagger UI)

前端启动

bash
# 1. 进入前端目录
cd KnowledgeRAG-GZHU/RagFrontend

# 2. 安装依赖
npm install

# 3. 开发模式运行
npm run dev
# 开发服务:http://localhost:5173

# 4. 生产构建
npm run build
# 构建产物:dist/

Ollama 配置

bash
# 安装 Ollama(https://ollama.ai)

# 拉取推荐小模型(低配环境)
ollama pull qwen2:0.5b

# 拉取知识图谱模型
ollama pull qwen3:0.6b

# 拉取标准模型(需 17GB+ 内存)
ollama pull qwen:7b-chat

# 验证
ollama list

常见问题排查

问题原因解决方案
后端端口 8000 被占其他进程占用taskkill /PID <pid> /F(Windows)
MySQL 连接失败服务未启动以管理员权限 Start-Service MySQL96
Ollama 500 内存不足模型需求内存过高先拉取 qwen2:0.5b 再重启后端
前端 404 API 错误后端未启动确认 http://localhost:8000 可访问
JWT 验证失败Token 过期清除浏览器 localStorage 重新登录
向量化失败Embedding 模型未下载首次运行时自动从 HuggingFace 下载,需联网

文档由 WorkBuddy 自动生成 · 2026-03-25

本文档站基于 VitePress 构建