跳转到主要内容

使用最小内存在大数据集上实现高效的向量数据库。

项目描述

磁盘向量索引 - 大数据集(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 (9.3 kB 查看散列

上传时间

支持者:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面