跳转到内容

知识库

知识库 用于从指定知识库中检索与查询内容相关的文档片段,支持语义检索、策略选择等多种检索方式,并可配置召回数量等参数。它常用于智能问答、上下文增强与内容推荐,能有效补充模型知识、减少幻觉。

指令标识:KnowledgeBase
指令类型:基础节点
指令描述:从知识库中检索相关内容,支持多种检索策略和配置

工作流支持「可视化编排」和「代码编排」两种创建方式。知识库 在两种方式里都能用,核心业务参数一致,区别主要是你通过界面配置,还是通过 Python 脚本配置。

方式怎么用适合人群
可视化编排(推荐先学)拖入「知识库」节点,选择目标知识库并填写查询内容大多数用户,零代码,适合快速搭建和调试
代码编排(Python)在脚本中调用 bots.knowledgeBase(kbId=123456, queryStr="...", outKey="...")熟悉代码、需要复用脚本或批量生成流程的用户

第一次使用建议先用可视化编排跑通,再迁移到 Python 代码编排。下方「参数说明」同时给出界面字段和代码参数名,方便两种方式对应。

  • 需要根据用户问题从企业知识库中检索相关答案或参考资料。
  • 需要为大模型提供相关背景知识和上下文,提升回答质量和时效性。
  • 需要基于用户查询从知识库中推荐相关文档、资料或内容。
  • 已确定目标知识库(知识库 ID),且工作流与知识库在同一空间。
  • 目标知识库已发布(未发布的知识库无法被检索)。
  • 已准备好查询内容(queryStr 不能为空)。
  • 已规划好用于保存检索结果的输出变量。
知识库

下面用一个常见场景演示:根据用户问题从知识库检索答案。按 4 步即可跑起来:

  1. 在工作流画布中添加 知识库 指令。
  2. 在右侧配置面板选择 知识库 ID 并填写 查询内容
知识库 ID:123456
查询内容:如何办理退货手续
  1. 按需设置 召回策略 ID最大召回数量
  2. 将结果保存至 填写变量名(例如 kbResult),点击运行查看检索结果。
界面名称代码属性名类型必填默认值说明
知识库 IDkbIdLong-要查询的知识库唯一标识 ID,不能为空,例如 123456
召回策略 IDstrategyConfigIdLong-知识库召回时使用的策略配置 ID,用于指定召回策略和算法,例如 789
最大召回数量topKInteger-限制返回的知识条目最大数量,默认返回所有匹配结果,例如 10
输入参数queryStrString-查询知识库的提示词或问题内容,不能为空,例如 如何办理退货手续
出参outputListString(JSON)-输出参数定义,JSON 格式,定义要获取的变量名列表(包括 resultListoutput
是否发送消息sendMsgFlagBooleantrue是否在节点运行时发送消息
界面名称代码属性名类型必填说明
将结果保存至outKeyString存储知识库查询结果的输出变量名,包含结果列表和首条结果文本,例如 kbResult

通过 outputList 定义的变量名(默认包含 resultListoutput)可在后续流程中引用:

变量名类型说明
resultListArray<Object>检索结果列表,包含匹配的文档片段及相关信息
outputString检索结果的文本拼接,将所有片段内容合并为一个字符串

resultList 数组元素字段说明:

字段名类型说明
reRankScoreFloat重排后的相关度分数,如 0.684931
scoreFloat原始检索的相关度分数,如 0.654572
docIdString文档片段的唯一标识 ID
rankInteger检索结果的排名位置,从 1 开始
textString检索到的文档片段内容文本
retrievalModelInteger检索模型标识,如 1 表示语义检索
sourceObject文档来源信息,包含数据集、文件等元数据
nodeIdString节点 ID
  • 运行日志中没有空间、发布或参数相关错误。
  • 输出变量中 resultList 包含匹配的文档片段。
  • output 变量中包含拼接后的检索文本。
现象 / 报错原文可能原因处理建议
找不到可选的知识库工作流与知识库不在同一空间,或未发布确认两者在同一空间,且知识库已发布
检索结果为空召回数量过少、检索模式不匹配,或库内无相关信息调整召回数量与策略,或补充知识库内容
召回不准确文本分段粒度不当或相关度系数设置不合理优化文本分段,调整召回策略与相关度系数
返回内容过多影响性能召回数量设置过大合理设置 topK,必要时采用分页加载

代码编排以 Python 为主。运行上下文由代码编排模板创建,示例里只需要关注业务指令本身。

# 从知识库检索相关内容,结果保存到 kbResult
bots.knowledgeBase(
kbId=123456,
queryStr="如何办理退货手续",
outKey="kbResult",
)

如需指定召回策略和召回数量:

bots.knowledgeBase(
kbId=123456,
strategyConfigId=789,
topK=10,
queryStr="如何办理退货手续",
sendMsgFlag=False,
outKey="kbResult",
)

可视化表单里的「知识库 ID」「召回策略 ID」「最大召回数量」「输入参数」「将结果保存至」分别对应代码里的 kbIdstrategyConfigIdtopKqueryStroutKey

如果你想在工作流中通过节点动态编排指令,可使用 执行指令(XML)节点。

Q1:知识库召回效果不准确怎么办?

Section titled “Q1:知识库召回效果不准确怎么办?”

A: 可从以下方面调整:

优化策略优化说明
文本分段分段粒度过大或过小都会影响召回,过大引入无关内容,过小导致召回不全面
召回策略调整尝试不同的召回策略,根据场景选择合适的检索方式和算法
调整相关度系数过严格可能召回过少,过宽松可能引入噪声

Q2:无法在节点中找到要用的知识库?

Section titled “Q2:无法在节点中找到要用的知识库?”

A: 检查工作流和知识库是否在同一空间(只能配置自己空间内的知识库),并确认知识库已发布。

Q3:检索结果如何在流程中使用?

Section titled “Q3:检索结果如何在流程中使用?”

A: 通过 resultList 获取结构化片段,通过 output 获取拼接文本,便于后续判断、展示或自动化处理。