写点什么

疯狂 SQL 转换系列 - SQL for Milvs2.4

作者:数由科技
  • 2025-02-06
    北京
  • 本文字数:1247 字

    阅读完需:约 4 分钟

疯狂SQL转换系列- SQL for Milvs2.4

鉴于 Milvus 仍在不停的迭代新版本,推出新功能,其 SDK 目前并不稳定。目前其 2.4 版本的 SDK 接口已与之前的 2.2 版本有了较大的差别,功能上也有了一定的调整。为此,我们重新提供了针对Milvus2.4版本的语法转换功能。由于 Milvus 文档有些内容写的不是特别详实,亦或时间仓促,我们没有正确理解其功能含义,转换工作可能存在一些问题,还请发现问题的朋友多多指出。

我们选择 Milvus2.4 版本进行语法支持的主要原因是,2.4 版本是 Milvus 目前最新的版本,该版本引入了可以建立多个向量索引的能力。在微软推出的 GraphRAG 技术中,用到了多向量检索的技术,而 Milvus2.2 版只支持单向量,无法复刻 GraphRAG 的技术理念。为此,我们选中了 2.4 版本进行语法支持。对于未来 Milvus 版本发生改变,我们是否能及时支持,主要取决于我们在 HuggingFists 项目中是否会用到这样的技术特性。本次升级的主要动力来自于我们希望使用 HuggingFists 采用低代码方式来实践 GraphRAG 项目中的技术理念。当然,如果有朋友对未来某个版本有语法转换需求也可以给我们提出需求,我们会尽量满足。

言归正传,为了能让使用者以类似访问关系数据库的交互体验访问 Milvus 向量数据库。MOQL Transx 继续秉承能 SQL 化检索数据库就 SQL 化检索数据库的宗旨。为用户提供了一套可以检索 Milvus2.4 向量数据库的 SQL 语法,并提供了检索接口。使用者可通过该接口输入 SQL 语句,获得结构化的数据结果,如下列代码示例:

// 构建Milvus客户端String url = String.format("%s://%s:%d", "http" ,"datayoo05", 19530);ConnectConfig connectConfig = ConnectConfig.builder().uri(url).build();milvusClient = new MilvusClientV2(connectConfig);// 装载CollectionLoadCollectionReq loadCollectionReq = LoadCollectionReq.builder().collectionName("hybrid_search_collection").build();milvusClient.loadCollection(loadCollectionReq);// 使用Milvus客户端创建Milvus查询器MilvusQuerier milvusQuerier = new MilvusQuerier(milvusClient);String sql = "select * from hybrid_search_collection a, "// 用子检索语句检索向量字段+ "(select * from hybrid_search_collection where vmatch(dense, 'L2', '[[1.0, 2.0, 3.0],[1.1,2.1,3.1]]')) b, "// 用子检索语句检索稀疏向量+ "(select * from hybrid_search_collection where vmatch(sparse, 'IP', '[{\"2\":0.1764169}, {\"5\":0.1764169}]')) c limit 5";// 检索CollectionRecordSet recordSet = milvusQuerier.query(sql);
复制代码

Milvus2.4 的 SDK 相较 Milvus2.2 有了不少改变,主要是方法参数上的变动比较大。比如 Milvus2.2 中 SearchParam 在 Milvus2.4 中变成了 SearchReq。但 SDK 的整体思路没有太大的变化,我们在这里就不再赘述了。下表将给出 Milvus2.4 查询接口的参数与 SQL 语法的对照关系,其中的粗体为 Milvus2.4 新增的检索能力,删除线标记的语法部分在 Milvus2.2 中有效,由于未在 2.4 的文档中找到相应的说明,故标为删除:

( 注:queryExpression 是一个表示向量检索的子 SQL 语句)

用户头像

数由科技

关注

还未添加个人签名 2019-03-22 加入

还未添加个人简介

评论

发布
暂无评论
疯狂SQL转换系列- SQL for Milvs2.4_sql_数由科技_InfoQ写作社区