本节将说明如何基于一个已创建的知识库做在线检索。
说明
search_knowledge 用于对知识库进行检索和前后处理,当前会默认对原始文本加工后的知识内容进行检索。
说明
知识库文档导入/删除后,知识库更新时间最长滞后 5s,不能立即检索到,待知识库就绪后可正常检索。
参数 | 子参数 | 类型 | 是否必选 | 默认值 | 参数说明 |
---|---|---|---|---|---|
name | -- | string | 否 | 知识库名称
| |
project | -- | string | 否 | default | 知识库所属项目 |
resource_id | -- | string | 否 | -- | 知识库唯一 id |
query | -- | string | 是 | 检索文本,最大可输入长度为 8000:
| |
limit | -- | int | 否 | 10 | 检索结果数量
|
query_param | json | 否 | 检索的过滤和返回设置 | ||
doc_filter | map | 否 | 检索过滤条件,支持对 doc 的 meta 信息过滤
| ||
dense_weight | -- | float | 否 | 0.5 | 混合检索中稠密向量的权重 |
pre_processing | json | 检索预处理 | |||
need_instruction | bool | 否 | False | 是否拼接 instruction 进行检索 | |
rewrite | bool | 否 | False | 是否对query进行改写 | |
return_token_usage | bool | 否 | False | 是否返回search流程中各阶段的token使用量 | |
messages | json | 是 | 多轮对话信息
| ||
post_processing | json | 检索后处理 | |||
rerank_switch | bool | 否 | False | 自动对结果做 rerank | |
retrieve_count | int | 否 | 25 | 进入重排的切片数量,默认为 25 | |
endpoint_id | string | 否 | -- | rerank 私有接入点 | |
chunk_diffusion_count | int | 否 | 0 | 检索阶段返回命中文本片上下几片文本片。 | |
chunk_group | bool | 否 | False | 文本聚合 | |
rerank_model | string | 否 | rerank 模型选择
| ||
rerank_only_chunk | bool | 否 | False | 是否仅根据 chunk 内容计算重排分数
| |
get_attachment_link | bool | 否 | False | 是否获取切片中图片的临时下载链接 |
请先完成SDK初始化,再运行代码,详见初始化SDK
collection_name = "gaodeng" query ="测试" pre_processing = { "need_instruction": True, "rewrite": True, "messages": [ { "role": "system", "content": "" }, { "role": "user", "content": "" # messages 最后一个元素的content和query保持一致 } ], "return_token_usage": True } post_processing = { "rerank_switch": True, "rerank_model": "Doubao-pro-4k-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_query | string | -- | 改写的 query,若未开启query改写,则此字段值为None | |
result_list | list | 返回切片信息 | ||
id | string | 索引的主键 | ||
content | string | 切片内容 | ||
score | float | 检索得分 | ||
point_id | string | 切片id | ||
chunk_title | string | 切片的标题 | ||
chunk_id | int | chunk的id | ||
process_time | int | 检索耗时 | ||
rerank_score | float | 重排得分 | ||
doc_info | json | 文档信息
| ||
recall_position | int | 检索召回位次 | ||
rerank_position | int | 重排位次 | ||
table_chunk_fields |
| 结构化数据检索返回单行全量数据 | ||
original_question | string | faq 数据检索召回答案对应的原始问题 | ||
chunk_type | string | 切片所属类型 | ||
chunk_attachment |
| 检索召回附件(原始图片等)的临时下载链接,chunk_type 为 image 时有效 |
table_chunk_fields 返回值
字段 | 字段类型 | 说明 |
---|---|---|
field_name | string | 结构化数据的表字段名称 |
field_value | -- | 结构化数据的表字段取值 |
chunk_attachment 返回值
字段 | 字段类型 | 说明 |
---|---|---|
uuid | string | 附件的唯一标识 |
caption | string | 图片所属标题,若未识别到标题则值为"\n" |
type | string | image 等 |
link | string | type 为 image 时表示图片的临时下载链接,有效期 10 分钟 |