File size: 575 Bytes
d4852d9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import itertools
import os

import numpy as np
import faiss

from app.database import ItemDatabase


class RecommenderSystem:
    def __init__(self, faiss_index_path, db_path):
        self._index = faiss.read_index(faiss_index_path)
        self._db = ItemDatabase(db_path)

    def recommend_items(self, query, n_items=10):
        query_embedding = self._db.get_item(query)["embedding"]
        _, results = self._index.search(query_embedding, k=n_items+1)
        results = filter(lambda item: item != query, results[0])
        return itertools.islice(results, n_items)