File size: 2,332 Bytes
7c8312b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
"""

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")