本节将说明如何基于一个已创建的知识库做在线检索。
说明
search_collection 用于对知识库进行检索,支持文本检索。
说明
知识库文档导入/删除后,知识库更新时间最长滞后 5s,不能立即检索到,待知识库就绪后可正常检索。
参数 | 子参数 | 类型 | 是否必选 | 默认值 | 参数说明 |
---|---|---|---|---|---|
collection_name | -- | string | 否 | -- | 知识库名称
|
project | -- | string | 否 | default | 知识库所属项目 |
resource_id | -- | string | 否 | -- | 知识库唯一 id |
query | -- | string | 是 | -- | 检索文本, 最大可输入长度为 8000:
|
query_param | map | 否 | -- | 检索请求参数配置 | |
doc_filter | map | 否 | -- | 检索过滤条件,支持对 doc 的 meta 信息过滤
| |
limit | -- | int | 否 | 10 | 最终返回的文本片数量,取值范围 [1, 200] |
dense_weight | -- | float | 否 | 0.5 | 混合检索中稠密向量的权重,1 表示纯稠密检索 ,0 表示纯字面检索。范围 [0.2, 1],否则抛出错误 |
rerank_switch | -- | bool | 否 | False | 自动对结果做 rerank |
retrieve_count | -- | int | 否 | None | 进入重排的切片数进入重排的切片数量,默认为 25 |
rerank_model | -- | string | 否 | "m3-v2-rerank" | rerank 模型选择
|
rerank_only_chunk | -- | bool | 否 | False | 是否仅根据 chunk 内容计算重排分数
|
请先完成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 | 结构化行信息, 结构化类型生效 |