AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


AI产品经理必须知道的技术 之 【RAG】
发布日期:2024-04-04 08:59:59 浏览次数: 2328



AI产品经理或者准备从事这个职业的朋友,一定都听说过RAG。RAG全称是Retrieval Augmented Generation,中文意思是检索增强生成,是一种构建AI应用的方法。

今天我就跟大家唠一唠RAG,什么是RAG、RAG的实现方式,以及RAG的典型产品应用分享。


01

RAG介绍


RAG是目前AIGC文本生成最普遍、最成熟的应用方法

通俗地理解就是:把知识库提供给大模型,让大模型根据知识库的内容进行回答。

这和用户直接上传一个文档,让大模型根据文档回答问题有一些小的区别。

RAG有一个前置流程,即先检索知识库,把检索出来的知识片段提供给大模型,再让大模型根据知识片段回答问题。


这么做的好处是什么呢?

总结来说,RAG对AIGC应用的价值有三个方面:

  1. RAG可以引导大模型回答内容的范围、提升回答质量。
  2. RAG可以补充大模型在专业领的知识上的不足,可以让大模型变为行业专家,以及让大模型可以获取最新的知识。
  3. RAG弥补了大模型处理token长度的限制,对于非常大的知识库,也可以进行检索生成。

举个应用场景的案例:

【场景】你公司有一款产品,你希望将该产品的知识文档,都提供给大模型,给用户提供一个基于大模型的智能问答客服,帮助用户快速解决问题。


RAG可以帮助你实现以下效果:

1、智能客服可以基于产品知识回答问题

回答结果可以引用的文档内容,以及大模型根据它的理解推理给出的答案。

它可以是基于知识内容的总结、解释。

也可以是基于识内容,进行相关的工具调用,计算推理,得出答案。

也有更高级的用法,例如用思维链的方法,将问题拆分为多个任务,行下一步的推理。当然思维链的方法已经不是RAG本身了,但我们可以将RAG方法应用在思维链推理模式中,用来构建复杂的任务。


2、知识库是可以实时更新完善的

你可以将最新的知识库内容提供给大模型,让在每次大模型回答问题前,都实时检索最新的内容。你不需要重新设置大模型。只要更新知识库即可。


这里有个小tips,知识库不仅仅是产品文档、用户手册。你也可以将过去大模型回答问题的记录,将其中常见的问题,优秀的回答,差的回答,经过审核筛选后,也作为知识的一部份。可以很好地提升回答质量

3、避免大模型上下文Token长度限制

由于大模型处理内容有token度限制,虽然随着大模型的升级,它能处理的token数越来越大(例如最新的claude3已经支持20万token),但是我们仍然需要RAG。

原因有三点:

(1)太长的上下文,处理速度会很慢。

(2)上下文知识并不是越多越好,而是要精确,由于大模型的注意力机制,过多的内容也可能会导致大模型被带偏,不能给出准确的答案。

(3)太长的上下文,成本上升巨大。


02


RAG实现


我们再来讲讲如何构建一个基于RAG的大模型应用。

首先,我们要了解RAG的工作流程。


RAG工作流程分为两个主要步骤:

一、构建知识库

二、问答流程

一、构建知识库

构建知识库又分为几个步骤:

内容解析->内容分片->内容Embedding->存储


1、内容解析

内容解析是将不同格式的文档,例如txt,html,word,excel,pdf,markdown 等格式的文件,提取出文本(其实也可以是音频、图像,这里方便介绍就以文本举例)。有许多开源工具,均提供了这些能力。

需要注意的是,尽可能地让这些数据解析后的格式更规范,以保证后续提供给大模型的内容质量更好。


2、内容分片

以上解析出来的内容,可能有是很长的篇幅。我们需要将它们切片成小的片段。这些片段就是我们后续要提供给大模型的知识。所以在内容分片时,尽可能让切片内容完整、独立。

简单的方法,一般可以设置一个最大片段字符长度。不超过字符长度的章节段落进行切分。如果知识篇幅不大,也一可以一篇文档一个分片。


3、Embedding

Embedding翻译成中文是嵌入,这个可能有的朋友不太理解。

我们知道一段文字,哪怕是一个词,它包含的信息都是非常非富的,并且不词与词之间,都有关联关系,比如说狗、dog、gou、旺财、二哈,这些词它们的意思是很接近的。但是数据库能存储的信息又是非常有限的。


Embedding通俗地理解就是将信息从非常高的维度,压缩映射成一个有限维度的向量。将一段任意长度的文本,Embedding处理后,都会得到一个多维的向量。例如这样:

[-0.01605728454887867, -0.008948222734034061, -0.015024525113403797, -0.02007514238357544, ...... -0.0011304783402010798]


我们以一个简单的例子来看:下图是一个三维的空间。

二哈、旺财、dog,狗,猫这几个词被映射到这个空间的某个位置。它们位置距离,就可以表示它们的相关性。位置可以用一个3维向量来表示。


维度越多,能表示的信息就越丰富,充足的语料训练,也能让Embedding 的模型结果更准确。

Embedding我们不是一定只能用大模型的来做,普通的算法也可以做Embedding,但是大模型的Embedding效果会更好。因为它训练的语料充足,维度更多。


