# LDK_QA **Repository Path**: cris721/LDK_QA ## Basic Information - **Project Name**: LDK_QA - **Description**: 基于大模型的垂域知识库问答系统平台 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2026-04-08 - **Last Updated**: 2026-04-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Alfred 基于大模型的垂域知识库问答系统。 --- ## 1. 项目介绍 Alfred 是一个面向垂直场景的知识问答平台,目标是把「通用大模型能力」与「业务知识库检索」结合起来,提供可落地的智能问答体验。 项目当前以本地开发环境为主,采用前后端分离架构: - 后端使用 Django + Django Ninja 提供 REST API 与流式输出接口; - 前端使用 Vue 3 + Vite 构建聊天式交互界面; - 数据层采用 SQLite 存储用户、会话、配置与文件元信息; - 向量检索使用 ChromaDB,用于专家模式下的 RAG 证据召回。 --- ## 2. 核心功能 ![Alfred 系统架构图](image.png) ### 2.1 账号与认证 - 用户注册、登录、令牌鉴权(Bearer Token); - 用户资料读取与密码修改; - 令牌生命周期管理(带有效期)。 ### 2.2 聊天与会话管理 - 支持普通聊天(`/api/chat`)与流式聊天(`/api/chat/stream`); - 支持多会话创建、读取、删除; - 自动保存会话历史,并支持按会话清空历史。 ### 2.3 双模式问答(daily / expert) - `daily`:偏通用对话,适合日常问答; - `expert`:接入 RAG 检索,优先基于知识片段回答; - 专家模式未命中时自动降级为模型直答,并提示“知识库未命中”。 ### 2.4 用户文件知识库 - 支持上传 `txt/csv/md/log/json/pdf` 文件; - 上传后自动抽取文本并向量化入库; - 支持按会话查看/删除文件,检索时按用户和文件范围隔离。 ### 2.5 模型与提供商配置 - 支持本地 `Ollama`; - 支持在线提供商配置(OpenAI 兼容接口、Anthropic); - 支持动态获取模型列表和按用户保存配置。 ### 2.6 前端体验 - 简洁灰风格的聊天页面与会话侧栏; - 登录/注册/设置页面完整闭环; - 支持浅色/深色主题切换、多语言与账户管理。 --- ## 3. 技术栈 ### 3.1 后端 - Python 3.x - Django 4.2+ - Django Ninja - django-cors-headers - requests ### 3.2 RAG 与数据处理 - ChromaDB(向量存储) - rank-bm25(关键词重排) - pypdf(PDF 文本提取) ### 3.3 前端 - Vue 3 - Vite - Pinia - Vue Router - Axios ### 3.4 存储与部署形态 - SQLite(结构化业务数据) - Chroma 持久化目录:`django_backend/data/rag_chroma` - 当前默认面向本地开发部署 --- ## 4. 安装教程 > 以下步骤基于 Linux/macOS,Windows 建议在 WSL 或等价环境执行。 ### 4.1 克隆项目 ```bash git clone cd LDK_QA ``` ### 4.2 启动后端(Django) ```bash cd django_backend python -m venv .venv source .venv/bin/activate pip install -r requirements.txt python manage.py migrate python manage.py runserver 0.0.0.0:8081 ``` ### 4.3 启动前端(Vue) 另开一个终端: ```bash cd vue_frontend npm install npm run dev ``` 默认前端地址:`http://localhost:8082` 默认通过 Vite 代理将 `/api` 转发到 `http://localhost:8081`。 ### 4.4 准备模型环境(推荐) 如使用本地模型,请先安装并启动 Ollama,然后拉取需要的模型(示例): ```bash ollama pull qwen2.5:0.5b ollama pull nomic-embed-text:latest ``` --- ## 5. 使用说明 ### 5.1 首次使用流程 1. 打开前端页面并注册账号; 2. 登录后进入聊天页; 3. 在设置页选择问答模式(daily/expert)与模型; 4. 在专家模式下可上传文件,增强回答的依据性; 5. 发起提问,查看普通或流式响应结果。 ### 5.2 推荐使用路径 - 日常问答:直接使用 `daily` 模式; - 业务问答:切换为 `expert`,上传业务资料后再提问; - 需追问场景:复用同一会话,系统会保留上下文; - 需要清理上下文:按会话清空历史或新建会话。 ### 5.3 可选运维命令(领域知识导入) 在 `django_backend` 目录可执行: ```bash python manage.py bootstrap_rag --domain_id default ``` 若需强制重建该领域索引: ```bash python manage.py bootstrap_rag --domain_id default --force ``` --- ## 6. 小组分工 ### 张玉涛(组长) - 梳理场景优先级(daily 与 expert 的适用边界); - 维护功能清单、验收标准和迭代节奏; - 统一提示词与回答质量评价标准。 - 聊天页(会话、消息流、流式渲染); - 上传与文件管理交互(上传进度、状态提示、错误处理); - RAG混合检索与重排序算法优化。 ### 任子豪 - 认证、会话、历史、文件、配置相关 API; - 鉴权、参数校验、错误码与接口稳定性; - 设置页(模型配置、主题、语言、账户信息); - 流式接口一致性与性能优化。 ### 王翊昊 - 向量入库、召回、重排与命中策略优化; - 专家模式提示词与证据引用质量; - 未命中降级策略与检索质量监控。 ### 王鹤燃 - 回归测试(登录/聊天/上传/流式); - 数据库迁移、启动脚本、环境变量规范; - 发布前检查(接口联调、性能与日志可观测性)。 ## 目录结构 ```text LDK_QA/ ├── django_backend/ # Django 后端工程 │ ├── ai_project/ # Django 项目配置 │ │ ├── settings.py # 全局配置(CORS/RAG/模型参数等) │ │ ├── urls.py # 根路由 │ │ ├── asgi.py │ │ └── wsgi.py │ ├── ai_api/ # 核心业务应用 │ │ ├── api.py # REST API(登录/聊天/会话/文件/配置) │ │ ├── stream_views.py # SSE 流式聊天接口 │ │ ├── services.py # 模型调用、缓存、会话等服务 │ │ ├── rag_service.py # RAG 检索与向量写入 │ │ ├── prompts.py # daily/expert 提示词 │ │ ├── models.py # 数据模型(用户/会话/文件/限流等) │ │ ├── schemas.py # 接口入参与出参 Schema │ │ ├── urls.py # 应用路由 │ │ ├── migrations/ # 数据库迁移文件 │ │ └── management/commands/ # 管理命令(如 bootstrap_rag) │ ├── data/ │ │ └── rag_chroma/ # Chroma 向量库持久化目录 │ ├── db.sqlite3 # 本地开发数据库 │ ├── requirements.txt # Python 依赖 │ └── manage.py # Django 管理入口 ├── vue_frontend/ # Vue 3 前端工程 │ ├── src/ │ │ ├── views/ # 页面(Chat/Login/Register/Account) │ │ ├── components/ # 通用组件(会话列表、输入框等) │ │ ├── api.js # 前端 API 封装 │ │ ├── store.js # Pinia 状态管理 │ │ ├── router.js # 前端路由与鉴权守卫 │ │ ├── i18n.js # 多语言文案 │ │ ├── assets/ # 静态资源(logo、样式) │ │ ├── App.vue │ │ └── main.js │ ├── package.json # Node 依赖与脚本 │ ├── vite.config.js # Vite 配置(含 /api 反向代理) │ └── README.md ├── README.md # 中文文档 ├── README.en.md # 英文文档 ├── Update.md # 迭代记录 └── image.png # 系统架构图 ```