SearchByText 用于非结构化数据检索。非结构化数据检索是指向量数据库支持非结构化原始数据,可以直接通过文本搜索文本。当用户通过文本搜索时,向量数据库通过测量文本之间的距离来确定两段文本的相似程度,返回文本的相似度。该功能适用于重复识别、文本搜索与匹配、问答等场景。
字段名 | 类型 | 是否必传 | 说明 |
|---|---|---|---|
CollectionName/CollectionAlias |
| 是 | 数据集名称或数据集别名,二选一 |
IndexName |
| 是 | 索引名称 |
Limit |
| 是 | 返回数量 |
DenseWeight |
| 否 | 权重 |
OutputFields |
| 否 | 返回数据字段 |
Partition |
| 否 | 子索引名称,类型对齐子索引类型 |
Filter |
| 否 | 标量过滤 |
Text |
| 是 | 搜索文本 |
运行示例前,请完成以下准备:
- 在 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", }
字段名 | 类型 | 是否必传 | 说明 |
|---|---|---|---|
Operation |
| 是 | 操作符 |
FieldName |
| 是 | 字段名称 |
Conditions |
| 是 | 操作元素 |
字段名 | 类型 | 是否必传 | 说明 |
|---|---|---|---|
Operation |
| 是 | 操作符 |
FieldName |
| 是 | 字段名称 |
GreatThen |
| 否 | 大于 |
LessThen |
| 否 | 小于 |
GreatThenEqual |
| 否 | 大于等于 |
LessThenEqual |
| 否 | 小于等于 |
字段名 | 类型 | 是否必传 | 说明 |
|---|---|---|---|
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.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