import pandas as pd import numpy as np from sentence_transformers import SentenceTransformer from sklearn.neighbors import NearestNeighbors import gradio as gr # Load data data = pd.read_csv("Mental_Health_FAQ.csv") data.rename(columns={'Questions': 'question', 'Answers': 'answer'}, inplace=True) # Load model and encode questions model = SentenceTransformer('all-MiniLM-L6-v2') faq_embeddings = model.encode(data['question'].tolist()) # Use Nearest Neighbors instead of FAISS nn = NearestNeighbors(n_neighbors=3, metric='cosine') nn.fit(faq_embeddings) # Define query function def gradio_faq(query): query_embedding = model.encode([query]) distances, indices = nn.kneighbors(query_embedding) results = "" for rank, idx in enumerate(indices[0]): question = data.iloc[idx]['question'] answer = data.iloc[idx]['answer'] results += f"🔹 **Q{rank+1}:** {question}\n**A:** {answer}\n\n" return results.strip() # Launch Gradio interface gr.Interface( fn=gradio_faq, inputs=gr.Textbox(label="Ask a Mental Health Question"), outputs=gr.Markdown(label="Top Answers"), title="🧠 Mental Health FAQ Assistant", description="Type your question to get the most relevant answers from the FAQ dataset." ).launch()