search_knowledge 用于对知识库进行检索和前后处理,当前会默认对原始文本加工后的知识内容进行检索。
参数 | 子参数 | 类型 | 是否必选 | 默认值 | 参数说明 |
|---|---|---|---|---|---|
CollectionName | -- | string | 否 | -- | 知识库名称 |
ProjectName | -- | string | 否 | default | 知识库所属项目,获取方式参见文档API 接入与技术支持 |
ResourceID | -- | string | 否 | -- | 知识库唯一 id |
Query | -- | string | 是 | -- | 检索文本
|
ImageQuery | -- | string | 否 | -- | 检索图片
|
Limit | -- | int | 否 | 10 | 检索结果数量
|
QueryParam | map[string]interface{} | 否 | 检索的过滤和返回设置 | ||
doc_filter | map | 否 | -- | 检索过滤条件
例如:
多层 filter:
| |
DenseWeight | -- | float32 | 否 | 0.5 | 混合检索中稠密向量的权重
|
PreProcessing | map[string]interface{} | 检索预处理 | |||
need_instruction | bool | 否 | False | 是否拼接 instruction 进行检索 | |
return_token_usage | bool | 否 | False | 是否返回 search 流程中各阶段的 token 使用量 | |
rewrite | bool | 否 | False | 是否对 query 进行改写
| |
messages | json | 是 | -- | 多轮对话信息
| |
PostProcessing | map[string]interface{} | 检索后处理 | |||
rerank_switch | bool | 否 | False | 自动对结果做 rerank | |
retrieve_count | int | 否 | 25 | 进入重排的切片数量,默认为 25 | |
chunk_diffusion_count | int | 否 | 0 | 检索阶段返回命中切片的上下几片邻近切片 | |
chunk_group | bool | 否 | False | 文本聚合 | |
rerank_model | string | 否 | "base-multilingual-rerank" | rerank 模型选择
| |
rerank_threshold | float | 否 | -- | 阈值过滤 | |
rerank_instruction | string | 否 | -- | rerank 指令 | |
rerank_only_chunk | bool | 否 | False | 是否仅根据 chunk 内容计算重排分数
| |
get_attachment_link | bool | 否 | False | 是否获取切片中图片的临时下载链接 |
字段 | 类型 | 参数说明 |
|---|---|---|
Code | int | 状态码 |
Message | string | 返回信息 |
RequestID | string | 标识每个请求的唯一标识符 |
Data | *SearchKnowledgeResult | SearchKnowledgeResult |
字段 | 类型 | 参数说明 |
|---|---|---|
Count | *int | 检索结果返回的条数 |
RewriteQuery | *string | query 改写的结果 |
TokenUsage | map[string]interface{} | Token 使用信息 |
ResultList | []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 | 切片内容 |
ChunkID | *int64 | 切片位次 id,代表在原始文档中的位次顺序 |
OriginalQuestion | *string | faq 数据检索召回答案对应的原始问题 |
DocInfo | *PointDocInfo | PointDocInfo |
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) |
VideoOutline | map[string]interface{} | 视频大纲 |
AudioStartTime | *int64 | 音频切片的起始时间(ms) |
AudioEndTime | *int64 | 音频切片的结束时间(ms) |
AudioOutline | map[string]interface{} | 音频大纲 |
SheetName | *string | sheet 名称 |
Project | *string | 项目名 |
ResourceID | *string | 知识库唯一 id |
字段 | 类型 | 参数说明 |
|---|---|---|
DocID | *string | 所属文档 id |
DocName | *string | 所属文档名字 |
CreateTime | *int64 | 文档创建时间 |
DocType | *string | 所属原始文档类型 |
DocMeta | *string | 所属文档的 meta 信息 |
Source | *string | 所属文档知识来源(url,tos 等) |
Title | *string | 所属文档标题 |
Status | *DocStatus | DocStatus |
字段 | 类型 | 参数说明 |
|---|---|---|
ProcessStatus | *int | 处理状态 |
FailedCode | *int | 失败错误码 |
FailedMsg | *string | 失败错误信息 |
字段 | 类型 | 参数说明 |
|---|---|---|
UUID | *string | 附件的唯一标识 |
Caption | *string | 图片所属标题,若未识别到标题则值为 "\n" |
Type | *string | image 等 |
Link | *string | 临时下载链接,有效期 10 分钟 |
InfoLink | *string | 附件 info_link |
ColumnName | *string | 附件列名 |
字段 | 类型 | 参数说明 |
|---|---|---|
FieldName | *string | 字段名 |
FieldValue | interface{} | 字段值 |
状态码 | http状态码 | 返回信息 | 状态码说明 |
|---|---|---|---|
0 | 200 | success | 成功 |
1000001 | 401 | unauthorized | 缺乏鉴权信息 |
1000002 | 403 | no permission | 权限不足 |
1000003 | 400 | invalid request:%s | 非法参数 |
1000005 | 400 | collection not exist | collection 不存在 |
首次使用知识库 SDK ,可参考 使用说明
本示例演示了知识库 Go SDK 中 SearchKnowledge 的基础使用方法,通过指定数据集名称和查询语句实现知识库检索,使用前需配置 AK/SK 鉴权参数。
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 ( accessKey = os.Getenv("VIKINGDB_AK") secretKey = os.Getenv("VIKINGDB_SK") endpoint = "https://api-knowledgebase.mlp.cn-beijing.volces.com" region = "cn-beijing" ) client, err := knowledge.New( knowledge.AuthIAM(accessKey, secretKey), 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, }) if err != nil { fmt.Printf("SearchKnowledge failed, err: %v\n", err) return } jsonData, _ := json.Marshal(resp) fmt.Printf("Response: %s\n", string(jsonData)) }