SearchByText 用于非结构化数据检索。非结构化数据检索是指向量数据库支持非结构化原始数据,可以直接通过文本搜索文本。当用户通过文本搜索时,向量数据库通过测量文本之间的距离来确定两段文本的相似程度,返回文本的相似度。该功能适用于重复识别、文本搜索与匹配、问答等场景。
说明
字段名 | 类型 | 是否必传 | 说明 |
---|---|---|---|
CollectionName/CollectionAlias |
| 是 | 数据集名称或数据集别名,二选一 |
IndexName |
| 是 | 索引名称 |
Limit |
| 是 | 返回数量 |
DenseWeight |
| 否 | 权重 |
OutputFields |
| 否 | 返回数据字段 |
Partition |
| 否 | 子索引名称,类型对齐子索引类型 |
Filter |
| 否 | 标量过滤 |
Text |
| 是 | 搜索文本 |
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.SearchByText<Data>({ CollectionName: 'test_collection_1', IndexName: 'test_index_1', Text: 'Som text you want to search', 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