[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"]}