您可以通过主键过滤能力在向量数据库中通过主键限定结果范围。
说明
主键过滤是通用检索能力,您在检索的相关接口中传入PrimaryKeyIn或PrimaryKeyNotIn参数来启用标量过滤能力。
参数 | 类型 | 是否必选 | 默认值 | 参数说明 |
---|---|---|---|---|
primaryKeyIn | list | 否 | None | 设定此参数,会限定仅在主键列表范围内进行检索。 |
primaryKeyNotIn | list | 否 | None | 设定此参数,将把主键列表范围内的数据从检索结果中排除 。 |
// 获取指定索引,程序初始化时调用即可,无需重复调用 index, _ := service.GetIndex("go", "goIndex")
filter := map[string]interface{}{ "op": "range", "field": "f_int64", "gt": 10, } searchOpt := vikingdb.NewSearchOptions().SetFilter(filter).SetLimit(5). SetPrimaryKeyIn([]interface{}{"1", "2", "3", "4"}). SetPrimaryKeyNotIn([]interface{}{"1"}). SetRetry(true) datas, err := index.Search(nil, searchOpt) if err != nil { panic(err) } for _, data := range datas { fmt.Println(data.Fields, data.Score) }
Go 调用执行上面的任务,返回 List<DataObject> 。DataObject 实例包含的属性如下表所示。
属性 | 说明 |
---|---|
Id | 主键 id。 |
Fields | 请求返回中的 fields 字段,是具体的数据,map 类型。 |
Score | 表示找到的向量和输入的向量的匹配程度。 |