疯狂SQL转换系列- SQL for Tencent Cloud VectorDB

        为了尽量保证使用者通过统一的SQL标准访问各类型数据库,我们这里开启了“疯狂SQL转换系列”。转换的语法效果不一定是最好的,更多是为用户提供一个统一的数据库交互体验。转换数据库目标的确认更多是内生的。基于我们对业务发展的需要。该向量库SQL转换的源码参见https://github.com/colorknight/moql-transx

        对腾讯云向量数据库的支持,主要是为了给LLM的RAG(检索增强生成)提供更多向量库选择。使用者可通过该接口输入SQL语句,获得结构化的数据结果,如下列代码示例:

// 构建TcVector客户端
ConnectParam connectParam = ConnectParam.newBuilder().withUrl("向量数据库url")
        .withUsername("root").withKey("访问key").withTimeout(30).build();
vectorDBClient = new VectorDBClient(connectParam,
​
// 使用TcVector客户端创建TcVector查询器
TcVectorQuerier querier = new TcVectorQuerier(vectorDBClient);
/* 查询语句含义:从book集合中筛选数据,并返回全部列。筛选条件为,向量字段值为'[[0.3123, 0.43, 0.213], [0.5123, 0.63, 0.413]]'。取前2条命中记录。*/
String sql = "select * from datayoo.book where withVectors('[[0.3123, 0.43, 0.213], [0.5123, 0.63, 0.413]]') limit 2";
// 使用查询器执行sql语句,并返回查询结果
RecordSet recordSet = querier.query(sql);

        TcVector提供的检索接口与SQL语法有一定差异,其SearchParam提供的部分参数可以直接映射为SQL语法的等同语义子句。如:expr参数,其语义与SQL中Where子句语义基本兼容;其OutFields参数为输出结果集的列结构,与SQL语句的Select子句语义相同。但其也有其特殊的查询参数接口,如:针对向量字段匹配的参数接口withVectors等。由于这些概念在SQL中没有对应语义的子句,为不增加语法概念,MOQL Transx将这类接口都以Where子句中的函数形式进行表达。这种表达方式可能不是最佳表达方式,如果有人有更好的建议,可以到项目中给我们留言。

        下表将给出TcVector查询接口的参数与SQL语法的对照关系:

TcVector查询参数接口 SQL语法
collection(table) from table
withOutputFields(outFields) select outFields
withDocumentIds where id = ?
withFilter where expr
withParams withParams
withVectors withVectors
withLimit() limit offset, k

模块的maven坐标

<dependency>
    <groupId>org.datayoo.moql</groupId>
    <artifactId>moql-querier-tcvector</artifactId>
    <version>1.0.0</version>
</dependency>

相关推荐

  1. 疯狂SQL转换系列- SQL for Tencent Cloud VectorDB

    2023-12-16 19:30:03       61 阅读
  2. sql解析,转换列表和表名

    2023-12-16 19:30:03       63 阅读
  3. 【ClickHouse-Sql】ClickHouse 类型转换用法介绍

    2023-12-16 19:30:03       69 阅读
  4. 统一SQL-number/decimal/dec/numeric转换

    2023-12-16 19:30:03       26 阅读
  5. SQL 系列教程(一)

    2023-12-16 19:30:03       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-16 19:30:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-16 19:30:03       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-16 19:30:03       87 阅读
  4. Python语言-面向对象

    2023-12-16 19:30:03       96 阅读

热门阅读

  1. MVVM和MVC以及MVP的原理以及它们的区别

    2023-12-16 19:30:03       62 阅读
  2. 使用Spring Boot和领域驱动设计实现模块化整体

    2023-12-16 19:30:03       51 阅读
  3. 绘制饼状图的编程实现

    2023-12-16 19:30:03       44 阅读
  4. 网络安全试题——附答案

    2023-12-16 19:30:03       62 阅读
  5. LSTM 双向 Bi-LSTM

    2023-12-16 19:30:03       68 阅读
  6. 虚拟机强制关机移除后恢复

    2023-12-16 19:30:03       69 阅读
  7. 函数柯里化 剖析

    2023-12-16 19:30:03       60 阅读
  8. 关于成品项目分辨率适配解决方案

    2023-12-16 19:30:03       63 阅读
  9. 使用boost::process::environment的测试程序

    2023-12-16 19:30:03       55 阅读
  10. leetcode - 4. Median of Two Sorted Arrays

    2023-12-16 19:30:03       45 阅读