Building a Robust Ingestion System for Any File of Any Size
8 hours ago
- #scalable-processing
- #file-ingestion
- #semantic-chunking
- Mixedbread 重构了其数据摄取管道,通过将处理过程拆分为切片器和解析器来处理任意大文件。
- 切片器根据特定类型的单位(页、秒、字符)将文件切分为有边界的切片。
- 解析器在固定大小的工作节点上逐片处理切片,确保内存使用取决于切片大小,而非文件大小。
- 主要挑战包括文件体积巨大、小文件处理成本难以预测,以及未经过清理的文件。
- 切片避免了固定大小的分割,通过保留语义边界来维持检索质量。
- 处理流程包括探测文件范围、切片、解析、工作节点间传递处理权,以及完成处理。
- 选择切片大小的原则是适配工作节点的限制,使系统可重试且具备幂等性。
- 通过根据解析后的块尾调整切片起始位置来保留语义边界。
- 通过流处理、渲染限制和惰性块迭代实现内存边界控制。
- 摄取前的成本估算使用廉价指标(如页数或时长)进行配额管理。
- 未来的改进旨在实现并发切片处理,同时保持语义完整性。