Milvus 是由 Zilliz 开发的一款开源向量数据库,也被称为向量搜索引擎,在人工智能、机器学习等领域发挥着重要作用。
2019年,Zilliz团队开始研发Milvus,目的是解决人工智能和机器学习领域中大规模向量数据的存储和快速检索难题。2020年3月,Milvus正式开源,凭借其高性能的向量搜索能力和易用性,迅速吸引了开发者和企业的关注,在开源社区崭露头角。
2023年针对企业用户的需求,推出了企业级版本,提供了更高级的安全功能、性能优化和技术支持,满足企业在生产环境中的严格要求。
一、特点
1.高性能:具备出色的向量搜索性能,能够在大规模向量数据集中实现快速的近似最近邻搜索(ANN)。采用了优化的索引结构和搜索算法,如 HNSW(Hierarchical Navigable Small World)等,可在毫秒级内完成查询操作,即使面对海量数据也能保持高效。
2.可扩展性:支持水平扩展,能够轻松应对不断增长的数据量和查询负载。可以通过添加更多的节点来扩展集群规模,实现数据的分布式存储和处理,确保系统在大规模应用场景下的稳定性和性能。
3.多模态支持:不仅可以处理图像、音频、视频等多媒体数据的向量表示,还能处理文本等其他类型数据的向量。这使得它在多模态应用中具有广泛的适用性,能够满足不同领域的多样化需求。
4.易用性:提供了简单易用的 API,支持多种编程语言,如 Python、Java、Go 等,方便开发者进行集成和使用。同时,还提供了可视化管理界面,方便用户进行数据管理、索引创建和查询调试等操作。
5.数据安全:支持数据加密、访问控制等安全机制,确保数据的安全性和隐私性。可以对存储在数据库中的向量数据进行加密处理,防止数据泄露;同时,通过访问控制策略,限制不同用户对数据的访问权限。
二、技术架构
1.查询层:负责接收用户的查询请求,并将其转发到相应的存储节点进行处理。提供了多种查询接口,支持不同类型的查询操作,如精确查询、近似查询等。
2.存储层:负责向量数据的存储和管理。采用分布式存储架构,将向量数据分散存储在多个节点上,提高数据的可靠性和可用性。同时,支持多种存储介质,如磁盘、SSD 等,以满足不同的性能需求。
3.索引层:为向量数据构建索引,加速查询操作。提供了多种索引类型,如 HNSW、IVF(Inverted File)等,用户可以根据数据特点和查询需求选择合适的索引类型。
4.监控层:对系统的运行状态进行实时监控,包括节点状态、查询性能、数据存储等方面。提供了详细的监控指标和可视化界面,方便用户及时发现和解决问题。
三、安全和隐私
1.访问控制
身份验证:Milvus支持多种身份验证机制,如用户名和密码验证。用户在连接到Milvus数据库时,需要提供有效的用户名和密码,系统会对其进行验证,只有验证通过的用户才能访问数据库。此外,还可以与外部的身份验证服务(如LDAP、OAuth等)集成,实现更强大的身份验证功能。
角色与权限管理:允许管理员定义不同的角色,并为每个角色分配特定的权限。例如,可以创建“只读”角色,该角色的用户只能查询数据,而不能进行数据的插入、更新或删除操作;创建“管理员”角色,拥有对数据库的所有管理权限。通过这种方式,确保只有授权用户能够执行特定的操作,防止数据被未授权访问和修改。
2.数据加密
静态数据加密:在数据存储时对其进行加密,即使数据存储设备被盗或丢失,未经授权的人员也无法获取其中的敏感信息。Milvus支持对存储在磁盘上的向量数据和元数据进行加密,采用先进的加密算法(如AES),确保数据在静态状态下的安全性。
传输数据加密:在数据传输过程中,使用SSL/TLS协议对数据进行加密。当客户端与Milvus服务器进行通信时,所有的数据都会被加密传输,防止数据在传输过程中被窃取或篡改。
3.审计与监控
操作审计:记录所有用户对数据库的操作,包括登录时间、执行的命令、操作的时间戳等信息。这些审计日志可以帮助管理员追踪和审查用户的行为,及时发现异常操作和潜在的安全威胁。
性能监控:实时监控数据库的性能指标,如CPU使用率、内存使用率、查询响应时间等。通过对性能数据的分析,可以及时发现异常的性能波动,可能是由于恶意攻击或异常操作导致的,从而采取相应的措施进行防范。
4.数据隔离
多租户支持:Milvus支持多租户架构,不同的租户可以在同一个数据库实例中进行数据存储和操作,但彼此之间的数据是隔离的。每个租户有自己独立的命名空间和权限控制,确保不同租户之间的数据不会相互干扰和泄露。
四、密钥管理机制
密钥管理机制对于保障数据的安全性和隐私性起着关键作用,尤其是在数据加密过程中。
1.密钥用途
在 Milvus 里,密钥主要用于对数据进行加密保护,涵盖静态数据和传输数据两方面。对于静态数据,密钥能对存储在磁盘上的向量数据和元数据进行加密,防止数据在存储设备丢失或被盗时被非法获取;在数据传输时,密钥借助 SSL/TLS 协议加密数据,避免数据在传输过程中被窃取或篡改。
2.管理方式
用户自定义密钥:用户可以自行定义加密密钥。在配置 Milvus 时,通过特定的配置参数指定自己的加密密钥。这种方式给予用户高度的自主性,让用户能够根据自身的安全需求和策略来管理密钥。不过,这也要求用户妥善保管密钥,防止密钥泄露带来的安全风险。
密钥管理服务集成:Milvus 支持与外部的密钥管理服务(KMS)集成,像 AWS KMS、Google Cloud KMS 等。借助与这些专业的 KMS 集成,用户能够利用 KMS 提供的高级密钥管理功能,例如密钥的生成、存储、轮换和撤销等。这样可以增强密钥管理的安全性和便捷性,同时减少用户在密钥管理方面的负担。
3.组件
密钥存储:密钥会被安全地存储起来。当用户使用自定义密钥时,密钥通常存储在配置文件中,但需要确保配置文件的访问权限受到严格控制,防止未经授权的访问。而在与外部 KMS 集成时,密钥由 KMS 负责存储和管理,KMS 采用多种安全措施来保护密钥的安全,如加密存储、访问控制等。
密钥加密引擎:Milvus 具备密钥加密引擎,负责使用密钥对数据进行加密和解密操作。该引擎采用先进的加密算法,如 AES(高级加密标准),确保数据的加密强度。在数据存储时,密钥加密引擎使用密钥对数据进行加密;在数据读取时,使用相同的密钥对加密数据进行解密,以保证数据的正常使用。
4.安全策略
密钥轮换:为了降低密钥被破解的风险,需要定期进行密钥轮换。无论是用户自定义密钥还是通过 KMS 管理的密钥,都应该按照一定的周期进行更换。这样即使旧密钥被泄露,攻击者也无法利用其获取新的加密数据。
访问控制:对密钥的访问进行严格的控制。只有经过授权的人员和进程才能访问密钥,并且访问权限应该根据最小权限原则进行分配。例如,只有数据库管理员才能对密钥进行管理操作,而普通用户只能使用加密后的数据。
审计与监控:对密钥的使用情况进行审计和监控。记录密钥的访问时间、使用操作等信息,以便及时发现异常的密钥使用行为。同时,通过监控密钥的使用频率和相关性能指标,确保密钥管理系统的正常运行。
五、应用场景
1.互联网与电商
商品推荐:电商平台可以将商品的属性、用户的浏览和购买历史等信息转化为向量。通过Milvus快速查找与用户兴趣向量相似的商品向量,为用户精准推荐可能感兴趣的商品,提高商品的曝光率和销售量。
以图搜图:允许用户上传商品图片来搜索相似的商品。Milvus存储商品图片的特征向量,当用户上传图片时,系统将其转换为向量并在数据库中查找最相似的向量,返回对应的商品,提升用户购物体验。
内容推荐:在新闻、视频、社交等互联网平台中,将文章、视频、用户资料等内容转化为向量。根据用户的历史行为向量,利用Milvus找到相似内容向量进行推荐,增加用户的停留时间和参与度。
2.金融领域
风险评估:综合客户的财务数据、信用记录、交易行为等信息生成客户向量。通过Milvus对比不同客户向量,评估客户的风险等级,帮助金融机构制定更合理的风险控制策略,降低信贷风险。
欺诈检测:分析交易行为模式,将正常和异常交易分别转化为向量。实时监测交易向量,通过Milvus快速与已知的异常交易向量进行比对,及时发现潜在的欺诈交易,保障金融安全。
投资组合分析:将不同的投资产品(如股票、基金、债券等)的特征和表现转化为向量。借助Milvus寻找相似的投资组合向量,为投资者提供更科学的投资建议,优化投资组合。
3.医疗健康
医学影像诊断:把X光、CT、MRI等医学影像转化为特征向量存储在Milvus中。医生在诊断时,可快速检索相似病例的影像向量,辅助诊断疾病,提高诊断的准确性和效率。
基因序列分析:将基因序列数据转化为向量,利用Milvus快速搜索相似的基因序列,有助于基因研究、疾病诊断和个性化医疗等方面的工作。
医疗知识检索:对医学文献、病例报告等医疗知识进行向量表示,医生可以通过输入问题向量,在Milvus中查找相关的知识向量,获取准确的医学信息。
4.安防监控
目标识别与跟踪:在监控视频中,将人员、车辆等目标的特征转化为向量。通过Milvus实时对比不同时刻的目标向量,实现目标的识别和跟踪,可用于城市安防、交通管理等场景。
异常行为检测:分析正常行为模式的向量特征,存储在Milvus中。实时监测监控场景中的行为向量,与正常行为向量进行比对,及时发现异常行为,如暴力行为、非法入侵等。
5.科研领域
材料科学研究:将材料的物理和化学性质转化为向量,通过Milvus搜索具有相似性质的材料向量,帮助科研人员发现新的材料组合和性能特点,加速材料研发进程。
天文学研究:对天体的光谱、亮度、位置等信息进行向量表示,利用Milvus在海量的天文数据中快速检索相似的天体向量,辅助天文学家进行天体分类、星系演化等研究。