资讯动态

30.MinIOS3OSS-RAG原始文件应该存在哪里

发布时间:2026/9/16 8:15:02 来源:尧图企业网站定制
MinIO、S3、OSSRAG 原始文件应该存在哪里码海寻道 · 大模型、智能体与 RAG 工程组件系列第 30 篇RAG 系统中的 PDF、Word、Excel、图片和扫描件不适合直接塞进 PostgreSQL也不应该只保存一份临时上传文件。对象存储通常是更合适的原始文件层文件内容放在 Bucket 中业务数据库保存文件元数据和处理状态。对象存储保存的是文件字节不是完整的业务权限系统。PostgreSQL 仍应保存document_id、租户、版本、哈希、对象 Key、上传者、扫描状态和发布状态下载或预签名 URL 必须先经过业务鉴权。一、三者是什么关系Amazon S3云上的对象存储服务和事实上的 S3 API 生态标准。适合直接使用 AWS 云资源的团队。MinIO兼容 S3 API 的对象存储软件适合本地部署、私有化和需要在内网保存文件的场景。OSS通常指云厂商提供的对象存储服务例如阿里云 OSS。它与 S3 类似都是托管式对象存储但具体 API、权限和计费规则以云厂商为准。选型时关注的不是名称而是部署位置、合规要求、容量、网络、备份、可用性和运维能力。二、RAG 文件存储架构用户上传 ↓ 对象存储保存原始文件和派生文件 ↓ PostgreSQL记录 document_id、路径、版本、权限、状态 ↓ 消息队列发布解析任务 ↓ Worker下载文件、解析、OCR、切分和向量化原始文件是事实来源解析文本和缩略图是派生数据。派生数据损坏时应能够根据原始文件重新构建。三、不要把对象存储路径直接当业务主键推荐使用稳定的业务 IDdocument_id doc-001 object_key tenants/tenant-a/documents/doc-001/v3/source.pdf业务数据库保存CREATETABLEdocument_files(document_id uuidPRIMARYKEY,tenant_idtextNOTNULL,object_keytextNOTNULL,content_typetextNOTNULL,size_bytesbigintNOTNULL,sha256textNOTNULL,versionintegerNOTNULL,statustextNOTNULL,created_at timestamptzNOTNULLDEFAULTnow());对象 Key 适合定位文件业务 ID 适合关联权限、版本和任务。四、上传方式服务端中转还是预签名 URL服务端中转文件先上传到 API再由 API 写入对象存储。权限控制直观但大文件会占用 API 带宽和连接。预签名 URLAPI 鉴权后生成一个有时效、有限权限的上传地址客户端直接上传到对象存储。服务端压力较小但必须处理上传完成确认和未完成文件清理。客户端 → API申请上传地址 API → 客户端短时预签名 URL 客户端 → 对象存储直接上传 客户端 → API确认上传完成 API校验对象、写入数据库、发布解析任务不能仅凭客户端说“上传成功”就启动解析应由服务端检查对象是否存在、大小、类型和哈希。预签名 URL 不是永久授权。它应设置短过期时间、限定对象 Key 和操作类型上传完成后还要执行 MIME、大小、内容哈希和病毒扫描校验。不要让客户端自由指定任意 Bucket 或路径。五、文件安全不能只看扩展名上传时至少检查文件大小上限MIME 类型和文件头病毒与恶意宏压缩包解压炸弹文件名和路径穿越租户访问权限内容哈希和重复上传。文件名是用户输入不应直接拼接成服务器路径或对象 Key。建议使用服务端生成的 ID 和白名单扩展名。六、如何给文件生成下载地址对象存储中的文件不一定应该公开。常见做法是由服务端鉴权后生成短时预签名下载 URLurls3_client.generate_presigned_url(get_object,Params{Bucket:bucket,Key:object_key},ExpiresIn300,)不要把永久公开链接写入答案或日志。引用展示可以返回受控的文档 ID由前端再向业务 API 请求临时访问地址。七、原始文件、解析结果和向量如何关联document_id ├── source object原始文件 ├── parsed object规范化解析结果 ├── preview object预览图或缩略图 └── vector recordsChunk 与向量每种派生数据都应带版本信息解析器版本、OCR 版本、切分版本和 Embedding 模型版本。这样模型或解析器升级时可以有选择地重建。八、MinIO、S3、OSS 如何选择场景更适合的方向AWS 云上应用S3阿里云上应用OSS内网私有化部署MinIO团队不想维护存储集群托管式 S3/OSS对数据驻留和内网隔离要求高私有化 MinIO 或合规云存储还要比较对象生命周期、跨区域复制、备份恢复、带宽费用和 SDK 兼容性。S3 兼容不等于所有高级特性完全一致。九、生命周期与成本管理不同文件可以设置不同策略热门原始文件保留在线历史版本转低频存储临时解析文件设置短生命周期删除租户时清理原始文件和派生文件备份数据保留符合合规要求的周期。不要只删除数据库记录而遗留对象存储文件也不要在没有确认恢复能力时直接清理唯一原始文件。启用版本控制后普通删除可能只是写入删除标记旧版本仍然占用空间生命周期规则还要明确非当前版本和失败临时对象的清理策略。敏感审计资料可以考虑版本保留或 Object Lock但这会改变删除和恢复语义。十、上线检查清单原始文件有稳定 document_id 和版本对象 Key 不直接使用用户文件名上传和下载均经过授权预签名 URL 有短期有效期文件类型、大小和哈希已校验解析结果属于可重建的派生数据有备份、生命周期和删除策略数据库状态与对象是否存在可以互相校验。上传后校验 MIME、大小、哈希和病毒扫描结果已配置版本控制、生命周期、非当前版本和临时对象清理已验证对象删除、恢复和备份演练结语RAG 原始文件应该放在可靠的对象存储中PostgreSQL 保存业务元数据和状态向量数据库保存检索索引。MinIO、S3 和 OSS 的选择最终取决于云上托管、私有化、合规和运维能力。下一篇将解释为什么文件上传不能同步完成解析以及消息队列如何把慢任务从用户请求中解耦出来。参考资料Amazon S3 官方文档MinIO 官方文档S3 API Compatibility阿里云 OSS 官方文档Amazon S3 官方文档Presigned URLsAmazon S3 官方文档Object Lock本文为“码海寻道”原创技术文章。对象存储的权限、生命周期和备份策略必须结合数据敏感级别与合规要求配置。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价