Row 操作
插入记录
功能介绍
将一条或者一批记录插入到指定的表中。插入语义为Insert,若记录的主键已存在,则插入失败并报错。当插入一批时,该接口暂不支持批次的原子性。
请求示例
1import java.util.ArrayList;
2import java.util.Arrays;
3import java.util.List;
4
5import com.baidu.mochow.auth.Credentials;
6import com.baidu.mochow.client.ClientConfiguration;
7import com.baidu.mochow.client.MochowClient;
8import com.baidu.mochow.model.entity.Row;
9import com.baidu.mochow.model.entity.RowField;
10import com.baidu.mochow.model.InsertRequest;
11import com.baidu.mochow.model.InsertResponse;
12
13public class Main {
14 public static void main(String[] args) {
15 String account = "root";
16 String apiKey = "*********";
17 String endpoint = "*.*.*.*:*"; // example: 127.0.0.1:5287
18 ClientConfiguration clientConfiguration = new ClientConfiguration();
19 clientConfiguration.setCredentials(new Credentials(account, apiKey));
20 clientConfiguration.setEndpoint(endpoint);
21 MochowClient mochowClient = new MochowClient(clientConfiguration);
22 String databaseName = "test";
23 String tableName = "test";
24
25 List<Row> rows = new ArrayList<Row>();
26 rows.add(Row.builder()
27 .addField(new RowField("id", "0001"))
28 .addField(new RowField("vector", Arrays.asList(1, 0.21, 0.213, 0)))
29 .addField(new RowField("bookName", "西游记"))
30 .addField(new RowField("author", "吴承恩"))
31 .addField(new RowField("page", 21))
32 .addField(new RowField("segment", "富贵功名,前缘分定,为人切莫欺心。")).build()
33 );
34 InsertRequest insertRequest = InsertRequest.builder().database(databaseName).table(tableName).rows(rows).build();
35 InsertResponse insertResponse = mochowClient.insert(insertRequest);
36 System.out.printf("Insert affected count:%d\n", insertResponse.getAffectedCount());
37 }
38}
相关类说明
InsertRequest
插入请求,用于往向量数据库插入数据,拥有constructor、getter、setter以及builder等通用方法,通用方法详情可以参考通用说明
1import com.baidu.mochow.model.InsertRequest; //导入包
成员名 | 类型 | 是否必填 | 成员含义 |
---|---|---|---|
database | String | 是 | 插入数据的库名 |
table | String | 是 | 插入数据的表名 |
rows | List<Row> | 是 | 插入的记录列表 |
Row
行数据,可用builder快速构建
1import com.baidu.mochow.model.entity.Row; //导入包
成员名 | 类型 | 成员含义 |
---|---|---|
fields | Map<String, Object> | 存储一行数据,key为插入的字段名,value为值 |
可以使用Row.builder()获取Row的builder类,builder类拥有如下方法
方法 | 参数类型 | 返回值类型 | 功能 |
---|---|---|---|
addField | RowField | 无 | 为行增加一个字段值 |
RowField
字段以及值的复合体,成员如下,拥有constructor、getter、setter以及builder等通用方法,通用方法详情可以参考通用说明
成员名 | 类型 | 成员含义 |
---|---|---|
name | String | 字段名 |
value | String | 值 |
InsertResponse
插入回复,向量数据库向客户端返回插入请求的执行结果,拥有getter通用方法,通用方法可以参考通用说明。
1import com.baidu.mochow.model.InsertResponse; //导入包
成员名 | 类型 | 成员含义 |
---|---|---|
affectedCount | int | 插入请求影响的数据库行数 |
插入或更新记录
功能介绍
将一条或者一批记录插入到指定的表中。插入语义为Upsert(Insert or else Update),即,当记录的主键不存在时,则正常插入,若发现主键已存在,则用新的记录覆盖旧的记录。当插入一批时,该接口暂不支持批次的原子性。该接口可用于批量迁移/灌库等场景。
请求示例
1import java.util.ArrayList;
2import java.util.Arrays;
3import java.util.List;
4
5import com.baidu.mochow.auth.Credentials;
6import com.baidu.mochow.client.ClientConfiguration;
7import com.baidu.mochow.client.MochowClient;
8import com.baidu.mochow.model.entity.Row;
9import com.baidu.mochow.model.entity.RowField;
10import com.baidu.mochow.model.UpsertRequest;
11import com.baidu.mochow.model.UpsertResponse;
12
13public class Main {
14 public static void main(String[] args) {
15 String account = "root";
16 String apiKey = "*********";
17 String endpoint = "*.*.*.*:*"; // example: 127.0.0.1:5287
18 ClientConfiguration clientConfiguration = new ClientConfiguration();
19 clientConfiguration.setCredentials(new Credentials(account, apiKey));
20 clientConfiguration.setEndpoint(endpoint);
21 MochowClient mochowClient = new MochowClient(clientConfiguration);
22 String databaseName = "test";
23 String tableName = "test";
24
25 List<Row> rows = new ArrayList<Row>();
26 rows.add(Row.builder()
27 .addField(new RowField("id", "0001"))
28 .addField(new RowField("vector", Arrays.asList(1, 0.21, 0.213, 0)))
29 .addField(new RowField("bookName", "西游记"))
30 .addField(new RowField("author", "吴承恩"))
31 .addField(new RowField("page", 21))
32 .addField(new RowField("segment", "富贵功名,前缘分定,为人切莫欺心。")).build()
33 );
34 UpsertRequest upsertRequest = UpsertRequest.builder().database(databaseName).table(tableName).rows(rows).build();
35 UpsertResponse upsertResponse = mochowClient.upsert(upsertRequest);
36 System.out.printf("Upsert affected count:%d\n", upsertResponse.getAffectedCount());
37 }
38}
相关类说明
UpsertRequest
插入或更新请求,用于往向量数据库插入或更新数据,拥有constructor、getter、setter以及builder等通用方法,通用方法详情可以参考通用说明
1import com.baidu.mochow.model.UpsertRequest; //导入包
成员名 | 类型 | 是否必填 | 成员含义 |
---|---|---|---|
database | String | 是 | 插入数据的库名 |
table | String | 是 | 插入数据的表名 |
rows | List<Row> | 是 | 插入的记录列表 |
Row
行数据,可用builder快速构建
1import com.baidu.mochow.model.entity.Row; //导入包
成员名 | 类型 | 参数含义 |
---|---|---|
fields | Map<String, Object> | 存储一行数据,key为插入的字段名,value为值 |
可以使用Row.builder()获取Row的builder类,builder类拥有如下方法
方法 | 参数类型 | 返回值类型 | 功能 |
---|---|---|---|
addField | RowField | 无 | 为行增加一个字段值 |
RowField
字段以及值的复合体,成员如下,拥有constructor、getter、setter以及builder等通用方法,通用方法详情可以参考通用说明
成员名 | 类型 | 成员含义 |
---|---|---|
name | String | 字段名 |
value | String | 值 |
UpsertResponse
插入或更新回复,向量数据库向客户端返回插入或更新请求的执行结果,拥有getter通用方法,通用方法可以参考通用说明。
1import com.baidu.mochow.model.UpsertResponse; //导入包
成员名 | 类型 | 参数含义 |
---|---|---|
affectedCount | int | 插入或更新请求影响的数据库行数 |
更新记录
功能介绍
更新表中指定记录的一个或多个标量字段的值
请求示例
1public class Main {
2 public static void main(String[] args) {
3 String account = "root";
4 String apiKey = "*********";
5 String endpoint = "*.*.*.*:*"; // example: 127.0.0.1:5287
6 ClientConfiguration clientConfiguration = new ClientConfiguration();
7 clientConfiguration.setCredentials(new Credentials(account, apiKey));
8 clientConfiguration.setEndpoint(endpoint);
9 MochowClient mochowClient = new MochowClient(clientConfiguration);
10 String databaseName = "test";
11 String tableName = "test";
12
13 UpdateRequest updateRequest = UpdateRequest.builder()
14 .database(databaseName)
15 .table(tableName)
16 .addPrimaryKey("id", "0001")
17 .addUpdate("bookName", "红楼梦")
18 .addUpdate("author", "曹雪芹")
19 .addUpdate("page", 21)
20 .addUpdate("segment", "满纸荒唐言,一把辛酸泪").build();
21 mochowClient.update(updateRequest);
22 }
23}
相关类说明
UpdateRequest
更新请求,用于往向量数据库更新数据,拥有constructor、getter、setter等通用方法,通用方法详情可以参考通用说明。其builder方法和通用的builder有区别,在下面有具体说明。
1import com.baidu.mochow.model.UpdateRequest; //导入包
成员名 | 类型 | 是否必选 | 成员含义 |
---|---|---|---|
database | String | 是 | 插入数据的库名 |
table | String | 是 | 插入数据的表名 |
primaryKey | GeneralParams | 是 | 指定记录的主键值。 |
partitionKey | GeneralParams | 否 | 指定记录的分区键值。 如果该表的分区键和主键是同一个键,则不需要填写分区键值。只有在有主键值的情况下,分区键值才会生效。 |
update | GeneralParams | 是 | 待更新的字段列表及其新值。 不允许更新主键、分区键和向量字段。 |
可以使用UpdateRequest.builder()获取UpdateRequest的builder类,builder类拥有如下方法
方法 | 参数类型 | 返回值类型 | 功能 |
---|---|---|---|
database | String | 无 | 设置UpdateRequest的database |
table | String | 无 | 设置UpdateRequest的table |
primaryKey | GeneralParams | 无 | 设置UpdateRequest的primaryKey |
addPrimaryKey | String, Object | 无 | 为UpdateRequest增加一个primaryKey |
partitionKey | GeneralParams | 无 | 设置UpdateRequest的partitionKey |
addPartitionKey | String, Object | 无 | 为UpdateRequest增加一个partitionKey |
update | GeneralParams | 无 | 设置UpdateRequest的update |
addUpdate | String, Object | 无 | 为UpdateRequest增加一个update |
build | 无 | UpdateRequest | 返回一个构建好的UpdateRequest |
删除记录
功能介绍
删除表中的指定记录。
请求示例
1import com.baidu.mochow.auth.Credentials;
2import com.baidu.mochow.client.ClientConfiguration;
3import com.baidu.mochow.client.MochowClient;
4import com.baidu.mochow.model.DeleteRequest;
5
6public class Main {
7 public static void main(String[] args) {
8 String account = "root";
9 String apiKey = "*********";
10 String endpoint = "*.*.*.*:*"; // example: 127.0.0.1:5287
11 ClientConfiguration clientConfiguration = new ClientConfiguration();
12 clientConfiguration.setCredentials(new Credentials(account, apiKey));
13 clientConfiguration.setEndpoint(endpoint);
14 MochowClient mochowClient = new MochowClient(clientConfiguration);
15 String databaseName = "test";
16 String tableName = "test";
17
18 DeleteRequest deleteRequest = DeleteRequest.builder()
19 .database(databaseName)
20 .table(tableName)
21 .addPrimaryKey("id", "0001")
22 .build();
23 mochowClient.delete(deleteRequest);
24 }
25}
相关类说明
DeleteRequest
删除,用于往向量数据库删除数据,拥有constructor、getter、setter等通用方法,通用方法详情可以参考通用说明。其builder方法和通用的builder有区别,在下面有具体说明。
1import com.baidu.mochow.model.DeleteRequest; //导入包
成员名 | 类型 | 是否必选 | 参数含义 |
---|---|---|---|
database | String | 是 | 删除数据的库名 |
table | String | 是 | 删除数据的表名 |
filter | String | 否 | 删除的标量过滤条件。 当要删除全部记录,可设置为"*";Filter表达式语法参照SQL的WHERE子句语法进行设计,其详细描述和使用示例请参见Filter条件表达式。必须填写主键值或过滤条件,二者有且仅能选其一。 |
primaryKey | GeneralParams | 否 | 指定记录的主键值。 |
partitionKey | GeneralParams | 否 | 指定记录的分区键值。 如果该表的分区键和主键是同一个键,则不需要填写分区键值。只有在有主键值的情况下,分区键值才会生效。 |
可以使用UpdateRequest.builder()获取UpdateRequest的builder类,builder类拥有如下方法
方法 | 参数类型 | 返回值类型 | 功能 |
---|---|---|---|
database | String | 无 | 设置DeleteRequest的database |
table | String | 无 | 设置DeleteRequest的table |
primaryKey | GeneralParams | 无 | 设置DeleteRequest的primaryKey |
addPrimaryKey | String, Object | 无 | 为DeleteRequest增加一个primaryKey |
partitionKey | GeneralParams | 无 | 设置DeleteRequest的partitionKey |
addPartitionKey | String, Object | 无 | 为DeleteRequest增加一个partitionKey |
filter | GeneralParams | 无 | 设置DeleteRequest的filter |
build | 无 | DeleteRequest | 返回一个构建好的DeleteRequest |
标量查询
功能介绍
基于主键值进行点查。
请求示例
1import java.util.Arrays;
2
3import com.baidu.mochow.auth.Credentials;
4import com.baidu.mochow.client.ClientConfiguration;
5import com.baidu.mochow.client.MochowClient;
6import com.baidu.mochow.model.QueryRequest;
7import com.baidu.mochow.model.QueryResponse;
8import com.baidu.mochow.util.JsonUtils;
9
10public class Main {
11 public static void main(String[] args) {
12 String account = "root";
13 String apiKey = "*********";
14 String endpoint = "*.*.*.*:*"; // example: 127.0.0.1:5287
15 ClientConfiguration clientConfiguration = new ClientConfiguration();
16 clientConfiguration.setCredentials(new Credentials(account, apiKey));
17 clientConfiguration.setEndpoint(endpoint);
18 MochowClient mochowClient = new MochowClient(clientConfiguration);
19 String databaseName = "test";
20 String tableName = "test";
21
22 QueryRequest queryRequest = QueryRequest.builder()
23 .database(databaseName)
24 .table(tableName)
25 .retrieveVector(true)
26 .addPrimaryKey("id", "0005")
27 .projections(Arrays.asList("id", "bookName")).build();
28 QueryResponse queryResponse = mochowClient.query(queryRequest);
29 System.out.printf("Query result: %s\n", JsonUtils.toJsonString(queryResponse.getRow()));
30 }
31}
相关类说明
QueryRequest
标量查询,基于主键值进行点查,拥有constructor、getter、setter等通用方法,通用方法详情可以参考通用说明。其builder方法和通用的builder有区别,在下面有具体说明。
1import com.baidu.mochow.model.QueryRequest; //导入包
成员名 | 类型 | 是否必选 | 成员说明 |
---|---|---|---|
database | String | 是 | 查询数据的库名 |
table | String | 是 | 查询数据的表名 |
primaryKey | GeneralParams | 是 | 指定记录的主键值。 |
projections | List<String> | 否 | 投影字段列表,默认为空,为空时查询结果默认返回所有标量字段。 |
partitionKey | GeneralParams | 否 | 指定记录的分区键值。 如果该表的分区键和主键是同一个键,则不需要填写分区键值。 |
retrieveVector | Boolean | 否 | 是否返回结果记录中的向量字段值,默认为False |
readConsistency | ReadConsistency | 否 | 查询请求的一致性级别,取值为: |
可以使用UpdateRequest.builder()获取UpdateRequest的builder类,builder类拥有如下方法
方法 | 参数类型 | 返回值类型 | 功能 |
---|---|---|---|
database | String | 无 | 设置QueryRequest的database |
table | String | 无 | 设置QueryRequest的table |
primaryKey | GeneralParams | 无 | 设置QueryRequest的primaryKey |
addPrimaryKey | String, Object | 无 | 为QueryRequest增加一个primaryKey |
partitionKey | GeneralParams | 无 | 设置QueryRequest的partitionKey |
addPartitionKey | String, Object | 无 | 为QueryRequest增加一个partitionKey |
projections | List<String> | 无 | 设置QueryRequest的projections |
retrieveVector | Boolean | 无 | 设置QueryRequest的retrieveVector |
readConsistency | ReadConsistency | 无 | 设置QueryRequest的readConsistency |
build | 无 | DeleteRequest | 返回一个构建好的DeleteRequest |
QueryResponse
插入或更新回复,向量数据库向客户端返回插入或更新请求的执行结果,拥有getter通用方法,通用方法可以参考通用说明。
1import com.baidu.mochow.model.QueryResponse; //导入包
成员名 | 类型 | 成员说明 |
---|---|---|
row | Row | 查询到的行 |
标量过滤查询
功能介绍
基于标量属性过滤查询记录。
请求示例
1import java.util.Arrays;
2
3import com.baidu.mochow.auth.Credentials;
4import com.baidu.mochow.client.ClientConfiguration;
5import com.baidu.mochow.client.MochowClient;
6import com.baidu.mochow.model.SelectRequest;
7import com.baidu.mochow.model.SelectResponse;
8import com.baidu.mochow.model.enums.ReadConsistency;
9
10public class Main {
11 public static void main(String[] args) {
12 String account = "root";
13 String apiKey = "*********";
14 String endpoint = "*.*.*.*:*"; // example: 127.0.0.1:5287
15 ClientConfiguration clientConfiguration = new ClientConfiguration();
16 clientConfiguration.setCredentials(new Credentials(account, apiKey));
17 clientConfiguration.setEndpoint(endpoint);
18 MochowClient mochowClient = new MochowClient(clientConfiguration);
19 String databaseName = "test";
20 String tableName = "test";
21
22 SelectRequest selectRequest = SelectRequest.builder()
23 .database(databaseName)
24 .table(tableName)
25 .limit(30)
26 .readConsistency(ReadConsistency.EVENTUAL)
27 .projections(Arrays.asList("id", "bookName")).build();
28 while (true) {
29 SelectResponse selectResponse = mochowClient.select(selectRequest);
30 System.out.printf("Select result count: %d\n", selectResponse.getRows().size());
31 if (!selectResponse.isTruncated()) {
32 break;
33 }
34 selectRequest.setMarker(selectResponse.getNextMarker());
35 }
36 }
37}
相关类说明
SelectRequest
基于标量属性过滤查询记录,拥有constructor、getter、setter等通用方法,通用方法详情可以参考通用说明。其builder方法和通用的builder有区别,在下面有具体说明。
1import com.baidu.mochow.model.SelectRequest; //导入包
成员名 | 类型 | 是否必选 | 用途 |
---|---|---|---|
database | String | 是 | 标量过滤数据的库名 |
table | String | 是 | 标量过滤数据的表名 |
filter | String | 否 | 标量过滤条件。 当要删除全部记录,可设置为"*";Filter表达式语法参照SQL的WHERE子句语法进行设计,其详细描述和使用示例请参见Filter条件表达式。必须填写主键值或过滤条件,二者有且仅能选其一。 |
projections | List<String> | 否 | 投影字段列表,默认为空,为空时查询结果默认返回所有标量字段。 |
marker | GeneralParams | 否 | 查询的分页起始点,用于控制分页查询返回结果的起始位置,方便用户对数据进行分页展示和浏览,用户不填时,默认从第一条符合条件的记录开始返回。 |
limit | int | 否 | 查询返回的记录条数,在进行分页查询时,即每页的记录条数。 默认为10,取值范围[1, 1000]。 |
readConsistency | ReadConsistency | 否 | 查询请求的一致性级别,取值为: |
可以使用SelectRequest.builder()获取SelectRequest的builder类,builder类拥有如下方法
方法 | 参数类型 | 返回值类型 | 功能 |
---|---|---|---|
database | String | 无 | 设置SelectRequest的database |
table | String | 无 | 设置SelectRequest的table |
primaryKey | GeneralParams | 无 | 设置SelectRequest的primaryKey |
addPrimaryKey | String, Object | 无 | 为SelectRequest增加一个primaryKey |
partitionKey | GeneralParams | 无 | 设置SelectRequest的partitionKey |
addPartitionKey | String, Object | 无 | 为SelectRequest增加一个partitionKey |
projections | List<String> | 无 | 设置SelectRequest的projections |
retrieveVector | Boolean | 无 | 设置SelectRequest的retrieveVector |
readConsistency | ReadConsistency | 无 | 设置SelectRequest的readConsistency |
limit | int | 无 | 设置SelectRequest的limit |
build | 无 | SelectRequest | 返回一个构建好的SelectRequest |
SelectResponse
插入或更新回复,向量数据库向客户端返回插入或更新请求的执行结果,拥有getter通用方法,通用方法可以参考通用说明。
1import com.baidu.mochow.model.SelectResponse; //导入包
成员名 | 类型 | 用途 |
---|---|---|
truncated | Boolean | 后续是否还有数据 |
nextMarker | GeneralParams | 查询的分页起始点,用于控制分页查询返回结果的起始位置,方便用户对数据进行分页展示和浏览,用户不填时,默认从第一条符合条件的记录开始返回。 |
rows | List<Row> | 插入的记录列表 |
向量检索
功能介绍
基于向量字段值的KNN或ANN查询,支持通过标量字段值进行过滤。
请求示例
1import java.util.Arrays;
2
3import com.baidu.mochow.auth.Credentials;
4import com.baidu.mochow.client.ClientConfiguration;
5import com.baidu.mochow.client.MochowClient;
6import com.baidu.mochow.model.SearchRequest;
7import com.baidu.mochow.model.SearchResponse;
8import com.baidu.mochow.model.entity.ANNSearchParams;
9import com.baidu.mochow.model.entity.HNSWSearchParams;
10import com.baidu.mochow.util.JsonUtils;
11
12public class Main {
13 public static void main(String[] args) {
14 String account = "root";
15 String apiKey = "*********";
16 String endpoint = "*.*.*.*:*"; // example: 127.0.0.1:5287
17 ClientConfiguration clientConfiguration = new ClientConfiguration();
18 clientConfiguration.setCredentials(new Credentials(account, apiKey));
19 clientConfiguration.setEndpoint(endpoint);
20 MochowClient mochowClient = new MochowClient(clientConfiguration);
21 String databaseName = "test";
22 String tableName = "test";
23
24 SearchRequest searchRequest = SearchRequest.builder()
25 .database(databaseName)
26 .table(tableName)
27 .anns(
28 ANNSearchParams.builder()
29 .vectorField("vector")
30 .vectorFloats(Arrays.asList(1F, 0.21F, 0.213F, 0F))
31 .filter("bookName='三国演义'")
32 .params(HNSWSearchParams.builder().ef(200).limit(10).build()).build()
33 ).build();
34 SearchResponse searchResponse = mochowClient.search(searchRequest);
35 System.out.printf("Search response: %s\n", JsonUtils.toJsonString(searchResponse));
36 }
37}
请求参数
SearchRequest
基于向量字段值的KNN或ANN支持通过标量字段值进行过滤。拥有constructor、getter、setter等通用方法,通用方法详情可以参考通用说明。其builder方法和通用的builder有区别,在下面有具体说明。
1import com.baidu.mochow.model.SearchRequest; //导入包
成员名 | 类型 | 是否必选 | 参数含义 |
---|---|---|---|
database | String | 是 | 插入数据的库名 |
table | String | 是 | 插入数据的表名 |
anns | ANNSearchParams | 无 | 检索请求参数详情。 |
retrieveVector | Boolean | 否 | 是否返回结果记录中的向量字段值,默认为False |
partitionKey | GeneralParams | 否 | 指定记录的分区键值。 如果该表的分区键和主键是同一个键,则不需要填写分区键值。 |
projections | List<String> | 否 | 投影字段列表,默认为空,为空时查询结果默认返回所有标量字段。 |
readConsistency | ReadConsistency | 否 | 查询请求的一致性级别,取值为: |
可以使用SearchRequest.builder()获取SearchRequest的builder类,builder类拥有如下方法
方法 | 参数类型 | 返回值类型 | 功能 |
---|---|---|---|
database | String | 无 | 设置SearchRequest的database |
table | String | 无 | 设置SearchRequest的table |
partitionKey | GeneralParams | 无 | 设置SearchRequest的partitionKey |
addPartitionKey | String, Object | 无 | 为SearchRequest增加一个partitionKey |
projections | List<String> | 无 | 设置SearchRequest的projections |
retrieveVector | Boolean | 无 | 设置SearchRequest的retrieveVector |
readConsistency | ReadConsistency | 无 | 设置SearchRequest的readConsistency |
anns | ANNSearchParams | 无 | 设置SearchRequest的anns |
build | 无 | SearchRequest | 返回一个构建好的SearchRequest |
ANNSearchParams
1import com.baidu.mochow.model.entity.ANNSearchParams; //导入包
成员名 | 类型 | 是否必选 | 参数含义 |
---|---|---|---|
vectorField | String | 是 | 检索的指定向量字段名称 |
vectorFloats | List<Float> | 是 | 检索的目标向量字段值。 |
params | SearchParam | 是 | 检索算法的参数详情。 |
filter | String | 否 | 检索的标量过滤条件,表示仅在符合过滤条件的候选集中进行检索,默认为空。Filter表达式语法参照SQL的WHERE子句语法进行设计,其详细描述和使用示例请参见Filter条件表达式。 |
SearchParams
HNSWSearchParams
1import com.baidu.mochow.model.entity.HNSWSearchParams; //导入包
成员名 | 类型 | 是否必选 | 参数含义 |
---|---|---|---|
ef | int | 是 | HNSW算法检索过程的动态候选列表的大小。 |
distanceNear | float | 是 | 范围检索场景中的最近距离,表示仅检索候选集中与目标向量的距离大于该值的向量。取值约束同上。 |
distanceFar | distanceFar | 否 | 范围检索场景中的最远距离,表示仅检索候选集中与目标向量的距离小于该值的向量。取值约束如下: |
PUCKSearchParams
1import com.baidu.mochow.model.entity.PUCKSearchParams; //导入包
成员名 | 类型 | 是否必选 | 参数含义 |
---|---|---|---|
ef | int | 是 | HNSW算法检索过程的动态候选列表的大小。 |
distanceNear | float | 是 | 范围检索场景中的最近距离,表示仅检索候选集中与目标向量的距离大于该值的向量。取值约束同上。 |
distanceFar | distanceFar | 否 | 范围检索场景中的最远距离,表示仅检索候选集中与目标向量的距离小于该值的向量。取值约束如下: |
SearchResponse
插入或更新回复,向量数据库向客户端返回插入或更新请求的执行结果,拥有getter通用方法,通用方法可以参考通用说明。
1import com.baidu.mochow.model.SearchResponse; //导入包
成员名 | 类型 | 用途 |
---|---|---|
searchVectorFloats | List |
查询的向量 |
rows | List |
查询结果行 |
批量向量检索
功能介绍
基于向量字段值的KNN或ANN批量查询,支持通过标量字段值进行过滤。
请求示例
1import java.util.Arrays;
2
3import com.baidu.mochow.auth.Credentials;
4import com.baidu.mochow.client.ClientConfiguration;
5import com.baidu.mochow.client.MochowClient;
6import com.baidu.mochow.model.BatchSearchRequest;
7import com.baidu.mochow.model.BatchSearchResponse;
8import com.baidu.mochow.model.entity.BatchANNSearchParams;
9import com.baidu.mochow.model.entity.HNSWSearchParams;
10import com.baidu.mochow.util.JsonUtils;
11
12public class Main {
13 public static void main(String[] args) {
14 String account = "root";
15 String apiKey = "*********";
16 String endpoint = "*.*.*.*:*"; // example: 127.0.0.1:5287
17 ClientConfiguration clientConfiguration = new ClientConfiguration();
18 clientConfiguration.setCredentials(new Credentials(account, apiKey));
19 clientConfiguration.setEndpoint(endpoint);
20 MochowClient mochowClient = new MochowClient(clientConfiguration);
21 String databaseName = "test";
22 String tableName = "test";
23
24 BatchSearchRequest searchRequest = BatchSearchRequest.builder()
25 .database(databaseName)
26 .table(tableName)
27 .anns(
28 BatchANNSearchParams.builder()
29 .vectorField("vector")
30 .vectorFloats(Arrays.asList(Arrays.asList(1F, 0.21F, 0.213F, 0F)))
31 .filter("bookName='三国演义'")
32 .params(HNSWSearchParams.builder().ef(200).limit(10).build()).build()
33 ).build();
34 BatchSearchResponse searchResponse = mochowClient.batchSearch(searchRequest);
35 System.out.printf("Search response: %s\n", JsonUtils.toJsonString(searchResponse));
36 }
37}
BatchSearchRequest
基于多个向量字段值的KNN或ANN检索操作,支持通过标量字段值进行过滤。仅适用于多节点标准版,不支持单节点免费测试版。拥有constructor、getter、setter等通用方法,通用方法详情可以参考通用说明。其builder方法和通用的builder有区别,在下面有具体说明。
1import com.baidu.mochow.model.BatchSearchRequest; //导入包
成员名 | 类型 | 是否必选 | 用途 |
---|---|---|---|
database | String | 是 | 检索数据的库名 |
table | String | 是 | 检索数据的表名 |
anns | BatchANNSearchParams | 无 | 检索请求参数详情。 |
retrieveVector | Boolean | 否 | 是否返回结果记录中的向量字段值,默认为False |
partitionKey | GeneralParams | 否 | 指定记录的分区键值。 如果该表的分区键和主键是同一个键,则不需要填写分区键值。 |
projections | List<String> | 否 | 投影字段列表,默认为空,为空时查询结果默认返回所有标量字段。 |
readConsistency | ReadConsistency | 否 | 查询请求的一致性级别,取值为: |
可以使用BatchSearchRequest.builder()获取BatchSearchRequest的builder类,builder类拥有如下方法
方法 | 参数类型 | 返回值类型 | 功能 |
---|---|---|---|
database | String | 无 | 设置BatchSearchRequest的database |
table | String | 无 | 设置BatchSearchRequest的table |
partitionKey | GeneralParams | 无 | 设置BatchSearchRequest的partitionKey |
addPartitionKey | String, Object | 无 | 为BatchSearchRequest增加一个partitionKey |
projections | List<String> | 无 | 设置BatchSearchRequest的projections |
retrieveVector | Boolean | 无 | 设置BatchSearchRequest的retrieveVector |
readConsistency | ReadConsistency | 无 | 设置BatchSearchRequest的readConsistency |
anns | ANNSearchParams | 无 | 设置BatchSearchRequest的anns |
build | 无 | BatchSearchRequest | 返回一个构建好的BatchSearchRequest |
BatchANNSearchParams
1import com.baidu.mochow.model.entity.ANNSearchParams; //导入包
成员名 | 类型 | 是否必选 | 参数含义 |
---|---|---|---|
vectorField | String | 是 | 检索的指定向量字段名称 |
vectorFloats | List<List<FloatVector>> | 是 | 检索的目标向量字段值。 |
params | SearchParam | 是 | 检索算法的参数详情。 |
filter | String | 否 | 检索的标量过滤条件,表示仅在符合过滤条件的候选集中进行检索,默认为空。Filter表达式语法参照SQL的WHERE子句语法进行设计,其详细描述和使用示例请参见Filter条件表达式。 |
BatchSearchParams
HNSWSearchParams
1import com.baidu.mochow.model.entity.HNSWSearchParams; //导入包
成员名 | 类型 | 是否必选 | 参数含义 |
---|---|---|---|
ef | int | 是 | HNSW算法检索过程的动态候选列表的大小。 |
distanceNear | float | 是 | 范围检索场景中的最近距离,表示仅检索候选集中与目标向量的距离大于该值的向量。取值约束同上。 |
distanceFar | distanceFar | 否 | 范围检索场景中的最远距离,表示仅检索候选集中与目标向量的距离小于该值的向量。取值约束如下: |
PUCKSearchParams
1import com.baidu.mochow.model.entity.PUCKSearchParams; //导入包
成员名 | 类型 | 是否必选 | 参数含义 |
---|---|---|---|
ef | int | 是 | HNSW算法检索过程的动态候选列表的大小。 |
distanceNear | float | 是 | 范围检索场景中的最近距离,表示仅检索候选集中与目标向量的距离大于该值的向量。取值约束同上。 |
distanceFar | distanceFar | 否 | 范围检索场景中的最远距离,表示仅检索候选集中与目标向量的距离小于该值的向量。取值约束如下: |
BatchSearchResponse
插入或更新回复,向量数据库向客户端返回插入或更新请求的执行结果,拥有getter通用方法,通用方法可以参考通用说明。
1import com.baidu.mochow.model.BatchSearchResponse; //导入包
成员名 | 类型 | 用途 |
---|---|---|
results | List<SearchResponse> | 查询的结果 |
SearchResponse
插入或更新回复,向量数据库向客户端返回插入或更新请求的执行结果,拥有getter通用方法,通用方法可以参考通用说明。
1import com.baidu.mochow.model.SearchResponse; //导入包
成员名 | 类型 | 用途 |
---|---|---|
searchVectorFloats | List |
查询的向量 |
rows | List |
查询结果行 |