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.