在AI原生应用引擎中创建知识库
知识库是组织、存储及管理知识的系统,涵盖文档、图片、视频等信息的分类整理,可以帮助用户高效管理大量的信息。在Agent中添加知识库,使其与用户提供的专业知识库进行交互,可以显著提升Agent的准确度和专业度。
知识库的数据来源分为直接接入源数据和选择知识数据集两种,本文围绕这两种方式介绍如何创建知识库。
前提条件
- 需具备充足的知识库容量包资源(包含OBS存储配额和向量库存储配额,两者比例为5:1),每个租户默认1G的向量库存储配额,默认配额用完后,请参考购买AppStage购买知识库容量包。
- 需要具备AI原生应用引擎管理员或开发者权限,权限申请操作请参考AppStage组织成员申请权限。
- 通过OBS接入数据时,操作账号需获得OBS(对象存储服务)只读权限,具体操作请参见对其他账号授予桶的读写权限。
创建知识库(选择知识数据集)
- 进入AI原生应用引擎。
- 在AI原生应用引擎的左侧导航栏选择“知识中心 > 知识库”,单击“创建知识库”。
- 配置知识库基础信息,参数说明如表1所示。
表1 知识库基础配置参数说明 参数名称
参数说明
知识库名称
自定义知识库的名称,支持中英文、数字、下划线(_),长度2-50个字符,以中英文、数字开头。
知识库描述(可选)
知识库的相关信息描述。由0~255个字符组成,包含英文、中文、数字、下划线、中划线、空格及,.?:;"':;“”’‘,。?、()()/。
RAG类型
RAG全称Retriever-Augmented Generation,知识库依赖RAG创建。
GraphRAG类型仅支持用于“文档”类型的数据。
- VectorRAG:向量RAG,是一种结合了向量化和大语言模型的RAG技术。VectorRAG将非结构化的数据转化为结构化的向量空间,利用向量库实现高效的信息检索。
- GraphRAG:知识图谱RAG,是一种结合了知识图谱和大语言模型的RAG技术。GraphRAG能够处理各种类型的文档,从中提取实体(文档中具体的对象或概念)、关系以及文本内容构建知识图谱(一种结构化的知识表示方式),从而增强大语言模型对复杂信息的理解和推理能力。
数据来源
知识库的数据来源。选择“选择知识数据集”。
作用范围
指定知识库的作用范围,在创建Agent时,仅允许添加具备访问权限的知识库。
- 自己可见:仅当前用户所在的部门可见。
- 社区可见:指定当前租户下的其他部门(不含子部门)可见。例如,指定部门A可见,其子部门不可见。
- 在“数据集选择”区域,单击“选择知识数据集”。
- 在“选择知识数据集”面板,勾选目标数据集,并选择数据集版本及索引配置。如果当前数据集未创建索引配置,可以单击索引配置下拉框中的“创建索引配置”,参考创建索引配置进行创建。
您也可以单击“创建知识数据集”,参考在AI原生应用引擎中创建知识数据集创建新的数据集。
- 每个VectorRAG知识库最多只能添加5个数据集,且添加的数据集必须为同一类型。
- 每个GraphRAG知识库只能添加1个数据集。
- 当知识库RAG类型为“VectorRAG”时,按照表2进行检索配置。
- 单击“保存”,保存知识库的参数配置。
单击“保存并启用”,创建知识库完成并启用该知识库。
创建知识库(接入源数据)
- 进入AI原生应用引擎。
- 在AI原生应用引擎的左侧导航栏选择“知识中心 > 知识库”,单击“创建知识库”。
- 配置知识库基础信息,参数说明如表3所示。
表3 知识库基础配置参数说明 参数名称
参数说明
知识库名称
自定义知识库的名称,支持中英文、数字、下划线(_),长度2-50个字符,以中英文、数字开头。
知识库描述
知识库的相关信息描述。只能包含英文、中文、数字、下划线、中划线、空格及,.?:;"':;“”’‘,。?、()()/。
RAG类型
RAG全称Retriever-Augmented Generation,知识库依赖RAG创建。
GraphRAG类型仅支持用于“文档”类型的数据。
- VectorRAG:向量RAG,是一种结合了向量化和大语言模型的RAG技术。VectorRAG将非结构化的数据转化为结构化的向量空间,利用向量库实现高效的信息检索。
- GraphRAG:知识图谱RAG,是一种结合了知识图谱和大语言模型的RAG技术。GraphRAG能够处理各种类型的文档,从中提取实体(文档中具体的对象或概念)、关系以及文本内容构建知识图谱(一种结构化的知识表示方式),从而增强大语言模型对复杂信息的理解和推理能力。
数据来源
知识库的数据来源。选择“接入源数据”。
数据类型
支持接入的源数据类型:
- 文档:支持pdf、txt(只支持UTF-8)、csv(只支持UTF-8)、xlsx、docx、pptx、html、json、xml、md格式,单个文件最大为10MB,总上传大小最大为500MB。
- 图片:支持png、jpg、jpeg、gif、webp、bmp格式,单张图片最大为10MB,总上传大小最大为200MB。
- 图片-摘要:支持本地文件上传png、jpg、jpeg、gif、webp、bmp格式,需对图片填写摘要信息,单张图片最大为10MB,总上传大小最大为300MB。
- 视频-摘要:支持本地文件上传mp4、webm、wmv、mov、avi格式,需对视频填写摘要信息,单个视频最大为100MB,总上传大小最大为300MB。
- 在“数据接入”区域,配置数据接入方式及相关参数,参数说明如表2所示。
表4 数据接入配置参数说明 参数
说明
接入方式
选择数据集的接入方式。支持以下两种方式:
- 本地上传:数据文件在本地,从本地选择文件进行上传。
- OBS接入:数据文件存放在华为云OBS桶,从OBS桶接入数据。
仅支持使用区域位置为北京四的OBS桶接入数据。
数据文件
当接入方式选择“本地上传”时,需配置此参数。
单击“文件上传”选择本地文件进行上传,仅支持pdf、txt(只支持UTF-8)、csv(只支持UTF-8)、xlsx、docx、pptx、html、json、xml、md格式,单个文件最大为10MB,总上传大小最大为500MB。
文件类型
- 当接入方式选择“本地上传”时,无需配置,根据上传的文件自动识别文件类型。
- 当接入方式选择“OBS接入”时,选择接入的文档、图片的格式。
OBS桶名
当接入方式选择“OBS接入”时,需配置此参数。
在下拉列表中选择数据所在的OBS桶名。
OBS路径
当接入方式选择“OBS接入”时,需配置此参数。
在下拉列表中选择数据所在的具体OBS路径。
调度类型
当接入方式选择“OBS接入”时,需配置此参数。
可选如下两种类型:
- 一次性调度:手动执行时运行一次。
- 定时调度:按照设定的执行周期运行。
版本更新模式
当“调度类型”选择“定时调度”时,需配置此参数。
- 覆盖模式:每次调度成功,会覆盖唯一的版本。
- 多版本模式:当OBS桶内内容发生变化时,调度成功后会生成一个新版本。
执行周期
当“调度类型”选择“定时调度”时,需配置此参数。
设置执行周期,支持选择为天、周。
执行时间
当“调度类型”选择“定时调度”时,需配置此参数。
- 当执行周期为“天”时,设置每日开始执行的时间。
- 当执行周期为“周”时,指定每周周几,并设置当日开始执行的时间。
立即执行
当“调度类型”选择“定时调度”时,需配置此参数。
选择是否立即执行。
- 在“数据加工”区域,配置数据清洗、数据预处理以及数据切分策略,参数说明如表3所示。
表5 数据加工配置参数说明 参数
说明
数据清洗(可选)
数据清洗是指剔除重复内容、无效信息(如乱码、空格)等。
数据类型选择为“文档”、“图片-摘要”、“视频-摘要”时,显示此参数。
在下拉列表选择(支持多选):
- 清除URL和邮件地址
- 清除连续的空格,换行符和制表符
- 清除不可见字符
- 规范化空格
- 清除乱码
- 清除网页标识符
- 清除表情
PDF预处理
当接入的文档类型为.pdf时,显示此参数。
- 提取PDF富媒体:提取PDF文件中的富媒体(图片、表格等)。
- 无处理
智能匹配图表
当“PDF预处理”选择为“提取PDF富媒体”时,显示此参数。
- 智能匹配图表:数据切分时,大模型会将图片、表格信息与相关文本进行智能匹配整合。此处默认使用chatglm3-6b作为智能匹配大模型。
- 无处理
数据切分
数据类型选择为“文档”时,显示此参数。
数据切分是将文件拆分为若干切片,以便对每个切片进行关键字段提取。下拉列表中可选的模式包括:
- 自动切分:按照系统默认预设的规则和分隔符切分。
- 标题切分:按标题级别分块,分块后的内容按照自定义规则切分(标题切分仅支持docx格式,非docx格式的文件会按照自动切分处理)。
- 自定义切分:自定义分段规则,分隔符,以及分段长度等参数。
标题层级深度
数据切分模式为“标题切分”时,需配置此参数。
标题层级深度是指设置的切分标题级别,例如,文本包含最多5级标题,选择的标题层级深度为3,则会分别将所有3级标题下的内容合并成文本块,文本块作为一个整体执行后续切分操作。
标题保存方式
数据切分模式为“标题切分”时,需配置此参数。
标题保存方式指标题信息在切片中的保存形式,影响检索结果的展示逻辑和索引构建方式。
- 多标题组合:多级标题用特定符号组合。例如,1级标题-2级标题-3级标题-…-文本
- 最后一级标题:仅组合最后一级标题。例如,最后一级标题-文本
文本切分策略
数据切分模式为“自定义切分”或“标题切分”时,需配置此参数。在下拉列表可选以下策略:
- 递归切分:所选分隔符先后作为优先级顺序,优先高的先切分,切分后大于最大长度的分段再用优先级低的分隔符切分,如此往复。
- 等价切分:分隔符无优先级,使用所选的所有分隔符切割,合并至分段最大长度。
分段分隔符
数据切分模式为“自定义切分”或“标题切分”时,需配置此参数。
设置用于文本分段的分隔符号。输入的分隔符不允许包含以下特殊字符*./$^?+以及带有\的分隔符,仅支持输入\n,用于表示按行分隔,其它诸如\\n,\n\n等均不支持。
包含分隔符
切分后的分段内容中是否包含分隔符,选择“包含”或“不包含”。
分段最小长度
数据切分模式为“自定义切分”或“标题切分”时,需配置此参数。
用于设置文本分段后每段的长度。如果当前分片长度小于该值,则会和其他分片进行合并直到接近该值,所以如果不想合并,请将分段长度设置为1。
分段重叠长度
数据切分模式为“自定义切分”或“标题切分”时,需配置此参数。
用于设置当前分段开头与上一个分段结尾重叠部分的长度。
- 在“索引配置”区域,选择向量化模型和长文本策略,参数说明如表3所示。
参数
说明
向量化模型
选择向量化模型,向量化模型可以将文本数据转换为数值向量,常用于将文本转换为机器可以处理的形式,以便进行各种任务,如文本分类、情感分析、机器翻译等。
当前模型仅支持向量化512 token的内容,对应的中文约为512个字,英文与符号约900个字符,请注意分片长度。
长文本策略
选择长文本策略。
- 默认模式:如果待向量化分片字段token长度超过了向量化模型限制的token总数,则创建知识库失败。
- 截断模式:如果待向量化分片字段token长度超过向量化模型限制的token总数,则进行截断,取前top k个token。
- 智能模式:如果待向量化分片字段token超过向量化模型限制的token总数,首先利用chatglm3-6b对话大模型对超长分片进行重写,如果仍然超长则进入截断模式。
- 当知识库RAG类型为“VectorRAG”时,按照表6进行检索配置。
- 当知识库RAG类型为“GraphRAG”时,按照表7进行知识图谱配置。
- 开启“高级配置”开关,参照表8配置切片提取和索引字段。
- 切片提取配置是指从已切分好的分片中提取特定片段,这些提取出的片段将作为索引字段使用。
- 索引字段配置是指基于已提取的切片片段,进一步指定哪些字段作为检索字段、文本过滤字段或向量化字段。
表8 创建知识数据集配置参数说明 参数
说明
切片提取模式
数据类型选择为“文档”时,显示此参数。
切片提取模式是从文件切片中获取关键信息的方式,包含以下两种:
- 智能提取:通过大语言模型chatglm3-6b提取分片内的问题与回答,效果由大模型决定。目前仅支持提取问题和答案,且耗时较长。
- 规则提取:按照用户配置的提取规则对切片内容进行提取。
切片内容示例(可选)
数据类型选择为“文档”时,显示此参数。
输入切片内容作为切片提取的示例,便于查看提取效果。
示例:
小儿肥胖超重该怎样医治?答:孩子一旦患上肥胖症家长要先通过运动和饮食来改变孩子的情况,要让孩子做一些他这个年龄段能做的运动,如游泳,慢跑等,要给孩子多吃一些像苹果,猕猴桃,胡萝卜等食物,禁止孩子吃高热量,高脂肪的食物,像蛋糕,干果,曲奇饼干等,严格地控制孩子的饮食,不要让他暴饮暴食,多运动对改变孩子肥胖都是有好处的,在治疗小儿肥胖期间如果情况严重,建议家长先带孩子去医院检查一下孩子肥胖症的原因再针对性的治疗。
切片提取配置
切片提取模式为“规则提取”时,配置此参数。
单击“添加提取字段”,配置如下参数:
- 切片片段名称:自定义切片片段名称,例如,question、answer。
添加的提取字段数量不超过10个,切片片段名称长度最多为20个字符,不允许重复,不允许为以下名称(大小写不敏感):file_name、file_id、path、order、document、base64、chunk,不能以ki_、ko_开头,仅可包含字母、数字、下划线,并且以字母开头。
- 提取规则:分隔符提取、按规则提取。
- 分隔符提取:通过特定字符作为标记来拆分内容,提取目标信息。
- 按规则提取:系统按预设规则匹配并提取信息。
- 提取设置
- 当提取规则为“分隔符提取”时,例如,以分隔符?对切片进行分段,选择第1个分段,片段中不包含分隔符。
输入的分隔符不允许包含以下特殊字符*./$^?+以及带有\的分隔符,仅支持输入\n,用于表示按行分隔,其它诸如\\n,\n\n等均不支持。
在填写“选择第{{片段序号}}个片段”时,如果此处的片段序号超出片段数量,则提取内容为空。
- 当提取规则为“按规则提取”时,例如,从切片提取以答:开头和以。结尾的片段,选择第1个片段,片段中不包含开头,不包含结尾。
- 当提取规则为“分隔符提取”时,例如,以分隔符?对切片进行分段,选择第1个分段,片段中不包含分隔符。
切片提取效果
数据类型选择为“文档”时,显示此参数。
展示对切片内容提取后的效果。以上述配置为例,切片提取效果如下:
第一个片段名称为question,提取内容为:小儿肥胖超重该怎样医治
第二个片段名称为answer,提取内容为:孩子一旦患上肥胖症家长要先通过运动和饮食来改变孩子的情况,要让孩子做一些他这个年龄段能做的运动,如游泳,慢跑等,要给孩子多吃一些像苹果,猕猴桃,胡萝卜等食物,禁止孩子吃高热量,高脂肪的食物,像蛋糕,干果,曲奇饼干等,严格地控制孩子的饮食,不要让他暴饮暴食,多运动对改变孩子肥胖都是有好处的,在治疗小儿肥胖期间如果情况严重,建议家长先带孩子去医院检查一下孩子肥胖症的原因再针对性的治疗
索引字段配置
- 当RAG类型为“VectorRAG”时 ,配置如下参数:
- 检索字段:选择对哪个字段进行检索,并作为检索命中内容返回。
- 文本过滤字段:在检索时同步对该字段进行文本过滤,并返回该字段的内容。在工作流中调用知识库时,对文本过滤字段配置过滤条件,可以对知识库检索结果进行过滤和排序,以确保检索结果的精准度和相关性。具体请参见查询知识库配置说明。
- 附加返回字段:在检索时附加返回该字段的内容。
- 当RAG类型为“GraphRAG”时 ,配置如下参数:
- 实体抽取字段:选择对哪个字段进行实体抽取。选择从chunk抽取实体时,chunk是一个完整切片,是指从这个切片的内容里面去抽取实体。
- 附加返回字段:选择哪些字段在检索时附加返回。
- 单击“保存”,保存知识库的参数配置。
单击“保存并启用”,完成创建并启用该知识库,知识库列表中“检索接口”列状态为“已启用”。已启用的知识库才可在Agent、工作流中调用或通过API检索数据。
命中测试
命中测试即测试检索的命中率。
- 在知识库列表中,单击操作列的“命中测试”。
- 在命中测试页面,配置测试输入参数,参数说明如表9所示,配置完单击“测试”。
- 在“测试结果”区域查看测试效果,测试结果根据相似度从大到小进行排序。
- 在“测试历史”区域查看该知识库的测试历史记录,每个知识库测试记录最多保留50条。
更多操作
创建知识库完成后,可执行如下表10所示的管理知识库相关操作。
操作 |
说明 |
---|---|
查看知识库详情 |
在知识库列表中单击知识库名称,进入知识库详情页,可查看该知识库数据基础信息、调度历史,并支持进行知识库溯源。 |
修改知识库 |
不支持修改已启用的知识库,如需删除,请先停用。
|
删除知识库 |
不支持删除已启用的知识库,如需删除,请先停用。
|
启用知识库 |
在知识库列表中,单击操作列的“启用”启用知识库,已启用的知识库才可在Agent、工作流中调用或通过API检索数据。 |
停用知识库 |
在知识库列表中,单击操作列的“停用”停用知识库。 |
执行知识库调度 |
当自动调度失败或知识库配置更改时,可以手动执行调度,更新知识库。当数据集更新时,系统会自动执行知识库调度,无需手动执行调度。 在知识库列表中,选择“操作”列的 ,手动执行知识库调度。 |
相关文档
- 如果创建数据集时提示“向量数据库存储使用量超过上限”,请根据文档排查解决,请参见向量数据库存储使用量超过上限。
- 知识库启用后,可在Agent、工作流中调用,也可通过调用API检索数据,请参考在AI原生应用引擎中创建单Agent(自主规划模式)、创建工作流以及检索知识库数据。
- 知识库相关的OpenAPI请参见知识中心。
- 知识库实践案例请参考构建儿科知识库。