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

向量数据库VikingDB

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

本节将说明如何基于一个已创建的知识库做在线检索,并使用大模型进行整合生成回答。

  • 知识库创建完成、文档导入且处理完成后,即代表可以进行在线检索和模型生成了。
  • 使用 SDK 前请先完成“安装与初始化“页面的前置步骤。

概述

search_and_generate 用于对知识库进行检索,并将检索到的文本片和用户问题组装到 prompt 当中,调用大语言模型生成问题的回答。
知识库文档导入/删除后,知识库更新时间最长滞后 5s,不能立即检索到,待知识库就绪后可正常检索。

请求参数

参数子参数类型是否必选默认值备注

collection_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 模型输入最大长度 时,正常检索返回
query_parammap否--检索请求参数配置

doc_filter

map

否

--

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

  • 使用方式和支持字段见 filter表达式说明,可支持对 doc_id 做筛选
  • 此处用于过滤的字段,需要在 collection/create 时添加到 index_config 的fields 上
retrieve_parammap否--检索召回参数配置

rerank_switch

bool

否

False

自动对结果做 rerank

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

retrieve_count

int

否

None

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

rerank_model

string

否

"m3-v2-rerank"

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

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

rerank_only_chunk

bool

否

False

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

  • True: 只根据 chunk 内容计算分
  • False:根据 chunk title + 内容 一起计算排序分
limitint否10最终返回的文本片数量,取值范围 [1, 200]

dense_weight

float

否

0.5

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

chunk_diffusion_count

int

否

0

检索阶段返回命中文本片上下几片文本片

  • 默认为 0,表示不进行 chunk diffusion
  • 范围 [0, 5]
llm_parammap否--大语言模型参数配置

model

string

否

"Doubao-pro-32k"

生成使用的大语言模型
可选模型:

  • Doubao-pro-4k
  • Doubao-pro-32k
  • Doubao-pro-128k
  • Doubao-lite-4k
  • Doubao-lite-32k
  • Doubao-lite-128k
max_new_tokensint否2000最多生成多少个新 token
temperaturefloat否0.7生成温度
top_pfloat否0.9用于控制输出 tokens 的多样性,top_p 值越大输出的 tokens 类型越丰富,取值范围 [0, 1]
top_kint否0选择预测值最大的 k 个 token 进行采样,取值范围 [0, 1000],0 表示不生效

prompt

string

否

"使用以下的信息作为你学习到的知识,这些信息在XML tags 之内.
{{ .retrieved_chunks }}
回答用户的问题,用户的问题在 XML tags 之内
回答问题时,如果 context 不能回答用户提出的问题,请直接说明你不知道。此外,回答问题时应该精简干练但又完整地回答用户的问题,避免过冗余的回答。
{{ .user_query }}
"

{{ .retrieved_chunks }}和{{ .user_query }}是占位符,由后端传入检索到的文本片和用户的问题。
prompt 中必须有且只有上述两个占位符,否则会抛出错误。

示例

请求参数

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

collection_name = "example"
project = ""
query = "DLSP: A Document Level Structure Parser for Multi-Page Digital Documents 这篇论文是关于什么的"

doc_filter = {
    "op": "must",
    "field": "doc_id",
    "conds": ["tos_doc_id_123", "tos_doc_id_456"]
}
query_param = {
    "doc_filter": doc_filter
}

retrieve_param = { 
    "rerank_switch": True,
    "retrieve_count": 30,
    "dense_weight": 0.7,
    "limit": 15,
    "chunk_diffusion_count": 1
}

llm_prompt_extra_context = {
    "self_define_fields": ["自定义元数据1", "自定义元数据2"],
    "system_fields": ["doc_name", "title", "chunk_title", "content"]
}
llm_param = {
    "model": "Doubao-pro-32k",
    "max_new_tokens": 2500,
    "temperature": 0.8,
    "top_p": 0.95,
    "top_k": 10,
    "prompt": "使用以下的信息作为你学习到的知识,这些信息在 <context></context> XML tags 之内.\n\n<context>\n{{.retrieved_chunks}}\n</context>\n\n回答用户的问题,用户的问题在<query></query> XML tags 之内\n回答问题时,如果你不知道,请直接说明你不知道。\n\n<query>\n{{.user_query}}\n</query> "
}

refs = viking_knowledgebase_service.search_and_generate(collection_name=collection_name, query=query, query_param=query_param, retrieve_param=retrieve_param, llm_param=llm_param)
返回值

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

参数类型说明
collection_namestring知识库名称
countint检索返回的结果数量
generated_answerstring使用大模型生成的内容
promptstring组装系统 prompt 和检索到的文本片后最终调用 LLM 时的完整 prompt

usage

map

使用大模型的用量信息

  • “prompt_tokens”:传入大模型的 token 数量
  • “completion_tokens”:大模型生成的新 token 数量
  • “total_tokens”:大模型调用总数
refslist检索到的 points 列表

Point 实例包含的属性如下表所示。

属性类型说明
collection_namestringcollection 名字
point_idstring知识点 id
chunk_titlestring知识点所在章节标题
original_questionstring文档为 faq 类型的对应问题
process_timestring知识点完成处理的时间
contentstring知识点内容
rerank_scorefloat重排得分
scorefloat检索得分
doc_infoDoc知识点所在文档信息
chunk_idstring知识点所在章节 id
table_chunk_fieldslist结构化行信息, 结构化类型生效
最近更新时间:2026.09.08 20:33:10
这个页面对您有帮助吗?
有用
有用
无用
无用