【发布时间】:2022-03-17 09:03:14
【问题描述】:
我想创建一个包含近 10M 大小为 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() 而不是将向量附加到列表(向量=[])。但效果并不好。
我想知道如何为大量向量创建索引。
【问题讨论】:
-
为什么需要 10M 大小为 1024 的向量?!这是令人难以置信的巨大!?!
-
我正在创建一个文档相似性检查工具。它由一个大型文档数据库组成。我需要将所有句子的激光嵌入添加到索引中。大约有10M。
-
嗯,也许使用 numpy 或 pandas?