fn build_retrieve_and_generate_configuration( knowledge_base_id: &str, model_arn: &str, query: &Query, ) -> Result<RetrieveAndGenerateConfiguration, Error> { let q = query.clone(); let filter = RetrievalFilter::Equals( FilterAttribute::builder() .key("topic") .value(q.topic.into()) .build()?, ); let vector_search_config = KnowledgeBaseVectorSearchConfiguration::builder() .filter(filter) .build(); let retrieval_config = KnowledgeBaseRetrievalConfiguration::builder() .vector_search_configuration(vector_search_config) .build(); let rng_config = KnowledgeBaseRetrieveAndGenerateConfiguration::builder() .retrieval_configuration(retrieval_config) .knowledge_base_id(knowledge_base_id) .model_arn(model_arn) .build() .map_err(Box::new)?; let configuration = RetrieveAndGenerateConfiguration::builder() .r#type(RetrieveAndGenerateType::KnowledgeBase) .knowledge_base_configuration(rng_config) .build() .map_err(Box::new)?; Ok(configuration) }