文档处理
KnowledgeRAG 提供强大的文档处理功能,支持多种格式的上传、解析和向量化。
支持的文档格式
| 格式 | 处理方式 |
|---|---|
| pdfplumber / PyPDF2 解析,可选 OCR(pytesseract) | |
| Word (.docx) | python-docx + docx2txt 提取文本 |
| Excel / CSV | pandas + openpyxl 表格解析 |
| TXT / MD | 直接读取 |
| 图片 | pytesseract OCR 提取文字 |
文档上传
上传流程
前端选择文件 → 分块(每块默认 2MB)→ POST /api/upload-chunk/
→ POST /api/upload-complete/ → 合并 → 元数据写入文件大小限制
- 单个文件最大:50MB
- 分块大小:默认 2MB
- 重复检测:MD5 哈希比对
- 类型验证:扩展名白名单校验
操作步骤
- 进入知识库详情页
- 点击"上传文档"按钮
- 选择本地文件(可多选)
- 等待上传完成
- 查看文档列表确认上传成功
URL 内容导入
支持将网页链接导入到知识库:
操作方法
- 在知识库详情页点击"导入链接"按钮
- 输入 URL 地址(每行一个,支持批量)
- 点击"导入"开始处理
- 实时查看导入状态
注意事项
- 仅支持静态网页内容
- 动态加载的内容可能无法完整抓取
- 导入成功后自动刷新文档列表
文档管理
文档列表展示
文档列表显示以下信息:
- 名称:文件名
- 分块数:文档被切分的块数
- 上传日期:文件上传时间
- 切片方法:使用的分块策略
- 启用状态:是否参与 RAG 检索
启用/禁用文档
通过 Toggle 开关控制文档是否参与 RAG 检索:
- 启用:文档正常参与检索
- 禁用:文档暂时不参与检索,但保留在系统中
删除文档
支持逐条或批量删除:
- 选择要删除的文档(可多选)
- 点击"删除"按钮
- 二次确认
- 同步清理本地文件和元数据
搜索和过滤
- 关键词搜索:按文件名搜索
- 状态过滤:全部 / 启用 / 禁用
- 分页展示:每页 5 条,支持翻页
文档解析
系统使用先进的 OCR 技术和自然语言处理算法:
文本提取
- 扫描件:使用 OCR 识别文本
- 电子文档:直接提取文本内容
- 结构保留:保持原文档的层次结构
实体提取
- 提取关键实体和概念
- 识别专业术语
- 标记重要信息
向量化处理
解析后的文本会被转换为向量形式存储:
嵌入模型
- 使用
sentence-transformers/all-MiniLM-L6-v2 - 生成 384 维向量
- 保持语义相似性
向量存储
- 存储到 FAISS 向量数据库
- 支持高效的近似最近邻搜索
- 实时更新向量索引
性能优化
- 全局缓存机制(
_vsm_cache) - 同一知识库只加载一次 embedding 模型
- 首次加载 1-3 秒,后续毫秒级响应
最佳实践
文档准备
- 格式选择:优先使用 PDF、DOCX 等结构化格式
- 文件命名:使用清晰、描述性的文件名
- 内容质量:确保文档内容清晰、无乱码
上传策略
- 分批上传:大量文档建议分批上传
- 网络稳定:确保上传过程网络稳定
- 及时验证:上传完成后检查文档列表
文档维护
- 定期清理:删除过期或无用文档
- 状态管理:暂时不用的文档禁用而非删除
- 版本控制:更新文档时先删除旧版本
相关 API
POST /api/upload-chunk/- 分块文件上传POST /api/upload-complete/- 合并分块为完整文件GET /api/documents-list/{KLB_id}/- 获取文档列表PUT /api/update-document-status/- 更新文档状态DELETE /api/delete-documents/- 批量删除文档