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

向量数据库VikingDB

复制全文
下载 pdf
检索(search)
SearchByText
复制全文
下载 pdf
SearchByText

概述

SearchByText 用于非结构化数据检索。非结构化数据检索是指向量数据库支持非结构化原始数据,可以直接通过文本搜索文本。当用户通过文本搜索时,向量数据库通过测量文本之间的距离来确定两段文本的相似程度,返回文本的相似度。该功能适用于重复识别、文本搜索与匹配、问答等场景。

  • 当前仅支持文本类型的非结构化数据。
  • Collection 数据写入/删除后,Index 数据更新时间最长滞后 20s,不能立即在 Index 检索到。

请求参数

字段名

类型

是否必传

说明

CollectionName/CollectionAlias

string

是

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

IndexName

string

是

索引名称

Limit

number

是

返回数量

DenseWeight

number

否

权重

OutputFields

string[]

否

返回数据字段

Partition

string \| number

否

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

Filter

Filter

否

标量过滤

Text

string

是

搜索文本

Filter

运行示例前,请完成以下准备:

  • 在 Node.js 项目中安装示例导入的 VikingDB SDK 依赖;按示例语言保存为 .js/.mjs 或 .ts 文件,并使用对应的 Node.js/TypeScript 工具链运行。
  • AK/SK 在火山引擎控制台“密钥管理”中创建;Host 和 Region 取自地域和访问域名。请按代码的参数或环境变量读取方式完成配置。
  • Collection、Index 名称从 VikingDB 控制台对应资源详情获取;Task ID 使用创建或查询任务接口返回的 ID。请将 <YOUR_...> 占位符替换为真实值。
  • 若示例包含 TOS 路径,请从 TOS 控制台确认桶名和对象路径,并替换为真实的 <YOUR_BUCKET_NAME>/<YOUR_TOS_PATH>。
type Filter =
  | MustTypeCondition
  | NumberRangeTypeCondition
  | AreaRangeTypeCondition
  | LogicTypeCondition;
  
enum SearchOperation {
  Must = "must",
  MustNot = "must_not",
  Range = "range",
  RangeOut = "range_out",
  And = "and",
  Or = "or",
}

MustTypeCondition

字段名

类型

是否必传

说明

Operation

SearchOperation.Must
SearchOperation.MustNot

是

操作符

FieldName

string

是

字段名称

Conditions

Array<number \| string \| boolean>

是

操作元素

NumberRangeTypeCondition

字段名

类型

是否必传

说明

Operation

SearchOperation.Range
SearchOperation.RangeOut

是

操作符

FieldName

string

是

字段名称

GreatThen

number

否

大于

LessThen

number

否

小于

GreatThenEqual

number

否

大于等于

LessThenEqual

number

否

小于等于

AreaRangeTypeCondition

字段名

类型

是否必传

说明

Operation

SearchOperation.Range
SearchOperation.RangeOut

是

操作符

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.SearchByText<Data>({
  CollectionName: '<YOUR_COLLECTION_NAME>',
  IndexName: 'test_index_1',
  Text: 'Som text you want to search',
  Limit: 10,
  DenseWeight: 0.5, // optional
  OutputFields: ['Id', 'Name'], // optional
  Partition: "default", // optional
  Filter: {
    Operation: vikingdb.search.SearchOperation.And,
    Conditions: [
      { FieldName: 'Name', Operation: vikingdb.search.SearchOperation.Must, Conditions: ['Tom'] },
      { FieldName: 'Id', Operation: vikingdb.search.SearchOperation.Range, GreatThen: 10 }
    ]
  }, // optional
})

console.log(response.Data) //  检索出来的数据 SearchData
最近更新时间:2026.09.08 15:30:56
这个页面对您有帮助吗?
有用
有用
无用
无用