from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
# 1. Load the sentence embedding model
model = SentenceTransformer("all-MiniLM-L6-v2")
# 2. Define FAQ sentences
faqs = [
"How do I reset my password?",
"How can I change my email address?",
"Where can I check my order status?",
"How do I cancel my subscription?",
"What payment methods do you accept?",
"How can I contact customer support?"
]
# 3. Generate embeddings for all FAQ sentences
faq_embeddings = model.encode(faqs)
# 4. Define a user query
query = "I forgot my password. How can I create a new one?"
# 5. Generate embedding for the query
query_embedding = model.encode([query])
# 6. Calculate cosine similarity
similarity_scores = cosine_similarity(
query_embedding,
faq_embeddings
)[0]
# 7. Combine FAQ sentences with their similarity scores
results = list(zip(faqs, similarity_scores))
# 8. Sort results from highest to lowest similarity
results.sort(key=lambda x: x[1], reverse=True)
# 9. Display similarity results
print(f"\nQuery: {query}\n")
print("Similarity Results:")
for faq, score in results:
print(f"{score:.4f} - {faq}")
# 10. Display the best matching FAQ
best_faq, best_score = results[0]
print("\nBest Match:")
print(f"{best_score:.4f} - {best_faq}")