检索功能包括多个接口组成,分别对应不同的检索模式和业务场景。
V2接口 | V1接口 | |
|---|---|---|
向量检索、稠密稀疏向量混合检索 | SearchByVector | https://www.volcengine.com/docs/84313/1419285 |
稠密稀疏向量混合检索 | SearchByVector, | https://www.volcengine.com/docs/84313/1419286 |
多模态检索 | SearchByMultiModal | https://www.volcengine.com/docs/84313/1419288 |
主键检索 | SearchByID | https://www.volcengine.com/docs/84313/1419285 |
标量排序检索 | SearchByScalar | https://www.volcengine.com/docs/84313/1419287 |
随机检索 | SearchByRandom | https://www.volcengine.com/docs/84313/1578505 |
关键词检索 | SearchByKeywords | 不支持 |
主键过滤 | ids_in、ids_not_in参数 | primary_key_in、primary_key_not_in参数 |
子索引 | 性能和易用性更强的分片研发中,敬请期待。 | partition参数指定 |
响应字段 | 主键值会单独列出,便于定位数据 | 所有字段均在同一级参数中 |
参数名 | 类型 | 必选 | 子参数 | 类型 | 备注 |
|---|---|---|---|---|---|
resource_id | string | 2选1 | 资源id | ||
collection_name | string | collection名称 | |||
index_name | string | 是 | 索引名称 | ||
output_fields | list | 否 | 要返回的标量字段列表.
| ||
filter | map | 否 | 过滤条件,格式见下文。默认为空,不做过滤 | ||
limit | int | 否 | 检索结果数量,默认为10, 上限是 100000 | ||
offset | int | 否 | 偏移量。仅分页场景下使用,不建议设置过大值,否则有深分页影响。默认值为0。设置值至少为0,语义和mysql的offset相同。 | ||
advance(一些高级参数,普通场景不需要设置) | map | 否 | dense_weight | float32 | 如果collection带有sparse向量字段,这里可以指定检索时dense和sparse的权重。默认值0.5,可选范围[0.2, 1] |
ids_in | list | 设定此参数,会限定仅在主键列表范围内进行检索。默认为空。 | |||
ids_not_in | list | 设定此参数,将把主键列表范围内的数据从检索结果中排除 。默认为空。 | |||
post_process_ops | list | 后置处理算子列表。在向量或标量召回阶段后,对候选数据进行进一步过滤处理,如字符串匹配、频控等。每个算子为一个map,串行执行。默认为空。详见下文后置处理算子。 | |||
post_process_input_limit | int | 当设置了post_process_ops时,进入后置处理阶段的候选数量。 | |||
scale_k | float64 | 检索sef是索引参数sef的scale_k倍。默认1,取值范围[0.1, 100],值越大检索结果越精确,但相应地会降低性能。 |
使用filter的前提是,相应的标量字段设置为了标量字段(设置了ScalarIndex)
算子 | 适用字段类型 | 示例 | |
|---|---|---|---|
must | string、int64、bool、list | 针对指定字段名生效,语义为必须在 [...] 之中,即 "must in" |
|
must_not | string、int64、bool、list | 针对指定字段名生效,语义为必须不在 [...] 之中,即 "must not in" |
|
and | / | 逻辑算子,针对逻辑查询需求,对多个条件取交集 |
|
or | / | 逻辑算子,针对逻辑查询需求,对多个条件取并集 |
|
range | int64、float32 | 针对指定字段名生效,语义为必须在指定范围内。配置使用 |
|
time_range | string | 时间点筛选,配置使用 |
|
geo_range | string | 地理距离筛选,使用 |
|
算子 | 适用字段类型 | 示例 | |
|---|---|---|---|
string_contain | string | 关键词匹配过滤算子。表示该字段内容包含pattern。 |
|
string_match | string | 正则匹配过滤算子。 |
|
enum_freq_limiter | string | 频控算子。用于保证一次召回的结果中, 一个特定取值出现的总数不超过 |
|
参数名 | 类型 | 子参数 | 说明 | |
|---|---|---|---|---|
result | map | data | list | 查询到的数据列表,SearchItem结构见下。 |
filter_matched_count | int | 如果有filter参数,返回满足filter的数量 | ||
total_return_count | int | 返回实际检索结果的数据条数 | ||
real_text_query | string | 可选。若为文本检索,返回真实执行时的检索语句(包含instruction) | ||
token_usage | map | 包括prompt_tokens、completion_tokens、image_tokens、total_tokens信息 |
参数名 | 类型 | 备注 |
|---|---|---|
id | string/int64 | 数据的主键字段值。 |
fields | map<string,any> | key为字段名,value为字段值 |
score | float | 必返回。最终得分score值。search接口返回的结果是按score排序的。 |
ann_score | float | 非必返回。如果是全文检索、score值计算处理等算子加工过,会返回向量检索(ANN)的原始score值。 |