You need to enable JavaScript to run this app.
导航
search_collection
最近更新时间:2024.10.21 17:39:46首次发布时间:2024.05.31 15:30:04

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

说明

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

概述

search_collection 用于对知识库进行检索,支持文本检索。

说明

知识库文档导入/删除后,知识库更新时间最长滞后 5s,不能立即检索到,待知识库就绪后可正常检索。

请求参数

参数

子参数

类型

是否必选

默认值

参数说明

collection_name

--

string

--

知识库名称

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

project

--

string

default

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

resource_id

--

string

--

知识库唯一 id
可选择直接传 resource_id,或同时传 name 和 project 作为知识库的唯一标识

query

--

string

--

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

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

query_param

map

--

检索请求参数配置

doc_filter

map

--

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

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

limit

--

int

10

最终返回的文本片数量,取值范围 [1, 200]

dense_weight

--

float

0.5

混合检索中稠密向量的权重,1 表示纯稠密检索 ,0 表示纯字面检索。范围 [0.2, 1],否则抛出错误
只有在请求的知识库使用的是混合检索时有效,即索引算法为 hnsw_hybrid

rerank_switch

--

bool

False

自动对结果做 rerank
说明:打开后,会自动请求 rerank 模型排序

retrieve_count

--

int

None

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

endpoint_id

--

string

--

rerank 私有接入点
仅在 "rerank_switch" == True 且 "rerank_model" == "Doubao-pro-4k-rerank" 时生效
说明:仅支持传入模型 id 为 ”cm-20240510111734-jq2h7“ 的 rerank 模型构建的私有接入点,模型需联系【火山客服】开白使用,更多操作可参考【知识库】模型推理接入点保障重排 QPS

rerank_model

--

string

"Doubao-pro-4k-rerank"

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

  • "Doubao-pro-4k-rerank":字节自研豆包重排模型
  • "m3-v2-rerank":轻量小模型,具有强大的多语言能力,推理速度快

rerank_only_chunk

--

bool

False

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

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

示例

请求参数

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

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

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

points = viking_knowledgebase_service.search_collection(collection_name=collection_name, query=query, query_param=query_param, limit=limit, dense_weight=dense_weight, rerank_switch=rerank_switch)

返回值

Python 调用执行上面的任务,返回 List。Point 实例包含的属性如下表所示。

属性

类型

说明

collection_name

string

知识库名字

point_id

string

知识点 id

chunk_title

string

知识点所在章节标题

original_question

string

文档为 faq 类型的对应问题

process_time

string

知识点完成处理的时间

content

string

知识点内容

rerank_score

float

重排得分

score

float

检索得分

doc_info

Doc

知识点所在文档信息

chunk_id

string

知识点所在章节 id

table_chunk_fields

list

结构化行信息, 结构化类型生效