[docs]classEmbeddingRouterChain(RouterChain):"""Chain that uses embeddings to route between options."""vectorstore:VectorStorerouting_keys:List[str]=["query"]model_config=ConfigDict(arbitrary_types_allowed=True,extra="forbid",)@propertydefinput_keys(self)->List[str]:"""Will be whatever keys the LLM chain prompt expects. :meta private: """returnself.routing_keysdef_call(self,inputs:Dict[str,Any],run_manager:Optional[CallbackManagerForChainRun]=None,)->Dict[str,Any]:_input=", ".join([inputs[k]forkinself.routing_keys])results=self.vectorstore.similarity_search(_input,k=1)return{"next_inputs":inputs,"destination":results[0].metadata["name"]}asyncdef_acall(self,inputs:Dict[str,Any],run_manager:Optional[AsyncCallbackManagerForChainRun]=None,)->Dict[str,Any]:_input=", ".join([inputs[k]forkinself.routing_keys])results=awaitself.vectorstore.asimilarity_search(_input,k=1)return{"next_inputs":inputs,"destination":results[0].metadata["name"]}