批量处理和异步调用通过优化资源利用和并行化任务来提高检索增强生成(RAG)系统的吞吐量。吞吐量是指系统在单位时间内可以处理的请求数量。批量处理将多个查询分组到一个批次中,使系统能够一起处理它们,从而减少开销并利用硬件加速(例如,GPU 并行化)。异步调用将请求的接受与处理解耦,使系统能够在不等待先前任务完成的情况下处理传入查询。例如,使用批量处理的 RAG 系统可能在单个 GPU 推理步骤中处理 10 个用户查询,而不是分 10 个单独的步骤处理,从而减少总计算时间。同样,异步处理允许系统在仍在处理旧请求的同时接受新请求,从而避免空闲时间。
然而,这些优化通常会增加单个查询的延迟。延迟衡量完成单个请求所需的时间。在批量处理中,查询可能在缓冲区中等待直到批次填满,这会增加延迟。例如,如果最优 GPU 利用率需要批次大小为 10,空批次中的第一个查询可能需要等待另外九个请求后才能开始处理。异步系统如果处理管道过载,可能会引入排队延迟,即使它们提高了整体吞吐量。例如,请求的突然激增可能导致积压,迫使某些查询在队列中等待更长时间,即使系统处理的总请求更多。这些权衡是优先考虑吞吐量而非个体速度的系统中固有的。
对延迟的影响取决于实现选择。较小的批次大小可以减少等待时间,但可能导致硬件利用率不足;而较大的批次则以牺牲延迟为代价最大化吞吐量。异步系统可以通过优先处理时间敏感请求或使用动态扩缩容来缓解此问题。例如,RAG 系统可以使用动态批处理——在批次准备好或经过短暂超时后立即处理——来平衡延迟和吞吐量。同样,异步管道可以采用负载均衡或自动扩缩容来管理队列长度。开发者必须根据工作负载模式调整这些参数:高流量系统更能从批量处理和异步处理中获益,而低延迟要求可能更适合关键查询采用较小的批次或同步处理。