django-order\按余弦相似度排序更快

i2byvkas  于 2021-06-19  发布在  Mysql
关注(0)|答案(0)|浏览(322)
class Item(models.Model):
    vector_repr = models.TextField(..., verbose_name='jsonified vector representation')

...

# My current solution:

def as_vector(item): return np.asarray(json.loads(item.vector_repr))

item = Item.objects.get(...)
item_vect = as_vector(item)

def cosine_similarity(other): return np.dot(item_vect, as_vector(other))

db_items = Item.objects.exclude(id=item.id)
similar_items = sorted(db_items, key=cosine_similarity)

基本上,我想对mysql数据库中的所有项进行排序,应用与给定项的余弦相似性。
问题是表示所有项的向量(vector_repr)非常大,而且数据库中的项很多,所以这种方法非常慢(~2min)。
如何加快这一进程(可能没有在我的数据库中存储每对项目的相似性)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题