Es和向量数据库Milvus的构建与数据存储
Milvus是向量数据库模型构建,EsServiceImpl是Es的构建,存储清理后的训练数据,检查查询效率,MilvusServiceImpl中存放向量数据库的构建代码。MilvusIndexConstans中是向量数据库的结构设计。embedding中是调用的专门计算embedding的小模型,对外提供接口,供java后端调用。
向Milvus向量数据库存储大模型问答对信息,python存储设置HNSW索引,对问题描述构建向量,修改索引参数但提升效果并不明显。调研发现,在少量不足百万数据下,构建合适的分区可以提升查询速度。
首先,设置了title和question作为联合查询,并以title、question、id作为索引,搜索的时候可以以此查询到更具体的数据。
5000条数据查询时间为60ms。
数据存储时使用分页存储,并将文件数据读入缓存,再批量插入ES中。 在实测中,插入数据所需时间变少,但分页存储会导致数据查询时间更久。
优化可参考https://zhuanlan.zhihu.com/p/99718374
在资源有限和对实时性要求较高的场景下,加入缓存层可以有效降低推理部署成本、提升模型性能和效率。 核心模块:adapter、embedding、similarity和data_manager。adapter模块主要功能是处理各种任务的业务逻辑,并且能够将embedding、similarity、data_manager等模块串联起来;embedding模块主要负责将文本转换为语义向量表示,它将用户的查询转换为向量形式,并用于后续的召回或存储操作; rank模块用于对召回的向量进行相似度排序和评估;data_manager模块主要用于管理数据库。 Cache可以存储先前的查询结果,如果模型对相同的查询再次提出,则可以直接从缓存中获取结果。
java代码构建Milvus向量数据库,jdk版本要高(大概17),低版本的jdk里面,不支持vector类型的向量。Es
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。