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

向量数据库VikingDB

复制全文
下载 pdf
知识库(Collection)
search_knowledge
复制全文
下载 pdf
search_knowledge
概述

search_knowledge 用于对知识库进行检索和前后处理,当前会默认对原始文本加工后的知识内容进行检索。

请求参数
参数子参数类型是否必选默认值参数说明
CollectionName--string否--知识库名称

ProjectName

--

string

否

default

知识库所属项目,获取方式参见文档API 接入与技术支持
若不指定该字段,则默认在 default 项目下检索。
若需要操作指定项目下的知识库,需正确配置该字段。

ResourceID

--

string

否

--

知识库唯一 ID
可通过创建知识库接口的返回值或知识库列表接口获取
可选择直接传 ResourceID,或同时传 CollectionName 和 ProjectName 作为知识库的唯一标识

Query

--

string

是

--

检索文本

  • 最大可输入长度为 8000,query 长度 > 8000 时,接口报错
  • 所选 embedding 模型输入最大长度 < query 长度 < 8000 时,query 按所选模型自动截断
  • query 长度 < 所选 embedding 模型输入最大长度时,正常检索返回目标切片

ImageQuery

--

string

否

--

检索图片
支持图片 URL 或 Base64 编码,详细要求见图片像素说明和图片文件格式

  • 图片 URL 传入:适用于图片文件已存在公网可访问 URL 的场景,单张图片小于 10 MB
  • Base64 编码传入:适用于图片文件较小的场景,支持 JPEG、PNG、WebP、BMP 四种格式的 Base64 编码,单张图片小于 3 MB,请求体不能超过 4 MB

Limit

--

int

否

10

检索结果数量

  • 数量要求:[1, 1000]
QueryParammap[string]interface{}否检索的过滤和返回设置

include_path_list

[]string

否

--

检索目录范围
指定参与检索的目录路径列表,例如 []string{"/dir/"}。

doc_filter

map

否

--

