Commit Graph
7 Commits
Author SHA1 Message Date
zhuyongxin ed7efc58b7 feat(rag): close eval pipeline with live snapshots 2026-07-06 21:39:27 +08:00
aruo c7e2fc2ee2 feat: include breadcrumb in embedding text 2026-07-05 12:15:27 +08:00
zhuyongxin a74ccea5be feat(knowledge): breadcrumb分块上下文 & LookupKnowledgeTool日志优化
- DocumentChunk新增breadcrumb字段,分块时构建完整标题层级路径
- DocumentChunkService splitByHeadings维护标题层级栈算法
- VectorIndexService 将breadcrumb写入Milvus metadata
- LookupKnowledgeTool日志替换为结构化摘要,替代原始MD预览
- L0返回策略:唯一匹配用正文摘要,多匹配+L1有结果仅元数据(不读文件)
- 新增buildCompactSummary / buildMetadataOnlySummary方法
- 安装frontend-design skill
- 创建mvp/文档目录(架构设计+会话存储方案)
- 更新测试适配新逻辑
2026-06-26 13:56:10 +08:00
zhuyongxin 24101a8d66 feat(phase1): 支持上传时指定文档类别
功能增强:
- DocumentController 新增 category 参数
  POST /api/documents/upload?category=api

- DocumentUploadRequest 新增 category 字段
  - 支持用户指定:api、domain、troubleshoot 等
  - 默认值:upload(未指定时)

- VectorIndexService.indexDocumentChunks 接收 category
  - 将用户指定的类别存入 Milvus metadata
  - metadata.category = 用户指定值 或 "upload"

使用示例:
```bash
# 上传 API 文档
curl -X POST /api/documents/upload \
  -F "file=@redis-api.md" \
  -F "category=api"

# 上传领域知识文档
curl -X POST /api/documents/upload \
  -F "file=@cache-theory.md" \
  -F "category=domain"

# 检索时按类别过滤
searchSimilarDocuments("Redis接口", 5, "api")
```

完整流程:
1. 文件索引:自动从路径提取(aiops-docs/api/ → "api")
2. 用户上传:从接口参数获取(category=api)
3. 检索时:可按类别过滤(category 参数)

编译验证:BUILD SUCCESS
2026-06-23 16:43:47 +08:00
zhuyongxin 075cc36270 feat(phase1): 支持按类别过滤的文档检索
功能增强:
- VectorIndexService 自动提取文档类别
  - 文件索引:从路径提取(如 aiops-docs/api/ → "api")
  - 上传文档:默认类别 "upload"
  - metadata.category 字段存储类别信息

- VectorSearchService 支持类别过滤
  - searchSimilarDocuments(query, topK): 原方法,不过滤
  - searchSimilarDocuments(query, topK, category): 新方法,按类别过滤
  - 使用 Milvus expr 过滤:metadata["category"] == "xxx"

使用场景:
- 目录结构:
  aiops-docs/
  ├── api/          → category="api"
  ├── domain/       → category="domain"
  └── troubleshoot/ → category="troubleshoot"

- 检索示例:
  // 只检索 API 文档
  searchSimilarDocuments("Redis接口", 5, "api")

  // 只检索领域知识
  searchSimilarDocuments("缓存原理", 5, "domain")

  // 全量检索
  searchSimilarDocuments("问题诊断", 5, null)

编译验证:BUILD SUCCESS
2026-06-23 16:33:52 +08:00
zhuyongxin 4ef8d87961 feat(phase1): 实现文档分块向量化索引
Task 5.6: 向量化索引实现
- VectorIndexService 新增方法:
  - indexDocumentChunks(docId, chunks): 索引文档分块到 Milvus
  - deleteDocumentChunks(docId): 删除文档的所有向量
  - buildDocumentMetadata(): 构建文档元数据(区分文件索引)

核心流程:
1. 上传时:文本提取 → 分块 → 向量化 → 存入 Milvus + MySQL
2. 检索时:问题向量化 → Milvus 语义检索 → 返回相似文档
3. 删除时:删除元数据 + 删除向量索引

实现细节:
- 复用 indexSingleFile 的向量化逻辑
- metadata.docId 标识文档来源(区分 upload: 和 file:)
- 删除表达式:metadata["docId"] == "xxx"
- 自动去重:上传前删除旧向量数据

DocumentManagementService 完整实现:
- uploadDocument: 完整向量化流程(移除 TODO)
- deleteDocument: 同步删除向量索引(移除 TODO)

编译验证:BUILD SUCCESS

Progress: 32/34 tasks completed (94%)
2026-06-23 16:08:50 +08:00
zhuyongxin c3a232540a refactor(phase1): 完成包名重构 (org.example → com.superbiz.agent)
Task 4.1: 包名统一重构
- 重命名 41 个 Java 文件的包名
- 更新所有 import 语句
- 恢复枚举类(FaultCategory、DiagnosisStatus、SourceType)
- 更新测试类的 import

重构范围:
- domain/entity: 3 个实体类
- domain/model: 2 个数据类
- domain/enums: 3 个枚举类
- repository: 3 个接口
- service/session: 2 个类(接口 + 实现)
- config: 9 个配置类
- controller: 2 个控制器
- agent/tool: 4 个工具类
- client: 1 个客户端
- Main.java: 主类

验证结果:
- 编译成功,无错误
- 所有测试通过 (27/27)
  - ApiDocumentRepositoryTest: 7/7 ✅
  - CaseLibraryRepositoryTest: 6/6 ✅
  - DiagnosisRecordRepositoryTest: 6/6 ✅
  - RedisSessionManagerTest: 8/8 ✅

Progress: 21/33 tasks completed (64%)
2026-06-23 14:56:04 +08:00