我们很高兴宣布,PlanetScale和MySQL即将添加对向量存储和搜索的支持。很快,你将能够将PlanetScale作为一个向量数据库,用于满足所有的AI需求,而无需使用额外的工具。


什么是向量?

向量是一个一维的实数值数组,例如 [1, 1] 是一个向量,[1.5, 8.889, 9.234] 也是一个向量。每个元素表示一个属性或维度,而元素在数组中的位置则对应一个“点”。比如在三维空间中,向量 [2, 3, 5] 表示x坐标为2,y坐标为3,z坐标为5。在人工智能的实际应用中,向量通常具有非常高的维度——远超1000!
现代数据库已经非常擅长存储数字列表。但单纯将向量作为一种普通数据类型存储并没有太多意义,就像存储地球上的点或棋盘上的位置本身并不有趣一样。向量的真正价值在于它的应用,比如存储经纬度或表示棋盘上皇后和对方车的位置。


向量在机器学习中的应用

向量之所以有用,是因为一种叫做**嵌入(embedding)**的技术。嵌入利用机器学习技术将任意数据(如图片、音乐或传感器数据)转化为向量,从而为这些数据创建一个统一的数字表示形式。这个表示形式可以通过网络传输并存储。在存储引擎中,这些向量可以与其他转换后的数据进行比较,利用数学运算(例如余弦相似度)进行相似性分析。
如果你希望更深入地了解这个主题,我推荐阅读Stephen Wolfram的文章 What Is ChatGPT Doing … and Why Does It Work?。整篇博客都值得一读,但你可以直接跳到“嵌入的概念(The Concept of Embeddings)”这一章节,它对嵌入的概念以及实际应用进行了精彩的解释。


在MySQL中存储向量

我们已经知道向量是什么,存储向量目前仍然是相对简单的——你可以使用BLOB类型,从现在开始就可以在MySQL中写入数组。但问题是:MySQL还需要哪些额外支持呢?
这就是**专门面向向量的索引**的作用所在。我们将在MySQL中新增这一功能,同时引入一流的向量数据类型。具体来说,我们将实现一种先进的算法——**Hierarchical Navigable Small World(HNSW)**,它构建了优化的图结构,使得在大规模数据集中进行向量相似性搜索变得高效。
比如,假设你的数据库中包含公司所创建的所有文档的记录。这些记录经过机器学习训练,可以识别诸如项目名称、负责团队以及其他有用信息。如果一位用户打开了某个文档,常见的任务可能是找到所有相似的内容——例如属于同一个项目、由同一团队编写或涉及相同工作流的文档。
如果没有索引,你将不得不遍历数据库中的每个文档向量,再逐一进行相似性比较。这对于大规模数据来说可能会非常耗时,性能也会很糟糕!而借助索引,你可以高效地遍历向量的图结构,并快速向用户提供相关内容,比如上周状态会议的会议记录或某项目组件的设计文档。这就是“向量搜索”的核心概念。


我们是如何实现的?

PlanetScale已经维护了一个MySQL的分支版本,我们将向量类型和索引功能添加到这一分支中。当功能发布后,我们将继续在PlanetScale中运行这份MySQL分支版本。我们还将发布包含PlanetScale定制MySQL的包和容器,用户可以通过它们进行本地测试和开发。
如果你是现有的PlanetScale客户,这些更新将是透明的:某一天,你会自动获得向量存储和检索的能力。


谁应该使用向量存储与搜索?

任何希望使用MySQL的强大功能、稳定性、可靠性和可扩展性的AI/ML应用都可以受益。不必为了向量存储而添加第二个数据库,在PlanetScale中,你能够直接完成同样的存储和检索操作,从而显著降低成本和操作负担。


何时发布?

能够在MySQL上支持向量任务是令人兴奋的。我们致力于保持稳定、可靠、高可用的产品。在发布之前,我们将继续在高强度负载下测试向量功能,以确保其符合我们严格的质量标准。



PlanetScale将把向量搜索和存储功能引入MySQL插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://www.choupangxia.com/2025/09/13/planetscale-mysql/