昇腾社区首页
中文
注册
开发者
下载

AddFeatureByIndice接口

  • AddFeatureByIndice接口不能和AddFeature、AddWithExtraVal接口混用。
  • 使用AddFeatureByIndice接口按位置添加底库之后,不能使用GetExtraValAttrByLabel等依赖Label的接口,AddFeatureByIndice和GetFeatureByIndice需配套使用。

API定义

APP_ERROR AddFeatureByIndice(int64_t count, const void *features, const FeatureAttr *attributes, const int64_t *indices, const ExtraValAttr *extraVal = nullptr, const uint8_t *customAttr = nullptr);

功能描述

按照位置来添加底库特征。此接口当前只支持FlatIP和Int8Flat(cos距离)

输入

int64_t count:待添加的特征数量。

const void *features:待添加的特征,汉明距离为uint8_t类型的数据,Int8Flat为int8_t类型;FP16Flat距离为float类型。

const FeatureAttr *attributes:待添加的特征属性。

const int64_t *indices:待添加的特征在底库中的位置。

const ExtraValAttr *extraVal:待添加的附加特征属性。

const uint8_t *customAttr:待添加的用户自定义特征属性。

输出

返回值

APP_ERROR:调用返回状态,具体请参见接口调用返回值参考

约束说明

  • “count”单次取值在[1, 1e6]区间,底库最大值1e9。
  • “features”长度为count * 向量维度dim,否则可能出现越界读写错误并引起程序崩溃。
  • “attributes”长度为count,否则可能出现越界读写错误并引起程序崩溃。
  • “indices”长度为count,否则可能出现越界读写错误并引起程序崩溃。需为严格递增且非负的值,值小于底库数量时表示替换,值大于等于底库数量时表示新增,此时值需要连续的。
  • “extraVal”取值为空指针或者长度为count,否则可能出现越界读写错误并引起程序崩溃。取值为空指针时表示不需要添加附加属性。
  • “customAttr”取值为空指针或者长度为count * customAttrLen,否则可能出现越界读写错误并引起程序崩溃。取值为空指针时表示不需要添加自定义属性。