The Cosmos key-value provider's exists method calls get_pair, which always fully materialises the value blob on the client. This is potentially slow for large values (and could incur egress costs, although we'd expect this provider to be used only within Azure I imagine). It might be worth implementing an additional method that selects only the id, and reimplementing exists in terms of that.