🤖 AI Summary
In information retrieval (IR) experiments, pipeline-based architectures suffer from redundant computation—e.g., repeated retrieval for multi-ranker comparisons—and design–implementation misalignment due to reliance on intermediate result files. To address these issues, this paper proposes a dual-path caching mechanism. First, we introduce *implicit prefix caching*, a novel technique that automatically identifies and reuses common subcomputations via runtime cache-key derivation and operation-sequence hashing. Second, we design *pyterrier-caching*, a pluggable explicit caching extension supporting persistent storage of intermediate representations and modular integration. Implemented atop PyTerrier, our approach preserves end-to-end semantic integrity while significantly reducing I/O overhead and retrieval latency. Empirical evaluation across realistic IR research workflows demonstrates the method’s effectiveness, generality across diverse experimental configurations, and ease of adoption—requiring minimal code changes and no modification to existing pipelines.
📝 Abstract
Modern information retrieval systems often rely on multiple components executed in a pipeline. In a research setting, this can lead to substantial redundant computations (e.g., retrieving the same query multiple times for evaluating different downstream rerankers). To overcome this, researchers take cached"result"files as inputs, which represent the output of another pipeline. However, these result files can be brittle and can cause a disconnect between the conceptual design of the pipeline and its logical implementation. To overcome both the redundancy problem (when executing complete pipelines) and the disconnect problem (when relying on intermediate result files), we describe our recent efforts to improve the caching capabilities in the open-source PyTerrier IR platform. We focus on two main directions: (1) automatic implicit caching of common pipeline prefixes when comparing systems and (2) explicit caching of operations through a new extension package, pyterrier-caching. These approaches allow for the best of both worlds: pipelines can be fully expressed end-to-end, while also avoiding redundant computations between pipelines.