Yea thats a good point. I wonder if a class that implements __getitem__ that calls to like redis or something, instead of an actual dict, would work well?
AFAIK you can use VectorStoreIndex to save the nodes and persist them. Later you can use load_index_from_storage to load from the persist_dir and then get nodes and build the node dict required for the RecursiveRetriever. Here is a github example : https://github.com/run-llama/llama_index/discussions/8930