/index/search 接口用于实现检索,本页面主要介绍如何实现标量检索。
向量数据库中的标量检索指的是基于标量值的检索方法。在向量数据库中,每个向量都有一个或多个标量值,标量检索可以基于这些标量值进行检索,找到与查询相关的数据。例如文档检索中的作者特征检索。
说明
Collection 数据写入/删除后,Index 数据更新时间最长滞后 20s,不能立即在 Index 检索到。
字段名 | 类型 | 是否必传 | 说明 |
---|---|---|---|
CollectionName/CollectionAlias |
| 是 | 数据集名称或数据集别名,二选一 |
IndexName |
| 是 | 索引名称 |
Limit |
| 是 | 返回数量 |
OutputFields |
| 否 | 返回数据字段 |
Partition |
| 否 | 子索引名称,类型对齐子索引类型 |
Filter |
| 否 | 标量过滤 |
ScalarConfig |
| 否 | 标量配置 |
字段名 | 类型 | 是否必传 | 说明 |
---|---|---|---|
Order |
| 是 | 排序 |
FieldName | string | 是 | 排序字段,需要字段值可被排序 |
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", }
字段名 | 类型 | 是否必传 | 说明 |
---|---|---|---|
Operation |
| 是 | 操作符 |
FieldName |
| 是 | 字段名称 |
Conditions |
| 是 | 操作元素 |
字段名 | 类型 | 是否必传 | 说明 |
---|---|---|---|
Operation |
| 是 | 操作符 |
FieldName |
| 是 | 字段名称 |
GreatThen |
| 否 | 大于 |
LessThen |
| 否 | 小于 |
GreatThenEqual |
| 否 | 大于等于 |
LessThenEqual |
| 否 | 小于等于 |
字段名 | 类型 | 是否必传 | 说明 |
---|---|---|---|
Operation |
| 是 | 操作符 |
FieldNames |
| 是 | 横坐标、纵坐标 |
Center |
| 是 | 横坐标、纵坐标 |
Radius |
| 是 | 半径 |
字段名 | 类型 | 是否必传 | 说明 |
---|---|---|---|
Operation |
| 是 | 操作符 |
FieldNames |
| 是 | 横坐标、纵坐标 |
Center |
| 是 | 横坐标、纵坐标 |
Radius |
| 是 | 半径 |
字段名 | 类型 | 是否必传 | 说明 |
---|---|---|---|
Operation |
| 是 | 操作符 |
Conditions |
| 是 | 子过滤条件 |
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