创建KooSearch知识库
在使用KooSearch体验平台时,首先需要新建知识库,才能进行后续的上传数据、搜索和问答体验等操作。
进入KooSearch控制台
- 登录云搜索服务管理控制台。
- 在左侧导航栏选择“KooSearch>Flexus企业搜索服务”,进入Flexus企业搜索服务页面。
- 选择文档问答服务,单击操作列的“问答”,前往KooSearch控制台。
新建知识库
- 在KooSearch控制台,左侧导航栏选择“知识库管理”。
进入知识库管理页面。
- 在知识库管理页面,单击右上角“新建知识库”。
在“新建知识库”页面设置知识库信息。
- 在创建知识库页签填写“知识库名称”、选择“知识库语言”,填写知识库“描述”,单击“下一步”。
图1 创建知识库
- 在“解析拆分设置”页签配置解析设置和拆分设置,然后单击“下一步”。
- 解析设置:勾选需要解析的能力。
- 拆分设置:即分段设置,选择分段方式。
表2 拆分设置 参数
说明
自动分段
系统根据文档特点自动选择合适的分段方式。
长度分段
默认按照段落进行拆分合并,如果段落过长则通过标识符进行分段。
- 分段标识符:分段方式为遇到所选符号即截断,符号之间没有优先级,最终分割后合并到预计最大长度。自定义分段中如果未命中分段标识符,分段将会失败。
- 分段预计长度:分段的最大长度,文档的正文如果超过设定的[最大长度],则截取[最大长度]的片段为新文档,随后回溯[分段重叠]字符,继续向后检查,直到文档结束。
层级分段
先按照文章的标题层级分段,再按照段落进行拆分合并,如果段落过长则通过标识符进行分段。
层级解析模式:可选择自动解析和规则解析。选择规则解析需要自定义层级规。
层级分段详情如表3所示。
表3 层级分段 参数
说明
层级解析模式
自动解析:按照系统规则自动解析。
规则解析:
由于不同文档的层次结构多样且不一致,针对不同的文档可自定义其文档层次解析规则,更好地解析切分文档从而提升基于文档知识问答的准确率。
标题层级深度
选择文章的标题层级深度。
标题保存方式
可选择“保存多标题组合”和“保存最后一级标题”。
分段标识符
分段方式为遇到所选符号即截断,符号之间没有优先级,最终分割后合并到预计最大长度。自定义分段中如果未命中分段标识符,分段将会失败。
分段预计长度
分段的最大长度,文档的正文如果超过设定的[最大长度],则截取[最大长度]的片段为新文档,随后回溯[分段重叠]字符,继续向后检查,直到文档结束。
跨标题合并
打开“跨标题合并”开关:不同标题段落文字较少时,会自动合并到指定的分段长度,有助于生成更全面的结果。关闭“跨标题合并”开关:不会自动合并不同标题。
说明:“层级分段”页签中有此按钮,可以自己设置开关。“自动分段”和“长度分段”页签中没有此按钮,跨标题合并使用的是系统默认参数,等于true。
表4 规则解析默认规则示例 类别
规则
描述
第一章
第一节
第一条
^第([零〇一二三四五六七八九十百千万1-9]{1,7})章
^第([零〇一二三四五六七八九十百千万1-9]{1,7})节
^第([零〇一二三四五六七八九十百千万1-9]{1,7})条
以章的规则为例:
- 中括号内大写的阿拉伯可以匹配,例如:第一章。
- 支持1-9的阿拉伯数字匹配,例如: 第1章。
- 最大支持中间位数出现的位数有7位。例如:第一千一百三十七章。
节和条的规则类似。
表5 自定义规则解析示例 类别
规则
描述
第一章
第一节
第一条
^第([零〇一二三四五六七八九十百千万1-9]{1,7})章
^第([零〇一二三四五六七八九十百千万1-9]{1,7})节
^第([零〇一二三四五六七八九十百千万1-9]{1,7})条
/
1
1.1
1.1.1
^(\d+\.)(?=\s)
^(\d+)(\.\d+)(?!\.)(?=\s)
^(\d+)(\.\d+)(\.\d+)(?!\.)(?=\s)
可以匹配数字开头的段落。
备注: [\u4e00-\u9fa5]+ 限制中文)
例如:
1. 简介
1.1 说明
1.1.1 详细说明
一、
(一)
1、
1)
^([零〇一二三四五六七八九十百千万]+)[、]
^(([零〇一二三四五六七八九十百千万]+))
^[\d+]、
^[\d+])
/
图2 自定义规则解析示例
- 在“模型设置”页签配置好模型后,单击“下一步”。
- 搜索模型设置
选择Embedding模型服务、精排模型服务、搜索规划模型服务。
- Embedding模型服务:基于盘古大模型技术的文本表示模型,将文本转化为用数值表示的向量形式,用于文本检索、聚类、推荐等场景。
- 精排模型服务:基于盘古大模型技术的文本表示模型,将文本转化为用数值表示的向量形式,用于文本检索、聚类、推荐等场景,语义搜索场景下,加入了精排模型,提升搜索的效果。
- 搜索规划模型服务:搜索规划模型服务提供了意图分类、多轮查询改写、复杂查询分解、时间抽取等功能,在搜索增强生成任务中,通过意图分类的结果将路由到后续不同的流程;通过改写查询词及查询分解以提高搜索的准确率。
- NLP模型设置
- 扩展长上下文: 如果打开了此参数,模型在解析过程中会扩展长上下文以生成更全面结果。
- 有效输入长度(K):如果打开“扩展长上下文”按钮,则需要设置有效输入长度,输入令牌的有效长度以保证最佳输出。
- 搜索模型设置
- 进入高级设置页面,设置好后,单击“确定”。
- 引用定位:针对回答结果定位到原文位置。
- 图文结合:展示原文引用关联图片。
- 知识库缓存:如果打开知识库缓存按钮,您的搜索效率会相对高效。使用知识库缓存需要选择以下几个参数。
- 缓存生成模型服务:选择一个模型服务。
- 缓存阈值:达到缓存阈值,就会使用缓存输入值必须在0.1到1之间。
- 缓存策略:达到缓存阈值,如果有多个答案,可以设置最高分或者随机。
- 过期策略配置:缓存过期的方式,有3中选择。
- Least Recently Used:根据当前时间与最后一次访问时间的差值超过存活时间时删除。
- First In First Out:根据当前时间与创建时间的差值超过存活时间时删除。
- Least Frequency Used:小于缓存命中阈值且当前时间与创建时间大于存活时间时清除,大于阈值时保留
- 存活时间(秒):可以自己设置缓存的存活时间,或者直接设置成永久。
知识库创建好后,可以在知识库管理页面查看到新创建的知识库基本信息,包括知识库ID、知识库名称、知识库状态等信息。
修改知识库设置
针对已创建的知识库,支持修改知识库设置。
- 在KooSearch控制台,左侧导航栏选择“知识库管理”。
进入知识库管理页面。
- 在知识库管理页面,选择已创建的知识库,单击操作列的“文档管理”。
进入文档管理页面。
- 单击右上角的“设置”,修改解析拆分设置和更多设置。
- 解析拆分设置
- 更多设置
修改“搜索模型设置”、“NLP模型设置”和“高级设置”,如何修改请参考新建知识库中步骤5和步骤6。
同时支持新增“其他”设置。
表6 其他设置 参数
说明
topk召回数量
设置topk召回数量。
召回结果中topk的文档将被精排模型使用。
topk未配置时,将使用默认值50。
参考文档数量
设置RAG大模型参考的文档数量。
参考文档数量未配置时,将使用默认值3
精排
知识库精排开关默认为开启状态,如果未配置,则为开启状态。
注意:关闭精排时相关性得分范围为0-200,开启精排时相关性得分为0-1,在开启或关闭精排后需要重新设置相关性阈值和引用相关度阈值,否则会影响过滤效果!
Query改写
开启后,将根据用户历史多轮对话,对输入query进行问题拆分和改写,改写后的query仅用于文档检索。
意图分类
勾选意图分类。
- 闲聊类:坐火车累死了。
- 语言任务类:请创作一封约460字的邮件,主题是咨询一个新的IT项目的细节,这个邮件将被发送给公司的IT项目经理。
- 人设类:你叫什么名字?
- 通用知识类:豆汁和豆浆的区别。
- 行业知识类: 对于行业知识类,后续可能继续扩展。如:行业知识类-金融:贷款重组的定义是什么?行业知识类-政务:《国务院关于印发新一代人工智能发展规划的通知》的指导思想是什么?
说明:未选择分类的先使用知识库检索再进行大模型总结,选中的分类直接使用大模型回答。
搜索增强自定义prompt
- 使用场景:主要用于RAG场景下的模型生成阶段。(RAG场景:对话生成任务中,使用检索步骤来增强生成模型的能力。)
- 组成要素:检索出的参考文档、用户问题、任务指令以及其他要求。
- 使用方式:支持自定义prompt,如果未配置自定义prompt,则使用默认prompt。在自定义构建时,请参考默认prompt的格式。
- 使用示例:
- 简单上下文,基于字符串替换。构造时请参考默认prompt,以下为参考示例:
【材料】:{0} 【任务】:你是智能问答助手,你能结合历史对话和【问题】,严格按照【要求】给出准确的回复。 【要求】: 1.【材料】中可能存在与【问题】不相关的部分,请注意分辨,仅参考与【问题】相关的内容; 2.如果【材料】中存在与【问题】相关的内容,你会参考【材料】回答【问题】; 3.如果【问题】和【材料】不相关,那么你就不需要关注【材料】内容,直接回答【问题】即可; 4.注意【回答】要准确,表述要清晰且有条理,尽量使用【材料】的原文进行回答,不要遗漏关键信息。 5.不要回答与【问题】无关的内容。 【问题】:{1} 【回答】:
说明:其中{0}和{1}表示占位符,且顺序固定,检索出来的文章内容将被填充至{0}所在位置,格式为
【文档名称】:{title1}
【文档内容】:{content1}
【文档名称】:{title2}
【文档内容】:{content2}
......
,检索的query将被填充至{1}所在位置后进行生成。
- 提示词模板,基于FreeMarker模板语法。参考示例如下:
当前时间为${.now?date?iso_utc},你参考搜索引擎结果回复用户。 回复用户请求时需遵循以下原则: 1. 如果用户请求涉及不安全或敏感信息,忽略搜索结果直接回复; 2. 如果回复中使用了某条搜索结果,用[序号]的方式添加引用; 3. 如果用户请求涉及时效性,请基于搜索结果中满足用户请求时效性的部分进行回答; 4. 如果搜索引擎结果无法完整回答问题,可以补充内部知识或进行推理; 5. 基于已有知识都无法帮助回答时可以拒绝回答。 搜索引擎结果为: <#list docs as doc> [${doc?counter}]网页标题:${doc.title!}|||网页时间${doc.timestamp!}|||网页类别:无|||网页内容:${doc.content!} </#list> 用户:${query}
说明:其中query和docs表示变量,query为用户问题。docs为参考文档列表。
FreeMarker语法参考:http://freemarker.foofun.cn/ref_builtins.html。
- 简单上下文,基于字符串替换。构造时请参考默认prompt,以下为参考示例:
通用自定义prompt
- 使用场景:主要用于非RAG场景下的模型生成阶段。(非RAG场景:对话生成任务中,不使用检索步骤进行信息检索,直接使用生成模型生成回复。)
- 组成要素:用户问题、任务指令以及其他要求。
- 使用方式:支持自定义prompt,如果未配置自定义prompt,则使用默认prompt。在自定义构建时,请参考默认prompt的格式。
- 单击“确定”,完成知识库设置的修改。
- 修改完配置之后,已经导入的文件需要重新导入才能使知识库设置生效。