您可以通过主键过滤能力在向量数据库中通过主键限定结果范围。
说明
主键过滤是通用检索能力,您在检索的相关接口中传入PrimaryKeyIn或PrimaryKeyNotIn参数来启用标量过滤能力。
参数 | 类型 | 是否必选 | 默认值 | 参数说明 |
---|---|---|---|---|
primaryKeyIn | list | 否 | None | 设定此参数,会限定仅在主键列表范围内进行检索。 |
primaryKeyNotIn | list | 否 | None | 设定此参数,将把主键列表范围内的数据从检索结果中排除 。 |
//获取指定索引,程序初始化时调用即可,无需重复调用 Index index = vikingDBService.getIndex("test_text", "test_index_text");
List<String> outputField = Arrays.asList("f_id", "f_string", "f_int64"); List<DataObject> datas = index.search(new SearchParam() .setVectorOrder(new VectorOrder().setVector(DataUtil.genRandomVector(4)).build()) .setOutputFields(outputField) .setPartition("default") .setPrimaryKeyIn(Arrays.asList(0, 1, 2, 3, 4, 5)) .setPrimaryKeyNotIn(Arrays.asList(2, 3)) .setLimit(20) .build()); System.out.println(datas);
Java 调用执行上面的任务,返回 List<DataObject> 。DataObject 实例包含的属性如下表所示。
属性 | 说明 |
---|---|
id | 主键 id。 |
fields | 请求返回中的 fields 字段,是具体的数据,map 类型。 |
score | 表示找到的向量和输入的向量的匹配程度。 |