Skip to content

文档管理

文档是知识库的基础内容单元。每个文档经过「上传 -> 解析 -> 分片 -> 向量化」的处理流程后,其内容即可被检索和引用。

支持的文档格式

Snail AI 支持以下 10 种常见文档格式:

格式扩展名说明
PDF.pdf便携式文档格式,支持文本提取与 OCR
Word.docx .docMicrosoft Word 文档,支持新旧两种格式
Excel.xlsx .xlsMicrosoft Excel 电子表格
Markdown.md轻量级标记语言文档
HTML.html .htm网页文档
纯文本.txt纯文本文件
CSV.csv逗号分隔值文件
PPT.pptxMicrosoft PowerPoint 演示文稿

提示: 上传文件时系统会自动根据文件扩展名和 MIME 类型判断格式,并选择对应的解析器。

文档导入

进入知识库详情页的「文档」标签页,点击「导入文档」按钮即可打开导入窗口。

导入方式

系统提供三种导入方式(云端导入开发中):

导入方式说明
本地上传拖拽或选择本地文件上传,支持批量多文件
URL 导入输入文档的公网 URL 地址,系统自动下载并解析
云端导入(开发中)从云端存储服务导入

本地上传流程

本地上传采用两阶段提交设计,确保文档入库前用户可以审核去重匹配结果:

第一阶段:预览(Preview)

上传文件后,系统返回每个文件的去重预测结果:

字段说明
previewToken本次预览的唯一标识
fileName文件名
fileType文件类型
fileSize文件大小
contentHash文件内容哈希值
decision预测决策:NEW(新文档)/ SKIP(跳过)/ OVERWRITE(覆盖)/ REJECT(拒绝)
matchType匹配类型:NONE / BY_NAME / BY_CONTENT / BOTH
conflictDocumentId冲突的已有文档 ID
conflictDocumentName冲突的已有文档名称

第二阶段:提交(Commit)

用户确认或调整每个文件的决策后,提交最终入库请求:

json
{
  "previewToken": "token-xxx",
  "items": [
    { "tempResourceId": 1, "decision": "NEW" },
    { "tempResourceId": 2, "decision": "OVERWRITE" },
    { "tempResourceId": 3, "decision": "SKIP" }
  ]
}

提交结果中如果 conflictChangedtrue,表示在预览与提交之间有其他用户修改了冲突文档状态(TOCTOU 竞态),需要用户重新确认。

提示: 如果知识库关闭了「上传二次确认」选项,则文件直接上传入库,不经过预览阶段。

URL 导入

通过 URL 导入文档时,需填写以下信息:

字段必填说明
文档 URL需要是可公网访问的文档直链
文档名称自定义文档名称,留空则从 URL 自动推断
POST /document/import/url
Content-Type: application/json

{
  "ragId": 1,
  "url": "https://example.com/document.pdf",
  "name": "产品手册"
}

文档状态生命周期

文档从上传到可检索需要经历多个处理阶段:

状态说明

状态码状态文本显示说明
0pending等待中文档已入库,等待解析处理
1 / 2parsing / processing解析中正在进行文档解析、分片或向量化,前端显示旋转加载图标
3success成功所有处理完成,文档可被检索
4failed失败处理过程中出错,可查看错误信息并重新解析

提示: 当存在处理中的文档时,系统每 3 秒自动刷新文档列表状态,无需手动刷新。

文档操作

文档列表

文档列表以数据表格形式展示,包含以下列:

说明
文件名带文件类型图标,点击可预览
状态当前处理状态标签
分片数该文档生成的分片数量
文件大小格式化显示(KB/MB/GB)
来源上传方式(本地上传 / URL 导入 / 云端)
文件类型PDF / DOCX 等格式标签
上传时间文档入库时间
操作预览、查看分片、下载、重新解析、删除

文档预览

点击文件名或操作菜单中的「预览」,在右侧抽屉中展示文档内容。根据文件类型使用不同的预览方式:

文件类型预览方式
PDFiframe 嵌入浏览器原生 PDF 渲染
HTMLiframe 嵌入,启用沙箱模式
Markdown使用 markdown-it 渲染为 HTML
Word (DOCX)使用 mammoth 转换为 HTML
Excel (XLSX)使用 SheetJS 渲染为 HTML 表格
TXT / CSV等宽字体纯文本展示
PPTX 等提供下载按钮

重新解析

对于解析失败(failed)的文档,可在操作菜单中点击「重新解析」触发再次处理:

POST /document/{id}/reprocess

重新解析会清除原有分片和向量数据,从文档解析阶段重新开始。

文档下载

通过操作菜单中的「下载」获取文档原始文件:

GET /resource/{resourceId}/preview    -- 预览
GET /resource/{resourceId}/download   -- 下载

删除文档

删除文档时会同时清除该文档关联的所有分片和向量数据。

DELETE /document/{id}

API 接口汇总

接口方法说明
/document/pageGET分页查询文档列表,支持 ragIdpagesize 参数
/document/{id}GET获取文档详情
/document/upload/previewPOST上传预览(multipart/form-data)
/document/upload/commitPOST上传提交
/document/upload/preview/{token}DELETE取消预览,释放临时资源
/document/import/urlPOSTURL 导入文档
/document/{id}/reprocessPOST重新解析文档
/document/{id}DELETE删除文档
/resource/{resourceId}/previewGET文档预览(二进制流)
/resource/{resourceId}/downloadGET文档下载(二进制流)

Apache 2.0 Licensed