向量量化:扩展搜索和生成式人工智能应用程序

Mai Nguyen and Henry Weller

#genAI#Vector Search

Update 12/12/2024: The upcoming vector quantization capabilities mentioned at the end of this blog post are now available in public preview:

Support for ingestion and indexing of binary (int1) quantized vectors: gives developers the flexibility to choose and ingest the type of quantized vectors that best fits their requirements.

Automatic quantization and rescoring: provides a native mechanism for scalar quantization and binary quantization with rescoring, making it easier for developers to implement vector quantization entirely within Atlas Vector Search.

View the documentation to get started.

我们很高兴地宣布 MongoDB Atlas Vector Search 将提供一组强大的向量量化功能。这些功能在保持性能的同时还将减小向量大小,使开发者能够以更大的规模和更低的成本构建强大的语义搜索和生成式人工智能应用程序。此外,与关系型或生态位向量数据库不同,MongoDB 灵活的文档模型与量化向量相结合,可以轻松快捷地测试和部署不同嵌入模型,同时提高灵活性。

对标量量化向量注入的支持现已普遍推出,未来几周还将发布几个新版本。继续阅读以了解向量量化的工作原理,访问我们的文档即可开始

Brand graphic representing Atlas Vector Search

大规模向量应用程序的挑战

虽然向量的使用开辟了一系列新的可能性,如内容摘要和情感分析、自然语言聊天机器人和图像生成,但要从非结构化数据中获得洞察,可能需要存储和搜索数十亿个向量,这很快就会变得不可行。

向量实际上是浮点数数组,以计算机可以理解的方式表示非结构化信息(从几百到数十亿数组不等),随着向量数量的增加,搜索向量所需的索引大小也随之增加。因此,使用全保真向量的大规模向量应用程序通常具有较高的处理成本,并且查询速度慢,从而影响了其可扩展性和性能。

向量量化可提升成本效益、可扩展性和性能

向量量化是一种可保留语义相似性的向量压缩技术,为这一挑战提供了解决方案。想象一下,将全彩图像转换为灰度图像,就能减少计算机上的存储空间。这需要将相似的颜色归入原色通道或“量化区间”,以简化每个像素的颜色信息,然后用其区间中的单个值来表示每个像素。然后使用已划分区间的值创建新的灰度图像,新图像的尺寸更小,但保留了大部分原始细节,如图 1 所示。

图 1:将 RGB 图像量化为灰度图像的示意图
This image is an illustration of quantizing an RGB image into grayscale. On the left side is a photo of a puppy in normal color. In the middle is that same photo in RGB examples. And then on the right is a grayscale version of the photo.

向量量化的工作原理与此类似,缩小全保真向量的位数可以显著降低内存和存储成本,而不会影响重要细节。保持这种平衡至关重要,因为搜索和 AI 应用程序需要提供相关的洞察才能发挥作用。

有效的量化方法有两种:标量量化(将浮点转换为整数)和二进制量化(将浮点转换为一位 0 或 1)。现有的和即将推出的量化功能将助力开发者充分挖掘 Atlas Vector Search 的潜力。

向量量化最显著的优势是通过减少计算资源和高效处理向量提升了可扩展性并节省了成本。与搜索节点(MongoDB 的专用基础架构,可通过工作负载隔离性实现独立可扩展性,针对语义搜索和生成式人工智能工作负载进行了内存优化)相结合时,向量量化可进一步降低成本并提高性能,即使在最大容量和规模下也能解锁更多使用案例。

"Cohere 很高兴成为首批支持 MongoDB Atlas 量化向量注入的合作伙伴之一,”Cohere 人工智能搜索副总裁 Nils Reimers 表示。“像 Cohere Embed v3 这样的嵌入模型可帮助企业根据自己的数据源查看更准确的搜索结果。我们期待为我们的共同客户提供准确、经济实惠的应用程序,以满足他们的需求。”

