Spaces:
Sleeping
Sleeping
File size: 1,016 Bytes
2db8ee1 | 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 | from sentence_transformers import SentenceTransformer
import faiss
import numpy as np
class TextVectorStore:
def __init__(self):
self.model = SentenceTransformer('all-MiniLM-L6-v2')
self.index = faiss.IndexFlatIP(384) # 384 is the dimension of the embeddings from the model
self.metadata = []
def add_texts(self, texts, metadatas=None):
embeddings = self.model.encode(texts)
embeddings = np.array(embeddings).astype("float32")
faiss.normalize_L2(embeddings)
self.index.add(embeddings)
for text, meta in zip(texts, metadatas):
enriched_meta = meta.copy()
enriched_meta["content"] = text
self.metadata.append(enriched_meta)
def search(self, query, k=5):
q_emb = self.model.encode([query])
q_emb = np.array(q_emb).astype("float32")
faiss.normalize_L2(q_emb)
_, idxs = self.index.search(q_emb.astype("float32"), k)
return [self.metadata[i] for i in idxs[0]]
|