OpenAI的Embedding 模型 text-embedding-ada-002 有 1536个维度。

这样两段不同的文本内容,可以映射成二个1536维的向量


4、存储向量


我们将所有文本内容片段,用Embedding处理好后,可以存储在向量数据库中。因为后续需要在向量数据库中检索数据。

向量数据库比较常用的可以考虑:pgvector(PostgreSQL 的开源扩展),Elasticsearch,Chroma等。这里不作具体优劣对比。


在向量数据库里我们可以存储一些信息,例如:

文档ID、文档内容、章节索引、段落索引、Embedding向量。

存储的文档元信息,可以尽可能丰富一些,因为如果后续要优化,可以对检索的内容进行过滤。


这样,我们就完成了知识库的初始化构建。


二、问答流程


问答流程又分为几个步骤:

用户提问->问题Embedding->检索相关知识->封装Prompt->大模型回答


用户提问与大模型回答是最基础的流程。

在这中间,RAG做了几件事:


1、问题Embedding

在接到用户的提问后,我们先将用户的问题,也进行Embedding处理,得到一个问题的向量值。

这个向量值,就包含了这个问题的信息,我们通过向量值的比较计算,就能找到与它相关的知识。


2、检索相关知识

将上一步得到的问题向量值,在向量数据库中检索,得到相关的内容片段。这些片段就是我们要提供给大模型的参考知识。


在检索时,我们可以定返回的结果数,相似度阈值。例如返回相似度最高,且相似度大于0.3的3段内容


3、封装Prompt

将上一步检索出来的3段内容,与用户问题,组成新的查询prompt,提交给大模型。这样大模型就可以参考我们检索出来的文档内容进行回答。


以上的过程,有很多优化的技巧,需要结合应用场景、数据进行详细的考虑和设计优化的目的,是为了让大模型的回答更准确。

我总结了几种优化思路:

  1. 在对用户问题进行Embedding前,对问题进行补充完善。避免用户问题太过简单、或者有明显错误。

  2. 也可以考虑将用户问题,进行主题关键词抽取,或者使用知识图谱等进行初步的信息识别。这么做的目的是,避免用户的问题,信息太多太杂,导致检索出来的相关文档,与用户提问意图关联不大。也就是对用户问题进行简化

  3. 检索文档时,可以增加一些过滤条件,例如指定章节、关键词包含、日期筛选、相似度阈值等,以使检索出来的内容更准确。

  4. 检索结果,也可考虑将相似度,与文档自身的权重进行综合加权。使提供给大模型的内容资料是最优的。

  5. 优化prompt,可以让大模型更好的学习参考内容和回答。这点应该是优化时首先考虑的,也是最低成本的优化方法。

  6. 如果有条件可以大模型的生成内容进行监督,如果不符合预定的规则,则重新生成或者返回其它特定的内容。



03


RAG产品案例


RAG方法已经普遍被应用在各种AI产品中了。我们可以看几个产品案例。大家可以根据这些案例,来思考如何落地AI应用。


1、微软Copilot

微软Copilot是结合了BING搜索引擎的AI工具,用户提问后,它会根据搜索引擎的结果,进行总结回答。


对RAG来说,Embedding其实也不是绝对必要的,它的目的是为了更好地检索知识。搜索引擎本身也是检索知识,当然搜索引擎中也广泛地应用了Embedding技术。所以重要的是理解产品的逻辑,根据实际的需求来考虑如何设计产品。


2字节Coze


字节的Coze产品,也提供了RAG的能力,允许用户上传自己的知识文档。动化构建你的AI应用。

Coze的使用门槛非常低,免费,不需要乱七八糟的上网方式,非技术人员也可以用,人人都可以创建自己的AI助理。


3Langchain-ChatChat

LangChain是一个开源LLM框架,包含了丰富的组件,例如数据处理,Embedding处理和向量存储、LLM终端等。

Langchain-ChatChat是基于LangChain开发的应用,可以集成开源大模型,例如ChatGLM(清华开源大模型),Qwen(阿里千问开源大模型)等。

它的优势:

(1)可以本地化部署,这样可以保护企业的数据安全,完全运行在企业内部私有环境。

(2)开源软件可以自定义扩展

(3)支持知识库管理等功能,开箱即用。



4、ChatPDF

ChatPDF,以及它有很多类似的工具。可以允许用户上传PDF文件,让大模型根据文件回答问题。

这类产品在早期chatgpt3.5版本时非常火。但后来chatgpt4提供用户上传文档能力后,有所被替代。这其实也是一个趋势,有许多AI应用短期很火,是因为它借助AI能力满足了一部份人的需求,而底层AI公司,现阶段主要在底层模型能力上发力,应用端则开放API,让生态自由发展。但现在AI应用的更新迭代丰常快,可能AI一次升级,许多AI应用产品就被替代了。AI应用的创业团队,都需要考虑,尽可能的轻量、快速迭代。


5、Video Insights

Video Insights是一款Chatgpt的插件,允许用户提供一段视频(Youtube视频链接),它可以对YouTube视频进行转录、总结和聊天。

它的原理是先获取Youtube的视频字幕,然后交给Chatgpt作为参考内容,进行总结和对话。




53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询