Spaces:
Sleeping
Sleeping
File size: 1,128 Bytes
4598ede 3a93742 4598ede 3a93742 4598ede | 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 30 31 32 33 34 35 36 37 38 | from sentence_transformers import SentenceTransformer
import faiss
import numpy as np
from config import EMBEDDING_MODEL
class SimpleVectorStore:
def __init__(self, embeddings, documents):
self.embeddings = embeddings
self.documents = documents
self.index = None
self._build_index()
def _build_index(self):
texts = [doc.page_content for doc in self.documents]
vectors = self.embeddings.encode(texts)
dimension = vectors.shape[1]
self.index = faiss.IndexFlatL2(dimension)
self.index.add(np.array(vectors).astype('float32'))
def similarity_search(self, query, k=3):
query_vector = self.embeddings.encode([query])
distances, indices = self.index.search(
np.array(query_vector).astype('float32'),
k
)
return [self.documents[i] for i in indices[0]]
_embeddings_model = SentenceTransformer(EMBEDDING_MODEL)
def build_vectorstore(documents):
"""Constrói vectorstore a partir de documentos"""
return SimpleVectorStore(_embeddings_model, documents) |