编程(Programming)是编定程序的中文简称,就是让计算机代码解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。为了使计算机能够理解(understand)人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。
Milvus是一个开源的矢量数据库,为人工智能应用和嵌入的相似性搜索提供动力,Milvus使非结构化数据搜索更容易获得,并提供一致的用户体验,无论部署环境如何。
软件特色
全面的相似度指标
Milvus 支持各种常用的相似度计算指标,包括欧氏距离、内积、汉明距离和杰卡德距离等。您可以根据应用需求来选择最有效的向量相似度计算方式。
业界领先的性能
Milvus 基于高度优化的 Approximate Nearest Neighbor Search (ANNS) 索引库构建,包括 faiss、 annoy、和 hnswlib 等。您可以针对不同使用场景选择不同的索引类型。
动态数据管理
您可以随时对数据进行插入、删除、搜索、更新等操作而无需受到静态数据带来的困扰。
近实时搜索
在插入或更新数据之后,您可以几乎立刻对插入或更新过的数据进行搜索。Milvus 负责保证搜索结果的准确率和数据一致性。
高成本效益
Milvus 充分利用现代处理器的并行计算能力,可以在单台通用服务器上完成对十亿级数据的毫秒级搜索。
支持多种数据类型和高级搜索
Milvus 的数据记录中的字段支持多种数据类型。您还可以对一个或多个字段使用高级搜索,例如过滤、排序和聚合。
高扩展性和可靠性
您可以在分布式环境中部署 Milvus。如果要对集群扩容或者增加可靠性,您只需增加节点。
云原生
您可以轻松在公有云、私有云、或混合云上运行 Milvus。
简单易用
Milvus 提供了易用的 Python、Java、Go 和 C++ SDK,另外还提供了 RESTful API。
更新日志
新功能
#4564支持在get_entity_by_id()方法调用中指定分区。
#4806 支持在delete_entity_by_id()方法的调用中指定分区。
#4905 增加了release_collection()方法,从缓存中卸载一个特定的集合。
改进之处
#4756 提高了get_entity_by_id()方法调用的性能。
#4856 将hnswlib升级到v0.5.0。
#4958提高了IVF索引训练的性能。
修复的问题
#4778 在Mishards中访问向量索引失败。
#4797 合并具有不同topK参数的搜索请求后,系统返回错误结果。
#4838 服务器不会立即响应空集合上的索引构建请求。
#4858 对于支持GPU的Milvus,系统在有大topK(> 2048)的搜索请求时崩溃。
#4862 一个只读的节点在启动过程中会合并片段。
#4894 布隆过滤器的容量不等于它所属段的行数。
#4908 在放弃一个集合后,GPU缓存没有被清理。
#4933 系统需要很长时间才能为一个小段建立索引。
#4952 未能将时区设置为 "UTC + 5:30"。
#5008 在连续、并发的删除、插入和搜索操作中,系统随机崩溃。
#5010 对于支持GPU的Milvus,如果nbits≠8,在IVF_PQ上查询失败。
#5050 get_collection_stats()对仍在建立索引过程中的段返回错误的索引类型。
#5063 当一个空段被刷新时,系统会崩溃。
#5078 对于支持GPU的Milvus,在2048、4096或8192维度的向量上创建IVF索引时系统崩溃。
使用编程语言写的程序,由于每条指令都对应计算机一个特定的基本动作,所以程序占用内存少、执行效率高。