主题
大规模文档知识化的吞吐、成本和索引速度怎样优化?
题型:调优 · 先找到解析、Embedding、数据库或索引中的真实瓶颈。
建议回答
我会按文档类型统计解析耗时、chunk 数、Embedding 吞吐、批量写入耗时、失败率和队列积压。解析、Embedding 和写库解耦成有界任务阶段,按租户和模型限额控制并发;Embedding 使用 Token 数感知的动态批处理,避免单批超限;Milvus 与 PostgreSQL 使用批量 upsert,减少网络往返。
对未变化的 chunk 通过内容哈希复用 Embedding,文档更新只处理差异;大任务采用分片和 Checkpoint,避免失败后全量重跑。索引构建要结合实时可见性要求:小批增量写入与大批离线构建使用不同策略,同时监控向量库 compaction、索引负载和查询性能。
关键权衡
- 并发越高不一定越快,可能触发模型限流或数据库抖动。
- 批越大吞吐越高,但失败重试成本和单批延迟也更高。
- Embedding 缓存键必须包含模型、维度、预处理和内容版本。
易错点
- 不能只优化向量写入,PDF 解析和 OCR 可能才是瓶颈。
- 离线任务也要做租户公平调度,避免大客户饿死其他任务。