
概述关于Milvus的介绍可搜索网络资料或参考Milvus。关于Attu的资料官网GitHub文档对于Milvus的数据可视化有如下两个备选项Milvus_cli命令行工具AttuZilliz为Milvus专门开发的图形界面客户端相较于Milvus_cli简单直接的命令行Attu的特性提供WinMacLinux等跨平台可执行安装包易用的图形化界面Milvus主要功能全覆盖插件方便拓展自定义功能系统拓扑图信息完备易于使用帮助运维人员理解系统架构方便系统调试。下载从官方GitHub下载页面根据系统版本选择最新版如Windows系统的exe或Mac系统的dmg安装文件双击安装即可非常简单。界面简介和其他任何一款数据库连接工具类似非常简单不再赘述。如果配置过认证则需要输入token、用户名、密码。连接成功后的界面从上图可看到顶部展示连接信息当前是主页太阳图标表明当前是白亮(light)模式点击图标可切换到暗黑(night)模式图标右侧也展示连接信息以及系统运行状态点击右侧的退出图标可切换到不同的Milvus连接或集群左侧边栏包括四个模块主页、数据库、用户和角色、系统视图默认创建default数据库可新增数据库展示数据库名称及其下面有多少个集合创建时间等信息系统信息展示连接到的Milvus Server版本号部署模式运行时间用户和角色左下角展示Attu的版本号v2.5.2。注v2.5.2版本的Attu暂时没找到也可能是我不知道管理多个不同的Milvus集群连接的入口只能通过退出登录的方式切换连接。创建数据库非常简单点击上图的创建数据库输入名称即可。值得注意的是数据库属性如下图点击编辑可修改也可重置修改后的属性包括database.replica.number副本数database.resource_groups资源组database.diskQuota.mb磁盘限额单位MBdatabase.max.collections最大集合个数database.force.deny.writing强制禁止写入。创建集合点击创建collection其中主键字段有两个类型向量字段标量字段点击分词器右侧的设置按钮选择一致性信息量非常大主键字段支持重命名一般建议使用id主键字段只能为INT64或VARCHAR可勾选自动ID默认勾选一个集合可以有多个向量字段向量类型包括Binary、Float、Float16、BFloat16、Sparse、BM25(VarChar)向量维度可调整参考下面章节一个集合必须要有一个主键字段和至少一个向量字段可以没有标量字段集合可以新增多个标量字段标量字段类型包括Int8、Int16、Int32、Int64、Float、Double、Boolean、VarChar、JSON、Array标量字段可为空不为空时需要设置默认值Array类型的标量字段数组里的类型支持Int8、Int16、Int32、Int64、Float、Double、Boolean、VarChar标量字段为VarChar时可设置分词器包括Standard、English、Chinese开启匹配一致性参考下面章节动态schemaMilvus将根据分区键字段中的值在分区中存储entities只支持一个Int64或VarChar字段加载集合向量维度设置向量维度的注意事项向量维度必须一致在同一个集合中所有向量的维度必须相同。在创建集合时指定的无法在集合创建后更改。向量维度影响存储和计算高维向量会占用更多的存储空间并且在计算相似度时所需的计算资源也会更多低维向量则相反。选择合适的向量维度向量维度的选择应基于具体应用需求。通常高维向量能更好地表示复杂的数据结构但也会增加计算复杂度。对于某些特定的应用场景如图像检索、NLP等通常有推荐的向量维度。例如使用预训练的深度学习模型生成的特征向量通常有固定的维度一般都是2的n次幂如128、256、512等。向量维度对相似度计算的影响向量维度直接影响相似度度量的计算。常用的相似度度量方法有欧氏距离、余弦相似度等。这些度量方法在高维空间中的计算复杂度会增加。高维向量可能会导致维度灾难问题影响相似度计算的准确性和效率。使用降维技术或适当的索引算法可缓解这一问题。向量维度对向量搜索的影响高维向量搜索的计算复杂度较高可能会导致搜索性能下降。选择合适的索引算法如IVF、HNSW等可提高搜索性能。Milvus提供多种索引类型适用于不同的向量维度和数据规模。根据具体需求选择合适的索引类型和参数。一致性Milvus支持四个一致性级别Strong强一致性最高最严格确保用户可读取最新版本的数据。会增加延迟Bounded有界默认级别Milvus里该级别也叫staleness有界陈旧性允许在一定时间内存在数据不一致一般情况下在该时间段之外的时间内数据总是全局一致的。适用于需要控制搜索延迟并且可以接受零星数据不可见性的场景。例如在视频推荐引擎等推荐系统中数据不可见性有时对总的召回率影响较小但可显着提升推荐系统的性能。Session会话一致性保证在同一会话中所有数据写入在读取时可以立即感知到。即当你通过一个客户端写入数据时新插入的数据可立即被搜索到。Eventually最终一致性。读取和写入的顺序没有保证并且在不进行进一步的写操作的情况下复制品最终会收敛到相同的状态。复制品使用最新更新的值来处理读请求。可极大地缩短搜索延迟。Schema如下图创建集合时如果没有勾选加载或加载后点击释放则不再可用于搜索创建索引创建集合时默认自动创建索引且类型为AUTOINDEX可修改索引先删除再创建主键ID字段是标量字段在标量字段上创建索引如上图标量索引包括TrieHASHBTREESLOT_SORTBITMAPINVERTED在向量字段上创建索引如上图向量索引包括内存索引HNSWIVF_FLATIVF_PQIVF_SQ8FLATSCANN磁盘索引DISKANNGPU索引GPU_CAGRAGPU_IVF_FLATGPU_IVF_PQGPU_BRUTE_FORCE关于索引类型这些概念实际上是Milvus里的知识点。敬请期待鄙人写出Milvus博客。数据导入向量检索未加载的集合无法执行向量搜索。过滤表达式如上图可以添加多个添加并设置与(AND)、或(OR)表达式可以复制出来metadata是一个JSON字段会自动让用户选择一个key字段Logic可选项如下还可以将整个查询表达式导出为客户端查询code目前仅支持Python和Node JS此功能还是Beta版查询条件不完善Segment数据段压缩Compact落盘Flush集合属性集合创建成功后会看到一个属性列表包括collection.ttl.seconds过期时间单位秒collection.autocompaction.enabled是否开启自动压缩collection.insertRate.max.mb最大插入速率collection.insertRate.min.mb最小插入速率collection.upsertRate.max.mb最大更新或插入速率collection.upsertRate.min.mb最小更新或插入速率collection.deleteRate.max.mb最大删除速率collection.deleteRate.min.mb最小删除速率collection.bulkLoadRate.max.mb最大批量加载速率collection.bulkLoadRate.min.mb最小批量加载速率collection.queryRate.max.qps最大查询速率collection.queryRate.min.qps最小查询速率collection.searchRate.max.vps最大搜索速率collection.searchRate.min.vps最小搜索速率collection.diskProtection.diskQuota.mb触发磁盘保护限额单位MBcollection.replica.number副本数。用户与角色新增角色时选择权限。新增用户时选择角色。Milvus中的授权对象主要包含全局、集合和用户。授权时如果权限选择*则意味着该角色拥有授权对象的所有API调用权限。每个对象对应的权限和接口API如下表所示。接口API和权限一般是同名若不为同名则会单独列出。全局权限列表CreateCollectionDropCollectionDescribeCollectionShowCollectionsRenameCollectionFlushAllCreateOwnership接口为CreateUser CreateRoleDropOwnership接口为DeleteCredential DropRoleSelectOwnership接口为SelectRole/SelectGrantManageOwnership接口为OperateUserRole OperatePrivilegeCreateResourceGroupDropResourceGroupDescribeResourceGroupListResourceGroupsTransferNodeTransferReplicaCreateDatabaseDropDatabaseListDatabasesCreateAliasDropAliasDescribeAliasListAliases集合权限列表CreateIndexDropIndexIndexDetail接口为DescribeIndex/GetIndexState/GetIndexBuildProgressLoad接口为LoadCollection/GetLoadingProgress/GetLoadStateGetLoadingProgressGetLoadStateRelease接口为ReleaseCollectionInsertDeleteUpsertSearchFlush接口为Flush/GetFlushStateGetFlushStateQueryGetStatistics接口为GetCollectionStatisticsCompaction接口为CompactImport接口为BulkInsert/ImportLoadBalanceCreatePartitionDropPartitionShowPartitionsHasPartition用户权限列表UpdateUser接口为UpdateCredentialSelectUser系统视图提供一张完整的Milvus系统拓扑图点击拓扑图中的每个节点可了解到节点自身的状态变化每10秒动态刷新点击Nodes子节点可进入节点列表视图查看子节点列表及状态。通过排序可以迅速定位到高CPU或高内存占用节点方便排查问题。进阶高可用自建集群云产品使用云产品如阿里云。监控告警可供参考的监控指标示例规则名称监控项指标采样周期报警规则milvus_ProcessResidentMemoryUtilization内存使用率60秒连续5个周期平均值 80%则发出告警milvus_ProcessCPUUtilizationCPU使用率60秒连续5个周期平均值 90%则发出告警实现思路Prometheus采集Milvus服务器或pod指标数据参考Milvus图形化管理工具Attu来袭Milvus一致性