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

向量数据库VikingDB

复制全文
下载 pdf
检索
searchByRandom
复制全文
下载 pdf
searchByRandom

概述

随机检索是一种在未指定查询内容的情况下,从数据集中随机返回若干条记录的检索方式。随机检索同样支持过滤和对检索结果的后处理,可用于对比召回效果、数据过滤等场景。searchByRandom 会在满足过滤条件的数据中随机返回若干条记录。

请求参数

请求参数是 SearchByRandomRequest,其字段如下表所示。

名称

类型

必选

描述

Filter

map[string]interface{}

标量过滤条件,详见标量过滤

  • 不填表示在集合全量数据中随机返回。
  • 支持 must、must_not、range、range_out 等算子,可用 and / or 组合。

OutputFields

[]string

要返回的标量字段列表。

  1. 未设置时返回集合内所有标量字段。
  2. 传入空列表表示不返回任何标量字段。
  3. 字段名必须存在于 collection schema,否则请求报错。

Limit

int

限制返回条数,最大 5000。

Offset

int

分页偏移量,默认 0。

Partition

string

仅检索指定分区,默认搜索全部分区。

Advance

SearchAdvance

高级参数集合(post_process_ops、ids_in 等),详见检索公共参数

返回参数

名称

类型

描述

RequestId

string

请求链路 ID。

Code

string

服务返回码,Success 表示成功。

Message

string

错误或提示信息。

Api

string

具体调用的 API 名称。

Result

SearchResult

检索结果主体,结构见下。

  • SearchResult

名称

类型

描述

Data

[]SearchItemResult

召回到的结果列表,结构见下。

FilterMatchedCount

int

满足过滤条件的文档总数。

TotalReturnCount

int

本次返回的结果数量。

RealTextQuery

string

模型可能修正后的真实查询串(部分接口返回)。

TokenUsage

map[string]interface{}

token 计量信息。

  • SearchItemResult

属性

类型

说明

ID

interface{}

主键 id。

Fields

map[string]interface{}

请求返回结果中的 fields 字段。

Score

float64

相似度

AnnScore

float64

ann 得分

请求示例

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

  • 在 Go 项目中安装并引入对应版本的 VikingDB SDK;将完整代码保存为 main.go 后执行 go run main.go
  • AK/SK 在火山引擎控制台“密钥管理”中创建;Host 和 Region 取自地域和访问域名。请按代码的参数或环境变量读取方式完成配置。
  • Collection、Index 名称从 VikingDB 控制台对应资源详情获取;Task ID 使用创建或查询任务接口返回的 ID。请将 <YOUR_...> 占位符替换为真实值。
  • 若示例包含 TOS 路径,请从 TOS 控制台确认桶名和对象路径,并替换为真实的 <YOUR_BUCKET_NAME>/<YOUR_TOS_PATH>
package main

import (
    "context"
    "encoding/json"
    "fmt"
    "github.com/volcengine/vikingdb-go-sdk/vector"
    "github.com/volcengine/vikingdb-go-sdk/vector/model"
    "os"
    "time"
)

func main() {
    var (
       accessKey = os.Getenv("VIKINGDB_AK")
       secretKey = os.Getenv("VIKINGDB_SK")
       endpoint  = "https://api-vikingdb.vikingdb.cn-beijing.volces.com"
       region    = "cn-beijing"
    )

    client, err := vector.New(
       vector.AuthIAM(accessKey, secretKey), // IAM auth
       // vector.AuthAPIKey(apiKey),            // APIKey auth
       vector.WithEndpoint(endpoint),
       vector.WithRegion(region),
       vector.WithTimeout(time.Second*30),
       vector.WithMaxRetries(3),
    )
    if err != nil {
       fmt.Println("New client failed, err: ", err)
       panic(err)
    }
    ctx := context.Background()

    var (
       limit = 10
    )

    resp, err := client.Index(model.IndexLocator{
       CollectionLocator: model.CollectionLocator{
          CollectionName: "<YOUR_COLLECTION_NAME>",
       },
       IndexName: "<YOUR_INDEX_NAME>",
    }).SearchByRandom(ctx, model.SearchByRandomRequest{
       SearchBase: model.SearchBase{
          Limit: &limit,
       },
    })

    if err != nil {
       fmt.Println("SearchByRandom failed, err: ", err)
       panic(err)
    }

    jsonData, err := json.Marshal(resp.Result)
    if err != nil {
       fmt.Println("Marshal result failed, err: ", err)
       panic(err)
    }
    fmt.Println(string(jsonData))
}
最近更新时间:2026.09.08 12:02:59
这个页面对您有帮助吗?
有用
有用
无用
无用