File size: 610 Bytes
3cf7546
 
 
 
 
8aeaa64
3cf7546
 
 
 
 
8aeaa64
 
 
3cf7546
 
 
 
8aeaa64
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import faiss
from sentence_transformers import SentenceTransformer

class SemanticIndex:
    def __init__(self):
        self.model = SentenceTransformer("all-MiniLM-L6-v2")
        self.index = None
        self.texts = []

    def build(self, texts):
        self.texts = texts
        emb = self.model.encode(texts)
        self.index = faiss.IndexFlatL2(len(emb[0]))
        self.index.add(emb)

    def search(self, query, k=10):
        if not self.index:
            return []
        q = self.model.encode([query])
        _, idx = self.index.search(q, k)
        return [self.texts[i] for i in idx[0]]