Skip to content

认识向量数据库——Milvus

最近在做一个搜索项目,通过关键词搜索与向量搜索的结合期望获得更好的搜索体验和效果。关键词搜索直接基于ES实现,那么向量搜索应该如何实现呢?

目前很多数据库都已经支持了向量查询的能力,比如ES、PG等,然而在测试过程中都出现了或多或少的痛点,随即我们决定选择一款开源免费的高性能、高扩展的向量数据库——Milvus。

什么是Milvus

Milvus 是一种高性能、高扩展性的向量数据库,开源许可为Apache2.0。

Milvus

Milvus 提供强大的数据建模功能,使您能够将非结构化或多模式数据组织成结构化集合。它支持多种数据类型,适用于不同的属性建模,包括常见的数字和字符类型、各种向量类型、数组、集合和 JSON,为您节省了维护多个数据库系统的精力。

Milvus

部署Milvus的方式

Milvus 提供三种部署模式,满足各种数据规模的使用--从本地开发到数百亿向量的大规模集群:

  • Milvus Lite 是一个 Python 库,可以轻松集成到您的应用程序中。作为 Milvus 的轻量级版本,它非常适合快速原型开发,或在资源有限的边缘设备上运行。
  • Milvus Standalone 是单机服务器部署,所有组件都捆绑在一个 Docker 镜像中,方便部署。
  • Milvus Distributed 可部署在集群上,采用云原生架构,专为十亿规模甚至更大的场景而设计。该架构可确保关键组件的冗余。

Milvus支持的搜索类型

Milvus 支持各种类型的搜索功能,以满足不同用例的需求:

  • ANN 搜索:查找最接近查询向量的前K个向量。
  • 过滤搜索:在指定的过滤条件下执行 ANN 搜索。
  • 范围搜索:查找查询向量指定半径范围内的向量。
  • 混合搜索:基于多个向量场进行 ANN 搜索。
  • 关键词搜索基于 BM25 的关键词搜索。
  • 重新排序根据附加标准或辅助算法调整搜索结果的顺序,完善最初的 ANN 搜索结果。
  • 获取:根据主键检索数据。
  • 查询使用特定表达式检索数据。

进阶

Milvus给我带来了很多惊喜,让我重新理解了什么才算是一款优秀的向量数据库产品——不限制开发者的想象。如果你也对Milvus有兴趣,可以关注:遇码,回复:milvus获取官方文档。

遇码MeetCoding 开源技术社区