使用最小内存在大数据集上实现高效的向量数据库。
项目描述
磁盘向量索引 - 大数据集(100M+)的超低内存向量搜索
索引大型数据集(100M+嵌入)通常需要大多数向量数据库很多内存:对于100M文档/嵌入,大多数向量数据库需要大约 500GB的内存,这相应地提高了您服务器的成本。
此存储库提供方法,可以在仅 300MB内存的情况下对非常大的数据集(100M+)进行搜索,使语义搜索对内存有限的开发人员变得可行。
我们提供各种预构建索引,可用于语义搜索并支持您的RAG应用程序。
预构建索引
以下列出了不同的预构建索引。嵌入在第一次调用时下载,索引大小在索引大小下指定。大多数嵌入是从磁盘内存映射的,例如,对于 Cohere/trec-rag-2024-index
语料库,您需要15GB的磁盘空间,但只需380MB的内存来加载索引。
名称 | 描述 | 文档数量 | 索引大小(GB) | 所需内存 |
---|---|---|---|---|
Cohere/trec-rag-2024-index | 用于 TREC RAG 2024 的分段语料库 | 113,520,750 | 15GB | 380MB |
fineweb-edu-10B-index (即将推出) | 从 fineweb-edu 的10B标记样本嵌入并按文档级别索引。 | 9,267,429 | 1.4GB | 230MB |
fineweb-edu-100B-index (即将推出) | 从fineweb-edu中嵌入并按文档级别索引的100B token样本。 | 69,672,066 | 9.2GB | 380MB |
fineweb-edu-350B-index(即将推出) | 从fineweb-edu中嵌入并按文档级别索引的350B token样本。 | 160,198,578 | 21GB | 380MB |
fineweb-edu-index(即将推出) | 完整的1.3T token数据集fineweb-edu嵌入并按文档级别索引。 | 324,322,256 | 42GB | 285MB |
每个索引都包含相应的语料库,这些语料库被分割成更小的部分。这些块按需下载并用于后续查询。
入门指南
从cohere.com获取您的免费Cohere API密钥。您必须将此API密钥设置为环境变量
export COHERE_API_KEY=your_api_key
安装包
pip install DiskVectorIndex
然后您可以通过以下方式搜索
from DiskVectorIndex import DiskVectorIndex
index = DiskVectorIndex("Cohere/trec-rag-2024-index")
while True:
query = input("\n\nEnter a question: ")
docs = index.search(query, top_k=3)
for doc in docs:
print(doc)
print("=========")
您也可以通过以下方式从磁盘加载已完全下载的索引
from DiskVectorIndex import DiskVectorIndex
index = DiskVectorIndex("path/to/index")
它是如何工作的?
Cohere嵌入已优化以在压缩向量空间中良好工作,如我们Cohere int8 & binary Embeddings博客文章中详细说明。嵌入不仅被训练以在float32中工作,这是需要大量内存的,而且还可以很好地与int8、二进制和产品量化(PQ)压缩一起操作。
上述索引使用产品量化(PQ)将原始的每个嵌入从1024*4=4096字节减少到仅128字节,将您的内存需求降低了32倍。
此外,我们使用faiss和内存映射IVF:在这种情况下,只需要在内存中加载非常小的一部分(介于32,768和131,072之间)嵌入。
需要大规模语义搜索吗?
在Cohere,我们帮助客户在数十亿个嵌入上运行语义搜索,成本仅为一小部分。如果您需要一个可扩展的解决方案,请随时联系Nils Reimers。
项目详情
DiskVectorIndex-0.0.2.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 6d09667935623f90d315df0fb252b38ab59ed922e172722436d6d754c8edc2f5 |
|
MD5 | 587bc2d06e674ad5e45aa065b1a03e85 |
|
BLAKE2b-256 | 473031f764edf001e4fc1004ed4de7ce6d220745396158349ed272150e598402 |