You need to enable JavaScript to run this app.
导航
SearchByScalar
最近更新时间:2024.06.14 11:34:51首次发布时间:2024.06.14 11:34:51

概述

/index/search 接口用于实现检索,本页面主要介绍如何实现标量检索。
向量数据库中的标量检索指的是基于标量值的检索方法。在向量数据库中,每个向量都有一个或多个标量值,标量检索可以基于这些标量值进行检索,找到与查询相关的数据。例如文档检索中的作者特征检索。

说明

Collection 数据写入/删除后,Index 数据更新时间最长滞后 20s,不能立即在 Index 检索到。

请求参数

字段名

类型

是否必传

说明

CollectionName/CollectionAlias

string

数据集名称或数据集别名,二选一

IndexName

string

索引名称

Limit

number

返回数量

OutputFields

string[]

返回数据字段

Partition

string | number

子索引名称,类型对齐子索引类型

Filter

Filter

标量过滤

ScalarConfig

ScalarConfig

标量配置

ScalarConfig

字段名

类型

是否必传

说明

Order

asc | desc

排序

FieldName

string

排序字段,需要字段值可被排序

Filter

type Filter =
  | MustTypeCondition
  | NumberRangeTypeCondition
  | AreaRangeTypeCondition
  | GeographicalRangeTypeCondition
  | LogicTypeCondition;
  
enum SearchOperation {
  Must = "must",
  MustNot = "must_not",
  Range = "range",
  RangeOut = "range_out",
  /** 地理距离筛选 */
  GeographicalRange = "georange",
  And = "and",
  Or = "or",
} 

MustTypeCondition

字段名

类型

是否必传

说明

Operation

SearchOperation.Must
SearchOperation.MustNot

操作符

FieldName

string

字段名称

Conditions

Array<number | string | boolean>

操作元素

NumberRangeTypeCondition

字段名

类型

是否必传

说明

Operation

SearchOperation.Range
SearchOpeartion.RangeOut

操作符

FieldName

string

字段名称

GreatThen

number

大于

LessThen

number

小于

GreatThenEqual

number

大于等于

LessThenEqual

number

小于等于

AreaRangeTypeCondition

字段名

类型

是否必传

说明

Operation

SearchOperation.Range
SearchOpeartion.RangeOut

操作符

FieldNames

[string, string]

横坐标、纵坐标

Center

[number, number]

横坐标、纵坐标

Radius

number

半径

GeographicalRangeTypeCondition

字段名

类型

是否必传

说明

Operation

SearchOpeartion.GeographicalRange

操作符

FieldNames

[string, string]

横坐标、纵坐标

Center

[number, number]

横坐标、纵坐标

Radius

number

半径

LogicTypeCondition

字段名

类型

是否必传

说明

Operation

SearchOperation.And
SearchOperation.Or

操作符

Conditions

Filter[]

子过滤条件

响应参数
declare class SearchResponse<Data extends Record<string, any>> {
  readonly Data: SearchData<Data>[][];
  readonly OriginalRequest: string;
  readonly LogId: string;
  constructor(
    Data: SearchData<Data>[][],
    OriginalRequest: string,
    LogId: string
  );
}
/**
 * `score` 为检索排名
 *
 * `fields` 为这条数据的键值对
 *
 * 拓展字段中可能还会有其它内部字段,如:
 * - 主键字段,key 为定义的字段名
 */
interface SearchData<Data extends Record<string, unknown>> {
  Score: number;
  Fields?: Data;
  [key: string]: unknown;
} 

参考示例
import { vikingdb } from '@volcengine/openapi'

declare const service: vikingdb.VikingdbService // 替换为你初始化好的实例

interface Data {
  Id: number,
  Name: string
}

const response = await service.search.SearchByScalar<Data>({
  CollectionName: 'test_collection_1',
  IndexName: 'test_index_1',
  ScalarConfig: {
    FieldName: 'Id',
    Order: 'asc',
  }, // optional
  Limit: 10,
  DenseWeight: 0.5, // optional
  OutputFields: ['Id', 'Name'], // optional
  Partition: 10, // optional
  Filter: {
    Operation: vikingdb.search.SearchOperation.And,
    Conditions: [
      { FieldName: 'Name', Operation: vikingdb.search.SearchOpeartion.Must, Conditions: ['Tom'] },
      { FieldName: 'Id', Opeartion: vikingdb.search.SearchOpeartion.Range, GreatThen: 10 }
    ]
  }, // optional
})

console.log(response.Data) //  检索出来的数据 SearchData