MultiRetrievalQAChain

### System Info

langchain='0.0.161'
python='3.9.13'
IPython= '7.31.1'
ipykernel='6.15.2'

### Who can help?

@agola11


### Information

- [ ] The official example notebooks/scripts
- [X] My own modified scripts

### Related Components

- [ ] LLMs/Chat Models
- [ ] Embedding Models
- [ ] Prompts / Prompt Templates / Prompt Selectors
- [ ] Output Parsers
- [ ] Document Loaders
- [X] Vector Stores / Retrievers
- [ ] Memory
- [ ] Agents / Agent Executors
- [ ] Tools / Toolkits
- [X] Chains
- [ ] Callbacks/Tracing
- [ ] Async

### Reproduction

```
retriever1 = Pinecone.from_documents(texts, embeddings,index_name='taxation').as_retriever()
retriever2 = Pinecone.from_documents(texts, embeddings,index_name='taxation').as_retriever()
retriever_infos = [
    {
        "name": "sindh", 
        "description": "Good for answering questions about Sindh", 
        "retriever": retriever1
    },
    {
        "name": "punjab", 
        "description": "Good for answering questions about Punjab", 
        "retriever": retriever2
    }]
chain = MultiRetrievalQAChain.from_retrievers(ChatOpenAI(model_name='gpt-3.5-turbo',temperature=0), retriever_infos,verbose=True)
chain.save('chain.json')
```
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_20160\230129054.py in <module>
----> 1 chain.save('chain.json')

~\anaconda3\lib\site-packages\langchain\chains\base.py in save(self, file_path)
    294 
    295         # Fetch dictionary to save
--> 296         chain_dict = self.dict()
    297 
    298         if save_path.suffix == ".json":

~\anaconda3\lib\site-packages\langchain\chains\base.py in dict(self, **kwargs)
    269         if self.memory is not None:
    270             raise ValueError("Saving of memory is not yet supported.")
--> 271         _dict = super().dict()
    272         _dict["_type"] = self._chain_type
    273         return _dict

~\anaconda3\lib\site-packages\pydantic\main.cp39-win_amd64.pyd in pydantic.main.BaseModel.dict()

~\anaconda3\lib\site-packages\pydantic\main.cp39-win_amd64.pyd in _iter()

~\anaconda3\lib\site-packages\pydantic\main.cp39-win_amd64.pyd in pydantic.main.BaseModel._get_value()

~\anaconda3\lib\site-packages\langchain\chains\base.py in dict(self, **kwargs)
    269         if self.memory is not None:
    270             raise ValueError("Saving of memory is not yet supported.")
--> 271         _dict = super().dict()
    272         _dict["_type"] = self._chain_type
    273         return _dict

~\anaconda3\lib\site-packages\pydantic\main.cp39-win_amd64.pyd in pydantic.main.BaseModel.dict()

~\anaconda3\lib\site-packages\pydantic\main.cp39-win_amd64.pyd in _iter()

~\anaconda3\lib\site-packages\pydantic\main.cp39-win_amd64.pyd in pydantic.main.BaseModel._get_value()

~\anaconda3\lib\site-packages\langchain\chains\base.py in dict(self, **kwargs)
    269         if self.memory is not None:
    270             raise ValueError("Saving of memory is not yet supported.")
--> 271         _dict = super().dict()
    272         _dict["_type"] = self._chain_type
    273         return _dict

~\anaconda3\lib\site-packages\pydantic\main.cp39-win_amd64.pyd in pydantic.main.BaseModel.dict()

~\anaconda3\lib\site-packages\pydantic\main.cp39-win_amd64.pyd in _iter()

~\anaconda3\lib\site-packages\pydantic\main.cp39-win_amd64.pyd in pydantic.main.BaseModel._get_value()

~\anaconda3\lib\site-packages\langchain\prompts\base.py in dict(self, **kwargs)
    186     def dict(self, **kwargs: Any) -> Dict:
    187         """Return dictionary representation of prompt."""
--> 188         prompt_dict = super().dict(**kwargs)
    189         prompt_dict["_type"] = self._prompt_type
    190         return prompt_dict

~\anaconda3\lib\site-packages\pydantic\main.cp39-win_amd64.pyd in pydantic.main.BaseModel.dict()

~\anaconda3\lib\site-packages\pydantic\main.cp39-win_amd64.pyd in _iter()

~\anaconda3\lib\site-packages\pydantic\main.cp39-win_amd64.pyd in pydantic.main.BaseModel._get_value()

~\anaconda3\lib\site-packages\langchain\schema.py in dict(self, **kwargs)
    354         """Return dictionary representation of output parser."""
    355         output_parser_dict = super().dict()
--> 356         output_parser_dict["_type"] = self._type
    357         return output_parser_dict
    358 

~\anaconda3\lib\site-packages\langchain\schema.py in _type(self)
    349     def _type(self) -> str:
    350         """Return the type key."""
--> 351         raise NotImplementedError
    352 
    353     def dict(self, **kwargs: Any) -> Dict:

NotImplementedError: 

### Expected behavior

I expected to save the chain on disk for future use.