在我们的测试中,与全保真向量相比,BSON 型向量(MongoDB 的类 JSON 二进制序列化格式,用于高效文档存储)将存储空间减少了 66%(从 41 GB 减少到 14 GB)。如图 2 和图 3 所示,测试表明,使用量化向量可以显著减少内存(减少 73% 到 96%),延迟也有所改善,其中标量量化保留了召回性能,二进制量化的召回性能通过重新评分来维持(重新评分是根据全保真向量对一小部分量化输出进行评估的过程,可提高搜索结果的准确性)。

图 2:通过不同嵌入模型上的量化,存储空间显著减少,召回和延迟性能良好
This image is a table displaying storage size and latency times for different amounts of documents and test groups. The test is divided into three groups, which are Full-Fidelity Vectors, Scalar Quantization, and Binary Quantization. Then, there are two different groups for the number of total documents, one being 200k docs on OpenAI embedding models, and the other being 3 million docs on Cohere embedding model. For the data, the full-fidelity vectors test on 200k docs had a vector index size of 1.2 GB and a latency of 13ms, and a 12GB vector index size and 26ms latency on the 3 million docs test. The Scalar Quantization test had a vector index size of .32 GB and 11ms latency on the 200k docs test, and a 3.2 GB vector index size and 19ms latency on the 3 million docs test. Finally, the binary quantization had a .05 GB vector index size on the 200k docs test (a 96% reduction from other tests) along with a 12ms latency, and then a .5 GB vector index size on 3 million docs test, representing a 96% reduction from the Full-Fidelity Vectors test.

图 3:与重新评分相结合时,二进制量化的召回性能显著提高
This image is a graph of improvement in recall performance for binary quantization when combining with rescoring. The Y axis of the graph represents average recall over 50 queries, while the X axis represents num candidates. There are 4 lines on the graph, each representing a different type of queries. The line representing binary, in red, starts near 0,0 and stays below 0.6 on the graph across all num candidates, putting it as the lowest line on the graph. The float ANN line, in blue, starts near the top of the Y axis at 0 num candidates and moves in a level line across the graph, same goes for the scalar line, in orange, which comes in just below the float ANN. The binary + rescoring line starts towards the bottom of the Y axis at 0 num candidates, but gradually increases the more the graph moves right.

此外,由于成本方面的优势,向量量化有利于实现更先进的多向量使用案例,这类使用案例由于计算负担太重或成本太高而难以实现。例如,向量量化可以帮助用户:

  • 在原型设计期间,使用从同一源字段生成的多个向量,轻松地对不同嵌入模型进行 A/B 测试。MongoDB 的文档模型与量化向量相结合,能够以更低的成本实现更高的灵活性。灵活的文档模式支持开发者快速部署和比较嵌入模型的结果,而无需重建索引或预配全新的数据模型或基础架构。

  • 通过合并来自多个相关源的向量,例如嵌入在相同或不同模型中的不同源字段(产品描述、产品图像等),进一步提高大型语言模型 (LLM) 搜索结果或上下文的相关性。

如何开始,以及下一步

现在,凭借对标量量化向量注入的支持,开发者可以直接在 Atlas Vector Search 中导入和使用量化向量,这些量化向量来自他们所选择的嵌入模型提供商(如 Cohere、Nomic、Jina、Mixedbread 等)。阅读文档教程即可开始。

未来几周还会推出其他向量量化功能,开发者可借助这套全面的工具集,使用量化向量来构建和优化应用程序:

支持注入二进制量化向量,将进一步减少存储空间,从而节省更多成本,开发者能够灵活选择最符合其要求的量化向量类型。

自动量化和重新评分将为标量量化提供原生功能,以及在 Atlas Vector Search 中通过重新评分进行二进制量化的功能,开发者可以更轻松地充分利用平台中的向量量化功能。

MongoDB Atlas Vector Search 支持量化向量,您可以灵活构建可扩展的高性能语义搜索和生成式人工智能应用程序,并实现成本效益。查看这些资源获取入门文档教程

立即查看我们的快速入门指南,开始使用 Atlas Vector Search。