""" FINAL SMART RECOMMENDER SYSTEM Embeddings + Intent + Filtering + Reranking + Keyword Boosting """ from filtered_search_engine import SmartRecommender from reranker import Reranker from keyword_boosting_layer import apply_keyword_boost # <-- booster imported import pandas as pd class FinalSalahkar: def __init__(self): print("✨ Initializing Final AI Recommender...") self.engine = SmartRecommender() self.reranker = Reranker() self.df = pd.read_csv("salahkar_enhanced.csv") print("šŸš€ System Ready!") def ask(self, query, k=7): print("\n==============================================") print(f"🧠 INPUT QUERY → {query}") print("==============================================") # STEP 1 → BASE SEARCH (filtered FAISS) # Now returns (results_list, detected_intent) results, intent = self.engine.recommend(query, k=k) # STEP 2 → Prepare embedding text for reranking prepared = [] for item in results: name = item["name"] # Find the full row for this item row = self.df[self.df["name"] == name].iloc[0] prepared.append({ "name": name, "domain": item["domain"], "category": item["category"], "region": item["region"], "embedding_score": item["score"], "text": row["search_embedding_text"], "intent": intent # Pass intent for boosting }) # STEP 3 → Cross-Encoder Reranking ranked = self.reranker.rerank(query, prepared) # STEP 4 → Keyword Boost (final scoring) boosted = apply_keyword_boost(query, ranked) # STEP 5 → Display final sorted results print("\nšŸ† FINAL SMART RANKED RESULTS:") for i, item in enumerate(boosted[:k]): print(f"{i+1}. {item['name']} | Final Score: {round(item['final_score'], 3)}") return boosted if __name__ == "__main__": bot = FinalSalahkar() bot.ask("romantic historical place india") bot.ask("spiritual peaceful temple") bot.ask("best south indian spicy breakfast") bot.ask("sweet festival food india")