You could write your custom sampler and pass it to the DataLoader, which should return the indices as you need them.
Alternatively, you could reduce the length of your Dataset by the factor of your batch size, and create the batch in __getitem__ manually using batch_size=1 in your DataLoader.
While this approach could be simpler to implement, each batch will be created by a single worker, which might slowdown your code, if the bottleneck is in data loading.