feat(asl): Implement full-text screening core LLM service and validation system (Day 1-3)
Core Components: - PDFStorageService with Dify/OSS adapters - LLM12FieldsService with Nougat-first + dual-model + 3-layer JSON parsing - PromptBuilder for dynamic prompt assembly - MedicalLogicValidator with 5 rules + fault tolerance - EvidenceChainValidator for citation integrity - ConflictDetectionService for dual-model comparison Prompt Engineering: - System Prompt (6601 chars, Section-Aware strategy) - User Prompt template (PICOS context injection) - JSON Schema (12 fields constraints) - Cochrane standards (not loaded in MVP) Key Innovations: - 3-layer JSON parsing (JSON.parse + json-repair + code block extraction) - Promise.allSettled for dual-model fault tolerance - safeGetFieldValue for robust field extraction - Mixed CN/EN token calculation Integration Tests: - integration-test.ts (full test) - quick-test.ts (quick test) - cached-result-test.ts (fault tolerance test) Documentation Updates: - Development record (Day 2-3 summary) - Quality assurance strategy (full-text screening) - Development plan (progress update) - Module status (v1.1 update) - Technical debt (10 new items) Test Results: - JSON parsing success rate: 100% - Medical logic validation: 5/5 passed - Dual-model parallel processing: OK - Cost per PDF: CNY 0.10 Files: 238 changed, 14383 insertions(+), 32 deletions(-) Docs: docs/03-涓氬姟妯″潡/ASL-AI鏅鸿兘鏂囩尞/05-寮€鍙戣褰?2025-11-22_Day2-Day3_LLM鏈嶅姟涓庨獙璇佺郴缁熷紑鍙?md
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
# AI智能文献模块 - 技术债务清单
|
||||
|
||||
> **文档版本:** v1.0
|
||||
> **文档版本:** v1.1
|
||||
> **创建日期:** 2025-11-21
|
||||
> **维护者:** AI智能文献开发团队
|
||||
> **最后更新:** 2025-11-21
|
||||
> **最后更新:** 2025-11-22
|
||||
> **文档目的:** 记录MVP完成后需要优化的技术问题
|
||||
|
||||
---
|
||||
@@ -848,13 +848,230 @@ const estimate = estimateCost(literatures);
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
## 🟠 优先级6:全文复筛技术债务(NEW)
|
||||
|
||||
> **更新日期**:2025-11-22
|
||||
> **当前状态**:Day 1-3已完成(通用能力层核心)
|
||||
|
||||
### 债务1:Nougat质量检测机制缺失
|
||||
|
||||
**问题描述**:
|
||||
- 当前Nougat提取后,质量评分为`undefined`
|
||||
- 导致所有PDF都降级到PyMuPDF,无法充分利用Nougat的结构化优势
|
||||
|
||||
**影响**:
|
||||
- 无法获得Markdown格式的结构化全文
|
||||
- Section-Aware Prompt策略效果打折扣
|
||||
- 可能影响准确率(结构化信息丢失)
|
||||
|
||||
**根本原因**:
|
||||
- Python extraction_service返回的Nougat结果缺少`quality`字段
|
||||
- 或质量评分逻辑未实现
|
||||
|
||||
**解决方案**:
|
||||
1. 检查`extraction_service/services/pdf_processor.py`的Nougat处理逻辑
|
||||
2. 实现质量评分机制(基于识别置信度、Markdown完整性等)
|
||||
3. 测试并调优质量阈值
|
||||
|
||||
**优先级**:中
|
||||
**预计耗时**:半天
|
||||
**风险**:低
|
||||
|
||||
---
|
||||
|
||||
### 债务2:MVP未实施全文验证(Full-text Validation)
|
||||
|
||||
**问题描述**:
|
||||
- 质量保障策略中设计了"分段提取 + 全文验证"
|
||||
- MVP采用"一次性全文提取"策略,跳过了全文验证步骤
|
||||
|
||||
**影响**:
|
||||
- 可能存在"Lost in the Middle"现象导致的遗漏
|
||||
- 关键字段的准确率可能未达到92%目标
|
||||
|
||||
**建议**:
|
||||
1. MVP上线后,收集准确率数据
|
||||
2. 如果关键字段准确率<90%,实施全文验证
|
||||
3. 优先针对3个核心字段(随机化方法、盲法、结果完整性)
|
||||
|
||||
**优先级**:低(待MVP测试验证)
|
||||
**预计耗时**:2天
|
||||
**条件触发**:关键字段准确率<90%
|
||||
|
||||
---
|
||||
|
||||
### 债务3:Cochrane标准未加载(MVP简化)
|
||||
|
||||
**问题描述**:
|
||||
- MVP为了减少Prompt长度和成本,未加载Cochrane RoB 2.0标准
|
||||
- 可能影响"质量评估"字段的判断准确性
|
||||
|
||||
**影响**:
|
||||
- 质量评估字段可能不够严谨
|
||||
- 缺少统一的评判标准
|
||||
|
||||
**建议**:
|
||||
1. MVP测试后评估准确率
|
||||
2. 如果"质量评估"字段准确率<85%,重新加载Cochrane标准
|
||||
3. 通过配置开关灵活控制(PromptBuilder已支持)
|
||||
|
||||
**优先级**:低(待MVP测试验证)
|
||||
**预计耗时**:半天(已有代码,仅需配置)
|
||||
**条件触发**:质量评估字段准确率<85%
|
||||
|
||||
---
|
||||
|
||||
### 债务4:Few-shot Examples被移除
|
||||
|
||||
**问题描述**:
|
||||
- 为了优化Prompt长度(从74KB降至52KB),移除了Few-shot examples
|
||||
- 可能影响模型对"Lost in the Middle"场景的处理能力
|
||||
|
||||
**影响**:
|
||||
- 模型缺少参考案例,面对复杂场景时可能表现不稳定
|
||||
|
||||
**建议**:
|
||||
1. MVP测试后分析失败案例
|
||||
2. 如果发现特定模式的失败案例(如信息在中间位置),重新添加Few-shot
|
||||
3. 采用精简版Few-shot(1-2个核心案例,而非原来的完整案例)
|
||||
|
||||
**优先级**:低(待MVP测试验证)
|
||||
**预计耗时**:1天
|
||||
**条件触发**:特定场景失败率>30%
|
||||
|
||||
---
|
||||
|
||||
### 债务5:批处理服务未实现(Day 4待开发)
|
||||
|
||||
**问题描述**:
|
||||
- 当前只有单篇PDF的LLM处理服务
|
||||
- 缺少批量处理、进度跟踪、并发控制
|
||||
|
||||
**影响**:
|
||||
- 无法批量处理多篇文献
|
||||
- 缺少任务队列和进度管理
|
||||
|
||||
**解决方案**:
|
||||
- Day 4开发`AsyncTaskService`和`FulltextScreeningService`
|
||||
- 集成`p-queue`实现并发控制
|
||||
- 实现进度回调和失败重试
|
||||
|
||||
**优先级**:高(Day 4计划中)
|
||||
**预计耗时**:1天
|
||||
**状态**:计划中
|
||||
|
||||
---
|
||||
|
||||
### 债务6:前端UI未开发(Day 5-6待开发)
|
||||
|
||||
**问题描述**:
|
||||
- 全文复筛的前端UI完全未开发
|
||||
- 包括设置页、工作台页、结果页、双视图审阅弹窗
|
||||
|
||||
**影响**:
|
||||
- 后端服务无法被用户使用
|
||||
- MVP无法交付
|
||||
|
||||
**解决方案**:
|
||||
- Day 5-6开发前端UI
|
||||
- 参考标题摘要初筛的UI设计
|
||||
- 适配12字段模板的展示需求
|
||||
|
||||
**优先级**:高(Day 5-6计划中)
|
||||
**预计耗时**:2天
|
||||
**状态**:计划中
|
||||
|
||||
---
|
||||
|
||||
### 债务7:数据库表未创建
|
||||
|
||||
**问题描述**:
|
||||
- `AslFulltextScreeningTask`和`AslFulltextScreeningResult`表未创建
|
||||
- 无法存储全文复筛的任务和结果
|
||||
|
||||
**影响**:
|
||||
- 后端服务无法持久化数据
|
||||
|
||||
**解决方案**:
|
||||
- Day 4执行Prisma迁移
|
||||
- 创建两个新表并建立关联
|
||||
|
||||
**优先级**:高(Day 4计划中)
|
||||
**预计耗时**:半天
|
||||
**状态**:计划中
|
||||
|
||||
---
|
||||
|
||||
### 债务8:API端点未实现
|
||||
|
||||
**问题描述**:
|
||||
- 全文复筛相关的RESTful API未实现
|
||||
- 前端无法调用后端服务
|
||||
|
||||
**影响**:
|
||||
- 前后端无法集成
|
||||
|
||||
**解决方案**:
|
||||
- Day 4开发API控制器
|
||||
- 实现任务创建、进度查询、结果查询、人工复核等接口
|
||||
|
||||
**优先级**:高(Day 4计划中)
|
||||
**预计耗时**:半天
|
||||
**状态**:计划中
|
||||
|
||||
---
|
||||
|
||||
### 债务9:成本优化空间
|
||||
|
||||
**问题描述**:
|
||||
- 单篇PDF处理成本约¥0.10(DeepSeek + Qwen)
|
||||
- System Prompt仍有6,601字符,有优化空间
|
||||
|
||||
**潜在优化**:
|
||||
1. 精简System Prompt(保留核心指引,移除冗余说明)
|
||||
2. 调整JSON Schema(减少description字段)
|
||||
3. 考虑单模型模式(仅DeepSeek,成本降低75%)
|
||||
|
||||
**预期效果**:
|
||||
- 成本降低30-50%(双模型)
|
||||
- 或降低75%(单模型)
|
||||
|
||||
**优先级**:中(MVP稳定后)
|
||||
**预计耗时**:1-2天
|
||||
|
||||
---
|
||||
|
||||
### 债务10:容错机制待增强
|
||||
|
||||
**问题描述**:
|
||||
- 虽然已实现3层JSON解析策略,但缺少"LLM重试"层
|
||||
- 如果3层解析都失败,任务直接失败
|
||||
|
||||
**建议**:
|
||||
- 在生产环境中监控JSON解析失败率
|
||||
- 如果失败率>5%,实施第4层:LLM重试(带强化Prompt)
|
||||
|
||||
**优先级**:低(待生产数据验证)
|
||||
**预计耗时**:1天
|
||||
**条件触发**:JSON解析失败率>5%
|
||||
|
||||
---
|
||||
|
||||
## 📚 相关文档
|
||||
|
||||
**标题摘要初筛**:
|
||||
- [模块当前状态与开发指南](../00-模块当前状态与开发指南.md) - 已知问题来源
|
||||
- [任务分解](../04-开发计划/03-任务分解.md) - Week 4任务清单
|
||||
- [Prompt设计与测试报告](../05-开发记录/2025-11-18-Prompt设计与测试完成报告.md) - 质量问题分析
|
||||
- [今日工作总结](../05-开发记录/2025-11-18-今日工作总结.md) - 边界问题诊断
|
||||
|
||||
**全文复筛**:
|
||||
- [全文复筛开发计划](../04-开发计划/04-全文复筛开发计划.md) - 开发进度和计划
|
||||
- [全文复筛质量保障策略](../02-技术设计/08-全文复筛质量保障策略.md) - 质量策略设计
|
||||
- [Day 2-3开发记录](../05-开发记录/2025-11-22_Day2-Day3_LLM服务与验证系统开发.md) - 已完成工作
|
||||
|
||||
---
|
||||
|
||||
**文档维护**:
|
||||
@@ -862,6 +1079,7 @@ const estimate = estimateCost(literatures);
|
||||
- 每次解决技术债务后标记状态
|
||||
- 定期评估优先级(每月)
|
||||
|
||||
**最后更新**:2025-11-21
|
||||
**下次评估**:Week 4完成后
|
||||
**最后更新**:2025-11-22(v1.1)
|
||||
**本次更新**:新增全文复筛技术债务(10项)
|
||||
**下次评估**:全文复筛MVP完成后
|
||||
|
||||
|
||||
Reference in New Issue
Block a user