When you access a row of the dataset via index, dataset[i], it’s reading from disk unless keep_in_memory is set to true on the dataset?

Yes. You can check at any time whether your dataset is on disk or in memory with dset.cache_files, which will return an empty list in the former case.