feat: enhance ai knowledge retrieval

This commit is contained in:
2026-06-22 21:20:09 +08:00
parent ccf35ca586
commit b319d41787
13 changed files with 1223 additions and 62 deletions
@@ -0,0 +1,109 @@
# V2 AI Platform Knowledge Retrieval Enhancement
日期:2026-06-22
## 本轮目标
本轮推进 AI 中台知识库检索增强,把上一轮“整篇知识文档关键词检索”升级为更接近 RAG 的基础结构:
- 导入批次。
- 文档切分 chunk。
- chunk 级检索结果。
- 检索命中分数。
- 来源定位。
- 法律问答返回结构化主要依据。
## 已完成
1. 数据模型
- 新增 `KnowledgeImportBatchModel`。
- 新增 `KnowledgeChunkModel`。
- `KnowledgeDocumentModel` 增加:
- `import_batch_id`
- `index_status`
2. 数据库迁移
- 新增 Alembic migration:
- `20260622_0002_add_knowledge_batches_and_chunks.py`
- 支持升级/降级:
- `knowledge_import_batches`
- `knowledge_chunks`
- `knowledge_documents.import_batch_id`
- `knowledge_documents.index_status`
3. Repository 能力
- 创建知识导入批次。
- 列出知识导入批次。
- 新增知识文档时自动切分 chunk。
- 列出文档 chunk。
- chunk 级关键词检索。
- 返回检索分数、命中词、locator、document_id、chunk_id。
4. API 能力
- `GET /api/v1/knowledge-import-batches`
- `POST /api/v1/knowledge-import-batches`
- `GET /api/v1/knowledge-documents/{document_id}/chunks`
- `GET /api/v1/knowledge-chunks/search`
- 旧接口 `GET /api/v1/knowledge-documents/search` 保持兼容。
5. 法律问答增强
- 法律问答优先使用 chunk 检索。
- `LegalCitation` 增加:
- `score`
- `locator`
- `document_id`
- `chunk_id`
- `knowledge_base_id`
- `LegalQaResponse` 增加 `primary_sources`。
- 旧字段 `citations` 保持兼容。
6. SDK 能力
- 新增知识导入批次类型和方法。
- 新增 chunk 类型和方法。
- 新增 scored chunk search 方法。
- 法律问答响应支持 `primary_sources`。
## 验证结果
已通过:
```powershell
python -m pytest
```
当前结果:
```text
21 passed
```
覆盖点:
- 知识导入批次创建和统计更新。
- 文档自动切分 chunk。
- chunk 搜索返回 score 和 locator。
- SQLite 持久化仓库可跨实例读取批次、chunk 和审计。
- 法律问答返回 `primary_sources`。
- SDK 覆盖新增知识库检索能力。
## 当前边界
本轮仍是关键词检索,不是正式向量检索。
尚未完成:
- embedding 生成。
- 向量库或 pgvector。
- 混合检索排序。
- 文档上传解析、OCR、复杂 DOCX/PDF 切分。
- AI 审计记录命中文档 ID 列表、token、费用、provider 错误详情。
## 下一轮建议
下一轮进入知识库索引质量增强:
1. 增加 embedding 字段和向量检索适配层。
2. 引入 `pgvector` 或独立向量库的技术选择和迁移。
3. 增加检索 explain 信息:关键词分、向量分、最终分。
4. AI 审计记录 `hit_chunk_ids`、provider 错误、token 和成本。
5. 法律问答输出按“结论、主要依据、风险提示、建议动作”结构化。