Faiss: Как создать индекс из 10 миллионов векторов размером 1024

Я хочу создать индекс почти 10 миллионов векторов размером 1024. Вот код, который я использовал.

      import numpy as np
import faiss  
import random                

f = 1024

vectors = []
no_of_vectors=10000000
for k in range(no_of_vectors):
    v = [random.gauss(0, 1) for z in range(f)]
    vectors.append(v)
        
np_vectors = np.array(vectors).astype('float32')

index = faiss.IndexFlatL2(f)  
index.add(np_vectors)                 

faiss.write_index(index, "faiss_index.index")

Код работает для небольшого количества векторов. Но предел памяти превышается, когда количество векторов составляет около 2M. я использовал index.add()вместо добавления векторов в список (vectors=[]). Но это тоже не сработало.

Я хочу знать, как создать индекс для большого количества векторов.

1 ответ

Если вы хотите продолжить использовать Faiss, есть ссылка на выбор другого индекса, например, HNSW или IVFPQ.

ссылка: https://wangzwhu.github.io/home/file/acmmm-t-part3-ann.pdf перейдите на последнюю страницу.

И еще один вариант — попробовать некоторые распределенные решения, такие как Milvus, которые строятся поверх библиотеки Ann, например faiss.

Другие вопросы по тегам