text: Title: Improve indexing functionality
  Body: Currently, when indexes are combined together, their vector store is unpacked and combined together into one vector.
  This is not ideal, as it makes the individual data less prominent, just a mess of vectors collected together.
  
  Instead, when composing indexes, we should use llamaindex / langchain inbuilt functionalities to create a composite index object, where the individual indexes that were combined are distinct but still attached together.
  
  Moreover, the indexing functionality can use a revamp of its data loading tools, as it currently uses some old llama index loaders to load things like epubs, pdfs, etc, I'm sure there are better tools that have been released now. 