File size: 750 Bytes
ed4afb1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import faiss
import numpy as np

class FAISSIndex:
    def __init__(self):
        self.index = None
        self.last_scores = []

    def build(self, embeddings: np.ndarray):
        if embeddings.size == 0:
            return
        
        d = embeddings.shape[1]
        self.index = faiss.IndexFlatIP(d)
        self.index.add(embeddings)

    def search(self, query_embedding: np.ndarray, k: int) -> list[int]:
        if self.index is None or self.index.ntotal == 0:
            self.last_scores = []
            return []

        k = min(k, self.index.ntotal)
        scores, indices = self.index.search(query_embedding, k)
        
        self.last_scores = scores[0].tolist()
        return indices[0].tolist()