搭建企业知识库是商业化落地过程中的常见需求之一。一般来说,可以结合企业私有数据与 RAG 模型的私有化部署,也可以对模型进行 Fine-tuning 以优化性能。在这个过程中,Know-How 非常重要。
以 Coze 为例,其知识库的理论基础是 RAG。在实际操作中,可以按照以下流程进行搭建:
在创建知识库时,需要注意文档的分片策略,这会严重影响查询的结果。此外,还需要注意跨分片总结和推理能力弱、文档有序性被打破、表格解析失败等问题。
总的来说,搭建企业知识库需要结合具体的需求和场景,选择合适的方案和工具,并进行相应的调整和优化。
第四个部分我想分享一些有关商业化落地的经验。在商业化过程中,构建企业知识库是最常见的需求之一。一种普遍的解决方案是结合企业私有数据与RAG模型的私有化部署。如有特殊需求,我们还可以进行模型的Fine-tuning(微调),以优化性能。基础模型主要负责提供推理提示,而RAG则用于整合新知识,实现快速迭代和定制化信息检索。通过Fine-tuning,我们可以增强基础模型的知识库,调整输出,并教授更复杂的指令,从而提高模型的整体性能和效率。这样的联合应用通常能带来最佳性能,适用于多数企业的需求。而在这个过程中,Know-How很重要!
这里我使用一款名为外贸大师产品的帮助文档进行演示。其帮助文档的地址为:[外贸大师使用秘籍· Yuque](https://www.yuque.com/charlotteyang/lbvyfu)为了简单,我选择其中一个文档来创建知识库:[购买后新人常见问题汇总·语雀](https://www.yuque.com/charlotteyang/lbvyfu/gvzs7qt313zg0svr)1.点击创建知识库1.从知识库中添加知识单元为了更好的检索效果,这个例子里使用Local doucuments的方式,并且上传的Markdown格式文档首先看下文档数据的格式:每个问题都是使用###作为开头(这是Markdown的语法)准备开始上传文件至此,一个完整的知识库就构建完成啦!接下来我们就可以去创建我们的产品资料问答机器人特别需要注意的是:文档的分片策略会严重影响查询的结果,这是当前RAG自身的方案原理导致的。
在利用Coze搭建知识库时,需要如下几个流程:收集知识创建知识库创建数据库用以存储每次的问答创建工作流编写Bot的提示词预览调试与发布编写Bot的提示词
我们都知道大模型的训练数据是有截止日期的,那当我们需要依靠不包含在大模型训练集中的数据时,我们该怎么做呢?实现这一点的主要方法就是通过检索增强生成RAG(Retrieval Augmented Generation)。在这个过程中,首先检索外部数据,然后在生成步骤中将这些数据传递给LLM。我们可以将一个RAG的应用抽象为下图的5个过程:文档加载(Document Loading):从多种不同来源加载文档。LangChain提供了100多种不同的文档加载器,包括PDF在内的非结构化的数据、SQL在内的结构化的数据,以及Python、Java之类的代码等文本分割(Splitting):文本分割器把Documents切分为指定大小的块,我把它们称为“文档块”或者“文档片”存储(Storage):存储涉及到两个环节,分别是:将切分好的文档块进行嵌入(Embedding)转换成向量的形式将Embedding后的向量数据存储到向量数据库检索(Retrieval):一旦数据进入向量数据库,我们仍然需要将数据检索出来,我们会通过某种检索算法找到与输入问题相似的嵌入片
大模型并不是100%准确的,它会产生幻觉,主要是因为以下两点训练大模型的数据是有日期限制的,如果你询问大模型超出日期限制的问题,则大模型无法准确回答大模型的数据来源于互联网,如果是公司内部的私有数据,则大模型无法感知因此知识库的出现就是为了解决大模型的数据准确性的问题。大模型可以额外学习外接知识库中的知识,从而来精准回复用户。知识库中最典型的一个应用就是客服系统:公司可以将用户所有问题以及答案记录在文档中,然后以知识库的形式投喂给大模型。这样当用户通过自然语言询问问题时,大模型就可以根据知识库中的内容给出更加准确的回答。
创建好变量之后,该如何使用呢?你可以在提示词中为Bot声明某个变量的具体使用场景。首先,可以在给大模型的提示词中做如下声明:与您的用户进行互动,并根据user_language变量,用他们偏好的语言在线搜索。除非另有设置,用户查询的语言应指导您的回答和搜索这段提示词相当于告诉了LLM,user_language这个变量该如何赋值以及使用。下面我们演示下变量的使用方式以及效果1.首先将变量的值重置为空1.然后跟大模型进行对话
知识库节点知识库节点的输入和输出输入:Query,也就是用户的查询输出:一个数组,承载着从知识库中查询出来的匹配片段在Start节点后面接入了一个知识库节点,这个节点的目的是将用户的问题跟知识库进行匹配知识库中需要注意的几个概念Search strategy(查询策略)Hybrid search:混合查询,语义查询和全文索引的混合使用Semantic search:语义查询,理解知识库内容的语义,从而创造答案Full Text search:全文索引,不会去理解知识库的语义,而是直接使用字面意思进行匹配
基于Coze的知识库问答是典型的RAG方案,其重要一环就是文档切片(Segment)。然而,不管是单分片是800 token还是2000 token,都显著暴露了RAG方案的缺点:跨分片总结和推理能力弱。这是基于RAG方案自身原理导致的。文档有序性被打破。这是基于RAG方案自身原理导致的。表格解析失败。最后一点很诧异。虽然在业内把PDF解析为结构化文本,本就是一个难题。但是Coze对PDF的解析结果甚至不如直接用pypdf这个开源Python组件解析的效果好。说明Coze这个产品对细节的打磨还不够好。在这里我们不讨论如何组织文档形式,从而可以更好的分片。后面我会专门研究这块,并产出教程。