You need to enable JavaScript to run this app.
文档中心
向量数据库VikingDB

向量数据库VikingDB

复制全文
下载 pdf
检索过滤能力
后置处理算子
复制全文
下载 pdf
后置处理算子

后置处理算子是 VikingDB 提供的一种检索后处理能力,用于在向量召回之后,对候选数据进行进一步的过滤和优化,确保最终返回的搜索结果更加精准、高效。
在 VikingDB 中,后置处理算子可用于:

  • 结果精准筛选:基于业务需求通过正则匹配设定筛选规则,如筛选包含某种特征文字信息的商品,确保用户获得有效的检索结果。
  • 数据质量提升:使用正则匹配对检索结果进行格式校验,过滤包含特殊字符、非法内容或广告信息的数据,确保返回内容符合标准,提高数据规范性。
  • 检索结果均衡:对特定字段设置出现频率限制,防止某些值占据过多搜索结果,如热门品牌、热门作者或特定分类过度曝光,保证检索结果的多样性和公平性。

后置处理算子是通用检索能力,您可以将其应用在基本向量检索、稠密稀疏混合检索中。

参数说明

参数

类型

是否必选

默认值

参数说明

postProcessOps

list

否

后置处理算子列表。在向量或标量召回阶段后,对候选数据进行进一步过滤处理,如字符串匹配、频控等。每个算子为一个map,串行执行。默认为空。详见下文后置处理算子。

postProcessInputLimit

int

否

1000

当设置了 postProcessOps 时,进入后置处理阶段的候选数量。必须大于 0,实际候选数不超过 min(10000, limit × 10)。

后置处理算子

算子

说明

示例

string_match

正则匹配算子。仅限string类型字段使用。
正则匹配规则请参考:Syntax

JSON <br> { <br> "op": "string_match", <br> "field": "name", <br> "pattern": "^[0-9A-Za-z_]+$" <br> } <br>

string_contain

关键词匹配算子。仅限string类型字段使用。
表示该字段内容包含pattern。

JSON <br> { <br> "op": "string_contain", <br> "field": "name", <br> "pattern": "bar" <br> } <br>

enum_freq_limiter

频控算子。仅限string类型字段使用。
用于保证一次召回的结果中, 一个特定取值出现的总数不超过 threshold 次。

JSON <br> { <br> "op": "enum_freq_limiter", <br> "field": "city", <br> "threshold": 5 <br> } <br>

示例

运行以下示例前,请根据实际环境完成依赖安装和参数配置,并替换代码中的示例值。

// 获取指定索引,程序初始化时调用即可,无需重复调用
index, _ := service.GetIndex("<YOUR_COLLECTION_NAME>", "<YOUR_INDEX_NAME>")
filter := map[string]interface{}{
                "op":    "range",
                "field": "f_int64",
                "gt":    10,
        }
searchOpt := vikingdb.NewSearchOptions().SetFilter(filter).SetLimit(15).
                SetPostProcessOps([]map[string]interface{}{
                        {"op": "enum_freq_limiter", "field": "f_string", "threshold": 1},
                        {"op": "string_contain", "field": "f_string", "pattern": "doc2%"},
                }).
                SetPostProcessInputLimit(10).
                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 实例包含的属性如下表所示。

属性

说明

Id

主键 id。

Fields

请求返回中的 fields 字段,是具体的数据,map 类型。

Score

表示找到的向量和输入的向量的匹配程度。

参数说明补充

算子字段

字段类型必填含义
opstring是算子名称。
fieldstring是参与后处理的字段名。
patternstring字符串匹配算子必填匹配模式或待匹配文本。
thresholdnumber阈值类算子必填过滤或截断阈值。

示例修正

已将 enum_freq_limiter 示例修正为合法 JSON:"field": "city", 后再书写下一字段。

最近更新时间:2026.09.08 15:30:58
这个页面对您有帮助吗?
有用
有用
无用
无用