import faiss import numpy as np from sentence_transformers import SentenceTransformer def get_embeddings(texts, model): embeddings = model.encode(texts, convert_to_tensor=True) return embeddings def create_faiss_index(embeddings): embeddings_np = embeddings.cpu().numpy() # Move to CPU and convert to numpy dim = embeddings_np.shape[1] index = faiss.IndexFlatL2(dim) faiss_index = faiss.IndexIDMap(index) faiss_index.add_with_ids(embeddings_np, np.arange(len(embeddings_np))) return faiss_index def query_faiss_index(index, query_embedding, k=5): query_embedding_np = query_embedding.cpu().numpy() # Move to CPU and convert to numpy distances, indices = index.search(query_embedding_np, k) return distances, indices