3.4 KiB
3.4 KiB
文档模块需求文档
1. 模块定位
Documents 模块负责文件上传、文件管理、文本抽取和知识库入库入口。
该模块是复试题快速适配的关键模块。拿到题目材料后,用户需要能快速上传文档,并让 Agent 在对话中使用这些文档。
2. 模块目标
- 支持上传题目材料和知识库文件。
- 保存文件元数据。
- 支持按场景关联文件。
- 提供文档入库入口。
- 为 Agent Core 的 RAG 模块提供文件内容。
3. 职责边界
3.1 负责
- 文件上传页面。
- 文件保存。
- 文件元数据记录。
- 文件与场景关联。
- 文本抽取入口。
- 触发 RAG 入库。
3.2 不负责
- 不负责具体向量检索算法。
- 不负责 embedding 生成细节。
- 不负责 Agent 对话编排。
- 不负责模型回答。
4. 支持文件类型
V1 必须支持:
| 类型 | 扩展名 | 说明 |
|---|---|---|
| 文本文档 | .txt |
第一优先级,最稳定 |
| Markdown | .md |
适合准备知识库和规则 |
.pdf |
复试常见材料格式,V1 抽取纯文本 | |
| Word | .docx |
复试常见材料格式,V1 抽取段落文本 |
后续增强:
| 类型 | 扩展名 | 说明 |
|---|---|---|
| Excel | .xlsx |
后续可作为业务数据源或结构化表格导入 |
5. 数据模型需求
建议模型:UploadedDocument
字段:
| 字段 | 类型 | 说明 |
|---|---|---|
id |
int | 主键 |
scenario_id |
string | 关联场景 ID |
original_name |
string | 原始文件名 |
file |
FileField | Django FileField 相对路径,不保存用户本机绝对路径 |
file_type |
string | 文件类型 |
size |
int | 文件大小 |
status |
string | uploaded / indexed / failed |
error_message |
text | 入库失败原因 |
created_at |
datetime | 上传时间 |
updated_at |
datetime | 更新时间 |
6. 页面需求
6.1 文件上传页
路径:/documents/upload/
页面元素:
- 场景选择下拉框。
- 文件选择按钮。
- 上传按钮。
- 支持类型提示。
- 上传结果提示。
6.2 文件列表页
路径:/documents/
展示内容:
- 文件名。
- 所属场景。
- 文件类型。
- 文件大小。
- 入库状态。
- 上传时间。
- 入库按钮。
7. RAG 入库流程
用户上传文件后,可以手动触发入库。
流程:
- 用户上传文件。
- 系统保存文件和元数据。
- 用户点击入库按钮。
- Documents 模块读取文件文本。
- 调用
agent_core.rag.ingest。 - 入库成功后更新状态为
indexed。 - 入库失败后更新状态为
failed并保存错误信息。
8. 文本抽取需求
V1 文本抽取策略:
.txt:按 UTF-8 读取,失败时尝试系统默认编码。.md:按 UTF-8 读取,保留标题和正文。.pdf:抽取纯文本,不要求 OCR、表格还原和复杂版式理解。.docx:抽取段落、标题和普通表格文本,不要求完整保留 Word 样式。
入库失败后的文档允许重新触发入库。重新入库前需要清理或覆盖同一 document_id 对应的旧 chunk,避免重复检索。
9. 验收标准
- 可以上传
.txt、.md、.pdf、.docx文件。 - 上传后可以在文件列表看到记录。
- 文件可以关联到指定场景。
- 可以触发文件入库。
- 入库成功后状态变为
indexed。 - 入库失败时页面能显示失败原因。
- 入库失败的文档可以重新入库。