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

向量数据库VikingDB

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

本节将说明如何基于一个已创建的知识库做在线检索。

  • 知识库创建完成、文档导入且处理完成后,即代表可以进行在线检索了。
  • 使用 SDK 前请先完成“安装与初始化“页面的前置步骤。
  • search_collection 和 search_knowledge 的区别:search_knowledge 是知识库在线链路升级后的最新函数,在原本 search 的基础上支持了多轮改写、文档聚合排序等新功能,与 chat_completions 联动,可以完成标准的检索生成链路

概述

search_knowledge 用于对知识库进行检索和前后处理,当前会默认对原始文本加工后的知识内容进行检索。
知识库文档导入/删除后,知识库更新时间最长滞后 5s,不能立即检索到,待知识库就绪后可正常检索。

请求参数

参数子参数类型是否必选默认值参数说明

name

--

string

否

知识库名称

  • 只能使用英文字母、数字、下划线_,并以英文字母开头,不能为空
  • 长度要求:[1, 64]

project

--

string

否

default

知识库所属项目
即在【访问控制】-【资源管理】-【项目】中创建的项目

resource_id

--

string

否

--

知识库唯一 ID
可直接传入 resource_id 定位知识库;不传时,使用调用 get_collection 获取 Collection 实例时指定的知识库名称,并结合 project 定位知识库

query

--

string

是

检索文本,最大可输入长度为 8000:

  • query 长度 > 8000 时,接口报错
  • 所选 embedding 模型输入最大长度 < query 长度 < 8000 时,query 按所选模型自动截断
  • query 长度 < 所选 embedding 模型输入最大长度 时,正常检索返回要检索的文本,最大可输入长度为 8000 ;

limit

--

int

否

10

检索结果数量

  • 数量要求:[1, 200]
query_paramjson否检索的过滤和返回设置

doc_filter

map

否

检索过滤条件,支持对 doc 的 meta 信息过滤

  • 使用方式和支持字段见filter 表达式,可支持对 doc_id 做筛选
  • 此处用于过滤的字段,需要在 collection/create 时添加到 index_config 的fields 上

dense_weight

--

float

否

0.5

混合检索中稠密向量的权重
1 表示纯稠密检索 ,0 表示纯字面检索;可选值为 0 或 [0.2, 1],其他值会抛出错误
只有在请求的知识库使用的是混合检索时有效,即索引算法为 hnsw_hybrid

pre_processingjson检索预处理

need_instruction

bool

否

False

是否拼接 instruction 进行检索

  • true:拼接知识库配置的 instruction;false:不拼接 instruction

rewrite

bool

否

False

是否对 query 进行改写
根据 messages 字段传入的历史对话信息进行改写,最多 3 轮
注:​只有在messages字段长度大于2且不为空时,设置参数值为True,才能返回有效的rewrite_query;

"messages":[
{"role": "user", "content": "prompt 1"},
{"role": "assistant", "content": "prompt2"},
{"role": "user", "content": "prompt 3"}
]
return_token_usagebool否False是否返回search流程中各阶段的token使用量

messages

json

是

多轮对话信息
当开启改写时需传入,根据多轮历史对话对当前问题进行改写
发出消息的对话参与者角色,可选值包括:

  • system:System Message 系统消息
  • user:User Message 用户消息
  • assistant:Assistant Message 对话助手消息
[
{"role": "system", "content": "你是一个智能助手。"},
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好!有什么我可以帮助你的?"}
]
post_processingjson检索后处理

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

否

m3-v2-rerank

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

  • "m3-v2-rerank":轻量小模型,具有强大的多语言能力,推理速度快

rerank_only_chunk

bool

否

False

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

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

get_attachment_link

bool

否

False

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

  • true:返回临时下载链接;false:不返回临时下载链接

示例

请求参数

请先完成SDK初始化,再运行代码,详见初始化SDK

collection_name = "gaodeng"
query ="测试"

pre_processing = {
             "need_instruction": True,
             "rewrite": True,
             "messages": [
                 {
                     "role": "system",
                     "content": ""
                 },
                 {
                     "role": "assistant",
                     "content": "请提供需要检索的问题。"
                 },
                 {
                     "role": "user",
                     "content": query # messages 最后一个元素的 content 和 query 保持一致
                 }
             ],
             "return_token_usage": True
         }

post_processing = {
             "rerank_switch": True,
             "rerank_model": "m3-v2-rerank",
             "rerank_only_chunk": False,
            #  'chunk_diffusion_count': 2,
             "retrieve_count": 10,
            #  "endpoint_id": "ep-20240725211310-b28mr",
             "chunk_group": True,
             "get_attachment_link": True
         }


res = viking_knowledgebase_service.search_knowledge(collection_name=collection_name,query=query,
                                                            pre_processing=pre_processing, limit=10, dense_weight=0.5,
                                                            post_processing=post_processing, project="default")


print(res)
返回值

Python 调用执行上面的任务,返回字典,包含的属性如下表所示

字段类型子字段子字段类型说明
rewrite_querystring--改写的 query,若未开启query改写,则此字段值为None
result_listlist返回切片信息
idstring索引的主键

content

string

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

scorefloat检索得分
point_idstring切片id
chunk_titlestring切片的标题
chunk_idintchunk的id
process_timeint检索耗时
rerank_scorefloat重排得分

doc_info

json

文档信息

{
"doc_id": "_sys_auto_gen_doc_id-134144883689", //文档 id
"doc_name": "2404.08817v2.pdf", //文档名字
"create_time": 1727333117, //文档的创建时间
"doc_type": "pdf", //知识所属原始文档的类型
"doc_meta": "[{\"field_name\":\"doc_id\",\"field_type\":\"string\",\"field_value\":\"_sys_auto_gen_doc_id-13411829101044883689\"}]", //文档相关元信息(此处是一个包含文档 id 信息的列表形式的字符串)
"source": "tos_fe", //知识来源
"title": "Revisiting Code Similarity Evaluation with Abstract Syntax Tree Edit Distance" //知识所属文档的标题
}
recall_positionint检索召回位次
rerank_positionint重排位次
table_chunk_fieldslist<object>结构化数据检索返回单行全量数据
original_questionstringfaq 数据检索召回答案对应的原始问题
chunk_typestring切片所属类型
chunk_attachmentlist<object>检索召回附件(原始图片等)的临时下载链接,chunk_type 为 image 且 get_attachment_link 为 True 时有效

table_chunk_fields 返回值

字段字段类型说明
field_namestring结构化数据的表字段名称

field_value

--

结构化数据的表字段取值
字段类型以创建知识库时表字段定义为准

chunk_attachment 返回值

字段字段类型说明
uuidstring附件的唯一标识
captionstring图片所属标题,若未识别到标题则值为"\n"
typestringimage 等
linkstringtype 为 image 时表示图片的临时下载链接,有效期 10 分钟
最近更新时间:2026.09.08 20:33:11
这个页面对您有帮助吗?
有用
有用
无用
无用