检索过滤条件

  • 支持对 doc 的 meta 信息过滤
  • 详细使用方式和支持字段见filter表达式,可支持对 doc_id 做筛选
  • 此处用于过滤的字段,需要在 collection/create 时添加到 index_config 的 fields 上
    例如:
    单层 filter:
    Plain Text | doc_filter = { "op": "must", // 查询算子 must/must_not/range/range_out "field": "doc_id", "conds": ["tos_doc_id_123", "tos_doc_id_456"] } query_param = { "doc_filter": doc_filter } |
    多层 filter:
    Plain Text | doc_filter = { "op": "and", // 逻辑算子 and/or "conds": [ // 条件列表,支持嵌套逻辑算子和查询算子 { "op": "must", "field": "type", "conds": [1] }, { ... // 支持>=1的任意数量的条件进行组合 } ] } query_param = { "doc_filter": doc_filter } |

DenseWeight

--

float32

否

0.5

混合检索中稠密向量的权重

  • 1 表示纯稠密检索 ,0 表示纯字面检索;可选值为 0 或 [0.2, 1],其他值会抛出错误
  • 只有在请求的知识库使用的是混合检索时有效,即索引算法为 hnsw_hybrid
PreProcessingmap[string]interface{}检索预处理

need_instruction

bool

否

False

是否拼接 instruction 进行检索

  • true:拼接知识库配置的 instruction;false:不拼接 instruction
return_token_usagebool否False是否返回 search 流程中各阶段的 token 使用量

rewrite

bool

否

False

是否对 query 进行改写
根据 messages 字段传入的历史对话信息进行改写,最多 3 轮
注:​只有在messages字段长度大于2且不为空时,设置参数值为True,才能返回有效的rewrite_query;
json | "messages":[ {"role": "user", "content": "prompt 1"}, {"role": "assistant", "content": "prompt2"}, {"role": "user", "content": "prompt 3"} ] |

messages

json

否

--

多轮对话信息
仅当 rewrite 为 true 时必填,用于根据历史对话内容改写问题。上传对话轮数需 >= 1
发出消息的对话参与者角色,可选值包括:

  • user:User Message 用户消息
  • assistant:Assistant Message 对话助手消息
    json | [ {"role": "user", "content": "知识库支持哪些文档格式?"}, {"role": "assistant", "content": "知识库支持结构化和非结构化文档,其中结构化文档支持 excel、csv、jsonl 等常见格式,非结构化文档支持 pdf、docx、ppt 等常见格式。"}, {"role": "user", "content": "那大小呢?"} ] |
PostProcessingmap[string]interface{}检索后处理

rerank_switch

bool

否

False

自动对结果做 rerank

  • true:请求 rerank 模型排序;false:不进行 rerank

retrieve_count

int

否

25

进入重排的切片数量,默认为 25
只有在 rerank_switch 为 True 时生效。retrieve_count 需要大于等于 limit,否则会抛出错误

chunk_diffusion_count

int

否

0

检索阶段返回命中切片的上下几片邻近切片
默认为 0,表示不进行 chunk diffusion。范围 [0, 5]

chunk_group

bool

否

False

文本聚合
默认不聚合,对于非结构化文件,考虑到原始文档内容语序对大模型的理解,可开启文本聚合。开启后,会根据文档及文档顺序,对切片进行重新聚合排序返回

rerank_model

string

否

"base-multilingual-rerank"

rerank 模型选择
仅在 "rerank_switch" == True 的时候生效
可选模型:

  • "doubao-seed-rerank"(即 doubao-seed-1.6-rerank):字节自研多模态重排模型、支持文本 / 图片 / 视频混合重排、精细语义匹配、可选阈值过滤与指令设置
  • "base-multilingual-rerank":速度快、长文本、支持70+种语言
  • "m3-v2-rerank":常规文本、支持100+种语言

rerank_threshold

float

否

--

阈值过滤
仅当 rerank_model=="doubao-seed-rerank" 时生效,用于设置重排分数的过滤阈值,低于阈值的结果将不会被返回,取值范围为 0 到 1

rerank_instruction

string

否

--

rerank 指令
仅在 "rerank_switch" == True 且 "rerank_model" == "doubao-seed-rerank" 时生效,用于提供给模型一个明确的排序指令,提升重排效果。字符串长度不超过 1024
如,Whether the document answers the query or matches the content retrieval intent

rerank_only_chunk

bool

否

False

是否仅根据 chunk 内容计算重排分数
可选值:

  • True: 只根据 chunk 内容计算分
  • False:根据 chunk title + 内容 一起计算排序分

get_attachment_link

bool

否

False

是否获取切片中图片的临时下载链接

  • true:返回临时下载链接;false:不返回临时下载链接
响应消息
字段类型参数说明
Codeint状态码
Messagestring返回信息
RequestIDstring标识每个请求的唯一标识符
Data*SearchKnowledgeResultSearchKnowledgeResult

SearchKnowledgeResult

字段类型参数说明
Count*int检索结果返回的条数
RewriteQuery*stringquery 改写的结果
TokenUsagemap[string]interface{}Token 使用信息
ResultList[]PointInfo检索召回切片信息列表

PointInfo

字段类型参数说明
CollectionName*string知识库名称
PointID*string切片 id(知识库下唯一)
ProcessTime*int64切片处理完成的时间
OriginText*string原始文本
MDContent*string切片 markdown 解析结果,保留更多的原始表格信息(chunk_type 为 table 时会返回)
HTMLContent*string切片 html 解析结果,保留更多的原始表格信息(chunk_type 为 table 时会返回)
ChunkTitle*string切片标题,是由解析模型识别出来的上一层级的标题。若没有上一层级标题则为空
ChunkType*string切片所属类型
Description*string文档描述(当前仅支持图片文档)

Content

*string

切片内容
1、非结构化文件:Content 返回切片内容
2、faq 文件:Content 返回答案
3、结构化文件:Content 返回参与索引的字段和取值,以 K:V 对拼接,使用 \n 区隔

ChunkID*int64切片位次 id,代表在原始文档中的位次顺序
OriginalQuestion*stringfaq 数据检索召回答案对应的原始问题
DocInfo*PointDocInfoPointDocInfo
RerankScore*float64重排得分
Score*float64检索得分
ChunkSource*string切片来源
ChunkAttachment[]ChunkAttachment临时下载链接,有效期 10 分钟
TableChunkFields[]PointTableChunkField结构化数据检索返回单行全量数据
UpdateTime*int64更新时间
ChunkStatus*string切片状态
VideoFrame*string视频帧
VideoURL*string视频链接
VideoStartTime*int64视频切片的起始时间(ms)
VideoEndTime*int64视频切片的结束时间(ms)
VideoOutlinemap[string]interface{}视频大纲
AudioStartTime*int64音频切片的起始时间(ms)
AudioEndTime*int64音频切片的结束时间(ms)
AudioOutlinemap[string]interface{}音频大纲
SheetName*stringsheet 名称
Project*string项目名
ResourceID*string知识库唯一 id

PointDocInfo

字段类型参数说明
DocID*string所属文档 id
DocName*string所属文档名字
CreateTime*int64文档创建时间
DocType*string所属原始文档类型
DocMeta*string所属文档的 meta 信息
Source*string所属文档知识来源(url,tos 等)
Title*string所属文档标题
Status*DocStatusDocStatus

DocStatus

字段类型参数说明
ProcessStatus*int处理状态
FailedCode*int失败错误码
FailedMsg*string失败错误信息

ChunkAttachment

字段类型参数说明
UUID*string附件的唯一标识
Caption*string图片所属标题,若未识别到标题则值为 "\n"
Type*stringimage 等
Link*string临时下载链接,有效期 10 分钟
InfoLink*string附件 info_link
ColumnName*string附件列名

PointTableChunkField

字段类型参数说明
FieldName*string字段名
FieldValueinterface{}字段值
状态码说明
状态码http状态码返回信息状态码说明
0200success成功
1000001401unauthorized缺乏鉴权信息
1000002403no permission权限不足
1000003400invalid request:%s非法参数
1000005400collection not existcollection 不存在
请求示例

首次使用知识库 SDK ,可参考 使用说明
本示例演示了知识库 Go SDK 中 SearchKnowledge 的基础使用方法,通过指定知识库名称和查询语句实现知识库检索,使用前需配置 API Key 鉴权参数。

package main

import (
    "context"
    "encoding/json"
    "fmt"
    "os"
    "time"

    "github.com/volcengine/vikingdb-go-sdk/knowledge"
    "github.com/volcengine/vikingdb-go-sdk/knowledge/model"
)

func main() {
    var (
       apiKey    = os.Getenv("VIKINGDB_API_KEY")
       endpoint  = "https://api-knowledgebase.mlp.cn-beijing.volces.com"
       region    = "cn-beijing"
    )

    client, err := knowledge.New(
       knowledge.AuthAPIKey(apiKey),
       knowledge.WithEndpoint(endpoint),
       knowledge.WithRegion(region),
       knowledge.WithTimeout(time.Second*30),
    )
    if err != nil {
       fmt.Printf("New client failed, err: %v\n", err)
       return
    }
    ctx := context.Background()

    collection := client.Collection(model.CollectionMeta{
       CollectionName: "<YOUR_COLLECTION_NAME>",
       ProjectName:    "default",
    })

    limit := 10
    denseWeight := 0.5
    
    resp, err := collection.SearchKnowledge(ctx, model.SearchKnowledgeRequest{
        Query:       "<YOUR_QUERY>",
        Limit:       &limit,
        DenseWeight: &denseWeight,
        QueryParam:  map[string]interface{}{"include_path_list": []string{"/dir/"}},
    })
    if err != nil {
        fmt.Printf("SearchKnowledge failed, err: %v\n", err)
        return
    }

    jsonData, _ := json.Marshal(resp)
    fmt.Printf("Response: %s\n", string(jsonData))
}
最近更新时间:2026.09.08 20:33:18
这个页面对您有帮助吗?
有用
有用
无用
无用