搭建知识库自动检索功能主要包括以下步骤:
在知识库检索阶段:
此外,因为利用大模型的能力搭建知识库本身就是一个 RAG 技术的应用。在进行本地知识库的搭建实操之前,需要先对 RAG 有大概的了解。RAG 应用可抽象为 5 个过程:文档加载(从多种不同来源加载文档)、文本分割(把 Documents 切分为指定大小的块)、存储(将切分好的文档块进行嵌入转换成向量的形式,并将 Embedding 后的向量数据存储到向量数据库)、检索(通过某种检索算法找到与输入问题相似的嵌入片)、Output(把问题以及检索出来的嵌入片一起提交给 LLM,LLM 会通过问题和检索出来的提示一起来生成更加合理的答案)。文本加载器则是将用户提供的文本加载到内存中,便于进行后续的处理。
1.文本预处理:2.这包括去除无关字符、标准化文本(例如将所有字符转换为小写)、分词等,以清洁和准备文本数据。3.嵌入表示:4.将预处理后的文本(词或短语)转换为向量。这通常通过使用预训练的嵌入模型来完成,如Word2Vec、GloVe、BERT等。这些模型将每个词或短语映射到一个高维空间中的一个点(即向量)。5.特征提取:6.对于整个问题句子,可能会应用进一步的特征提取技术,比如句子级别的嵌入,或使用深度学习模型(如BERT)直接提取整个句子的表示。这个表示能够捕捉句子的上下文信息,不仅仅是单个词。7.向量优化:8.在某些情况下,问题的向量表示可能会根据具体任务进行优化,例如通过调整模型参数来更好地与检索系统的其他部分协同工作。②、知识库检索阶段:此阶段,首先需要有一个知识库,那么知识库是如何完成制作,并被检索的呢?我们需要先了解一个概念,在大模型的检索中,并不是依靠传统的关键字去搜索。而是依靠问题在空间中的向量位置,去寻找距离这个向量最近的其他词句,然后完成检索。所以,要在向量中进行检索,我们的知识库其实也是被转化成了了一个巨大的向量库。1、文档向量化:
接下来,我们可以尝试让大模型在面对客户问题时参考这份文档,以产出一个更准确的回答和建议。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技术的应用。所以在进行本地知识库的搭建实操之前,我们需要先对RAG有一个大概的了解。以下内容会有些干,我会尽量用通俗易懂的描述进行讲解。我们都知道大模型的训练数据是有截止日期的,那当我们需要依靠不包含在大模型训练集中的数据时,我们该怎么做呢?实现这一点的主要方法就是通过检索增强生成RAG(Retrieval Augmented Generation)。在这个过程中,首先检索外部数据,然后在生成步骤中将这些数据传递给LLM。我们可以将一个RAG的应用抽象为下图的5个过程:文档加载(Document Loading):从多种不同来源加载文档。LangChain提供了100多种不同的文档加载器,包括PDF在内的非结构化的数据、SQL在内的结构化的数据,以及Python、Java之类的代码等文本分割(Splitting):文本分割器把Documents切分为指定大小的块,我把它们称为“文档块”或者“文档片”存储(Storage):存储涉及到两个环节,分别是:将切分好的文档块进行嵌入(Embedding)转换成向量的形式将Embedding后的向量数据存储到向量数据库检索(Retrieval):一旦数据进入向量数据库,我们仍然需要将数据检索出来,我们会通过某种检索算法找到与输入问题相似的嵌入片Output(输出):把问题以及检索出来的嵌入片一起提交给LLM,LLM会通过问题和检索出来的提示一起来生成更加合理的答案[heading2]文本加载器(Document Loaders)[content]文本加载器就是将用户提供的文本加载到内存中,便于进行后续的处理