以下是一些提高知识库检索效率的方法:
特别需要注意的是,不同工具和平台可能存在各自的特点和限制,需要根据实际情况进行选择和优化。
这里我使用一款名为外贸大师产品的帮助文档进行演示。其帮助文档的地址为:[外贸大师使用秘籍·Yuque](https://www.yuque.com/charlotteyang/lbvyfu)为了简单,我选择其中一个文档来创建知识库:[购买后新人常见问题汇总·语雀](https://www.yuque.com/charlotteyang/lbvyfu/gvzs7qt313zg0svr)1.点击创建知识库1.从知识库中添加知识单元为了更好的检索效果,这个例子里使用Local doucuments的方式,并且上传的Markdown格式文档首先看下文档数据的格式:每个问题都是使用###作为开头(这是Markdown的语法)准备开始上传文件至此,一个完整的知识库就构建完成啦!接下来我们就可以去创建我们的产品资料问答机器人特别需要注意的是:文档的分片策略会严重影响查询的结果,这是当前RAG自身的方案原理导致的。基于Coze的知识库问答是典型的RAG方案,其重要一环就是文档切片(Segment)。然而,不管是单分片是800 token还是2000 token,都显著暴露了RAG方案的缺点:跨分片总结和推理能力弱。这是基于RAG方案自身原理导致的。文档有序性被打破。这是基于RAG方案自身原理导致的。表格解析失败。最后一点很诧异。虽然在业内把PDF解析为结构化文本,本就是一个难题。但是Coze对PDF的解析结果甚至不如直接用pypdf这个开源Python组件解析的效果好。说明Coze这个产品对细节的打磨还不够好。在这里我们不讨论如何组织文档形式,从而可以更好的分片。后面我会专门研究这块,并产出教程。
接下来,我们可以尝试让大模型在面对客户问题时参考这份文档,以产出一个更准确的回答和建议。1.上传文件:在百炼控制台的[数据管理](https://bailian.console.aliyun.com/#/data-center)中的非结构化数据页签中点击导入数据,根据引导上传我们虚构的百炼系列手机产品介绍:2.根据您上传的文档大小,百炼需要一定时间解析,通常占用1~6分钟,请您耐心等待。3.1.2.建立索引:进入[知识索引](https://bailian.console.aliyun.com/#/knowledge-base),根据引导创建一个新的知识库,并选择刚才上传的文件,其他参数保持默认即可。知识库将为上一步骤中准备的文档建立索引,以便后续大模型回答时检索参考。3.选择向量存储类型时,如果您希望集中存储、灵活管理多个应用的向量数据,可选择ADB-PG。4.1.2.1.2.引用知识:完成知识库的创建后,可以返回[我的应用](https://bailian.console.aliyun.com/#/app-center)进入到刚才创建的应用设置界面,打开知识检索增强开关、选择目标知识库,测试验证符合预期后点击发布。Prompt中会被自动添加一段信息,以便大模型在后续回答时参考检索出来的信息。3.1.[heading3]4.2检验效果[content]有了参考知识,AI助手就能准确回答关于您公司的商品的问题了。
经过文本清洗之后,接下来我们就要进入到文档分块的环节。这个步骤看似简单,实际上却是RAG系统中至关重要的一环。首先你要记住一点:分块都是为了后面的检索考虑,是为了能够针对用户的问题,返回更精准的答案。[heading4]为什么要进行文档分块[content]1.提高检索效率想象一下,如果我们把整个使用手册作为一个整体来检索,那么即使找到了相关内容,也可能会返回大量无关的信息。通过将文档分成较小的块,我们可以更精确地定位到用户需要的信息。1.适应模型输入限制在RAG检索环节是需要将匹配用户问题的答案返回给大模型进行处理和总结的。将长文档分成小块可以确保我们能够将相关信息输入到模型中,而不会超出其处理能力。1.提升回答质量较小的文本块能够帮助大语言模型更集中地理解和回答特定问题,而不是在大量文本中迷失方向。1.优化向量表示在后续的向量化过程中,较小的文本块通常能够得到更精确的向量表示,这有助于提高检索的准确性。