tech-explainer-rag / rag /retriever.py
João Lima
changing gradio version
26b761b
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)