# jewelry_recommender.py import warnings from config import Config from supportingfiles.model_loader import ModelLoader from supportingfiles.image_processor import ImageProcessor from supportingfiles.recommender import RecommenderEngine class JewelryRecommenderService: """Main service class for the Jewelry Recommender System.""" def __init__(self, index_path=None, metadata_path=None): """Initialize the jewelry recommender service. Args: index_path (str, optional): Path to FAISS index metadata_path (str, optional): Path to metadata pickle file """ warnings.filterwarnings("ignore") # Load the model self.model = ModelLoader.load_feature_extraction_model() # Load index and metadata self.index, self.metadata, success = ModelLoader.load_index_and_metadata( index_path, metadata_path ) # Initialize pipeline components self.image_processor = ImageProcessor(self.model) self.recommender = RecommenderEngine(self.index, self.metadata) def get_recommendations(self, image, num_recommendations=None): """Get recommendations for a query image. Args: image: Query image (various formats) num_recommendations (int, optional): Number of recommendations Returns: list: Recommendation results """ num_recommendations = num_recommendations or Config.DEFAULT_NUM_RECOMMENDATIONS # Extract embedding from the image embedding = self.image_processor.extract_embedding(image) # Get similar items based on the embedding recommendations = self.recommender.find_similar_items( embedding, num_recommendations ) return recommendations