It's possible, but... slightly hacky haha. Embeddings are dirt cheap, so tbh I would recommend just re-building it
But if you really want to avoid re-computing the embeddings, here's the method. Basically you need to reconstruct the original nodes and attach their embeddings, and then use those to create a new index
# load the index
index = load_index_from_storage(...)
# get the nodes and embeddings
nodes = index.docstore.docs
embeddings = index.vector_store._data.embedding_dict
# attach the embeddings
nodes_with_embeddings = []
for node in nodes:
node.embedding = embeddings[node.node_id]
# create a new index with the new backend
vector_index = VectorStoreIndex(nodes_with_embeddings, storage_context=storage_context)