团队作业3-综合报告(Alpha阶段)
| 项目 | 详情 |
|---|---|
| 这个作业属于哪个课程 | 计科23级12班 |
| 这个作业要求在哪里 | 作业要求链接 |
| 这个作业的目标 | 对现有项目进行设计和需求&原型改进,进行 Alpha 阶段任务分配 |
队名与队员:
MCoder,Manage Code & Organize Development EffoRt
王宥程-3123004714
关健佳-3121004072
高泽彤-3123004304
黎火坤-3123004310
翁广驰-3123004409
王怡欧-3223004344
1. 需求与原型改进
原型:
图片1
-
针对课堂讨论提出的问题与建议进行修改
-
问题1:知识需要手动导入,无自动解析分块的方式
- 修改1:增加 pdf 解析,按规则分块的能力,提供修改分块后导入功能
-
问题2:无图片理解能力,只能给予文本问答,缺少对图片的理解。
- 修改2:增加多模态处理能力
-
-
加分:面向目标用户的原型展示与访谈摘要
- 目标用户:政策解读人员、企业法务/运营、普通公众、知识维护者。
- 主要痛点:
- 找条文慢、语义难、上下文碎片,难以形成可引用的解释。
- 大量PDF杂质文本,导入后检索不准;问答难追溯。
- 不同问答平台行为不一致,缺少统一记录与反馈机制。
- 场景(产品前/后):
- 使用前:手工搜PDF,复制粘贴,问答毫无记忆,无法复盘。
- 使用后:将法规导入为结构化段落,RAG检索提取上下文,形成可追溯回答并留存记录,支持反馈与人工修订。
- User Story:
- 作为“政策解读人员”,我希望上传一份最新版补偿政策PDF,系统自动切分为条款段落,我在导入页微调后提交;当我询问“住宅类补偿标准”,系统返回带出处的回答,并显示Top-5相关条款与相似度。我可以对回答点赞并记录修订意见,后续同类问题自动引用已修订版本。
-
上周《需求规格说明书》的不足与改进要点(摘要)
-
不足:Prompt 设计功能缺失
-
改进:
- 增加Prompt设置接口与会话管理改进;
-
-
功能定位与优先级(四象限)
- 高价值/低成本:Prompt设置、会话选择与清理、反馈点赞/点踩、非流式回答详情。
- 高价值/高成本:Milvus集成与调优、RBAC与审计、知识版本管理、多模态问答增强。
- 低价值/低成本:UI细节美化、系统信息页文案优化、导入页提示。
- 低价值/高成本:多人实时协作编辑、跨库全文检索聚合(暂缓)。
-
WBS与进度计划(根据修改后的需求)
- WBS(交付件树):
- 前端UI:问答页(流式/非流式/检索展示)、知识库管理(CRUD/导入/解析)、系统信息(会话/Prompt/健康状态)、图片问答页。
- 后端API:
/knowledge系列、/qa/ask与/qa/ask-stream、/qa/ask-image、/qa/feedback、/sessions、/settings/prompt、/qa/{id}/human-review。 - 服务层:
KnowledgeService、QAService、EmbeddingService、VectorStore、SettingsService、MemoryService。 - 数据层:SQLite模型与会话存储、Milvus集合与索引、初始化脚本。
- 运维与配置:
run.py双端启动、config.py环境变量、日志与健康检查。
- 进度计划(Alpha迭代,7天):
- D1-D2:会话/Prompt与人工介入接口;解析页多策略;系统信息页健康状态。
- D3-D4:Milvus检索调优与降级;知识版本/来源字段;图片问答增强。
- D5:前端联调与可用性迭代;反馈闭环。
- D6:端到端回归与性能基线;问题单收敛。
- D7:文档完善与演示准备。
- WBS(交付件树):
3. 系统设计
-
架构设计(分层与职责)
- 前端(Streamlit):三页签UI,问答流式渲染、检索知识展示、PDF解析与人工编辑、系统信息及Prompt设置(
frontend.py)。 - API层(FastAPI):路由与依赖注入,统一模型序列化(
main.py)。 - 服务层:
- 问答编排与日志记录(
qa_service.py):检索→上下文→LLM→写QARecord→返回含检索相似度。 - 知识管理与导入解析(
knowledge_service.py):CRUD、PDF分段与导入、Milvus索引维护。 - 向量检索封装(
vector_store.py):集合创建、索引、Top-K检索、维度校验。 - Embedding生成(
embedding_service.py):OpenAI兼容/Ollama两种调用路径。 - 会话记忆(
memory_service.py):基于SQLChatMessageHistory按session_id管理历史。 - Prompt设置(
settings_service.py):系统与答案模板持久化。
- 问答编排与日志记录(
- 数据层:SQLite(ORM模型、会话历史)、Milvus(向量集合与索引)。
- 外部接口:OpenAI兼容模型(文本/图像)、Ollama嵌入端点。
- 前端(Streamlit):三页签UI,问答流式渲染、检索知识展示、PDF解析与人工编辑、系统信息及Prompt设置(
-
关键流程(文本问答)
- 用户提问→生成查询向量→Milvus检索Top-K→构建上下文→LLM生成→写入
QARecord→返回答案+检索条目。
- 用户提问→生成查询向量→Milvus检索Top-K→构建上下文→LLM生成→写入
4. Alpha任务分配计划
-
Product Backlog(按优先级与依赖)
- P0:文本问答链路稳定(检索/上下文/流式)、PDF解析与人工编辑导入、反馈机制闭环。
- P1:会话管理改进与Prompt设置、Milvus健康状态展示与降级路径。
- P2:人工介入端到端、知识版本/来源字段、多模态图片问答增强。
-
Sprint Backlog(已有功能清单)
-
后端:
- 知识库管理 CRUD:
POST/GET/PUT/DELETE。 - PDF解析与导入
- 文本问答(非流式与流式)。
- 图片理解问答,多模态处理实现。
- 反馈机制
- 会话管理
- Prompt设置
- 向量检索与索引
- 知识库管理 CRUD:
-
前端:
- 问答页:问题输入、流式回答渲染、非流式详情、Top-5检索条目及相似度展示、反馈按钮、过程日志查看与保存
- 图片问答:图片上传与问题输入,非流式展示答案。
- 知识库管理:新增知识、列表展示、删除、快速导入PDF、解析-人工编辑-选段导入
- 系统信息与配置:Prompt设置编辑与保存,会话列表加载、创建、清空
-
-
甘特图:
图片2
5. 测试计划
-
测试范围与目标
- 覆盖产品主要能力:知识库CRUD、文本问答(非流式/流式)、图片问答、PDF解析与导入、会话与Prompt设置、反馈机制。
- 目标:正确性、稳定性、可追溯、性能(响应时间、流式首字节)与降级有效性。
-
测试类型
- 单元测试:
KnowledgeService.parse_pdf切分准确性;EmbeddingService两种端点的异常/超时;VectorStore.ensure_collection维度校验;SettingsServiceCRUD。 - API集成测试:
/knowledge系列、/qa/ask、/qa/ask-stream、/qa/ask-image、/qa/feedback、/sessions、/settings/prompt。 - 端到端(E2E):前端流式渲染、检索展示、解析导入与问答闭环;会话选择与清理。
- 性能与健壮性:Top-K检索耗时、首字节时间、并发下流式稳定;Milvus不可用时的降级行为。
- 回归测试:对核心链路建立用例集,每次改动后回归。
- 单元测试:
-
时间安排与角色
- 与开发同步开展:后端完成一个接口即加入集成用例;前端完成功能即执行E2E。
- 角色分工:
- 后端同学主导单元测试与API集成;
- 前端同学主导E2E与可用性;
- PM收敛问题单与性能基线记录。
-
资源与工具
- 测试数据:政策PDF样本(章节/条款结构多样),标准问题集与期望回答模板。
- 工具:
requests/httpx集成测试脚本、uvicorn本地后端、streamlit前端、Milvus本地/容器化部署。
-
入口/退出准则
- 入口:所有P0功能接口可用,基本页面可访问。
- 退出:P0链路回归通过,流式与非流式稳定,关键错误率<1%,性能指标达标。