# ✅ FILE: chatbot/retriever.py
import os
import pickle
import numpy as np
import faiss
from sentence_transformers import SentenceTransformer

INDEX_PATH = os.path.join(os.path.dirname(__file__), 'faiss.index')
META_PATH = os.path.join(os.path.dirname(__file__), 'faiss_meta.pkl')

model = SentenceTransformer("all-MiniLM-L6-v2")

def embed_query(query: str):
    embedding = model.encode([query])
    return np.array(embedding).astype('float32')

def retrieve(query: str, top_k: int = 4):
    index = faiss.read_index(INDEX_PATH)
    with open(META_PATH, 'rb') as f:
        chunks = pickle.load(f)
    query_vec = embed_query(query)
    D, I = index.search(query_vec, top_k)
    return [chunks[i] for i in I[0]]
