这实际上是一个颇具曲折性和难得性的故事。由于我自己是在公司中间加入的,从 2.0 版本开始参与了 Milvus 的构建,而我们公司在向量数据库领域已经有大约 5 年的历史了。
最初,我们看到了这个机会,并意识到有诸如 Faiss 等引擎在处理向量检索方面已经非常成熟,许多大型厂商也在使用它们。因此,我们的第一个版本设计非常简单,仅在 Faiss 上增加了一些持久化的日志,以及一些基础的 RPC。当时很多人认为 Milvus 只是在 Faiss 上做了一层封装,这是最早对 Milvus 的看法,实际上,这个结论现在可以套用在大多数正在创业的向量数据库上,它们目前架构与我们最早的 1.0 架构几乎没有什么区别。
在这个过程中,我们从 0.1 到 1.0 版本进行了许多尝试,主要受到最早一个重要客户的影响。虽然我不提及客户的名称,但他们最初使用了 Milvus 的早期版本,即 0.1 版本,来处理 1000 万数据集,效果非常好,他们很满意。
然而,他们发现随着数据量的增大,Milvus 的扩展性无法满足他们的需求。他们希望处理更大规模、达到 10 亿甚至更大的数据集,但这需要面临着诸多挑战。为此,我们采取了许多技巧,包括特殊的优化方法、更大的机型,以解决 10 亿数据的问题。
从那时起,我们认识到向量检索(在 2020 年底至 2021 年早期)的性能和扩展性是非常关键的问题。因此,我们开始着手构建 2.0 版本的核心能力。