Here's a bug in the 0.6 version. If I add the documents to the vector as follows: index = GPTVectorStoreIndex([], service_context=service_context) for i, doc_chunk in enumerate(chunks_so_far): index.insert(doc_chunk) then when it persists the storage_context , no doc_ids get written to the json file. When I build it with the one line. tree_index = GPTVectorStoreIndex.from_documents(chunks_so_far, service_context=service_context) it works fine to save the index. I assume the first version should work.