- 在把AI大模型能力接入微信后,发现很多朋友想要落地在类似客服的应用场景。但目前大模型存在幻觉,一不留神就胡乱回答,这在严肃的商用场景下是不可接受的。
- 当我想要解决此问题时,发现虽然资料很多,但是多数太偏“技术向”,对于很多和我一样的非技术从业者来说,犹如天书一般。有落地需求的朋友们,即使完成了通路搭建,也无法真正的应用。
- 落地场景,幻觉是不得不直面的问题。而非技术从业者的小白们,很难找到一个“说人话”的文章,让他们完全了解并应用。
- 而我对此比较感兴趣,同时作为产品经理,有一些用户思维和技术基础。因此我斗胆在整理、学习了多位前辈的成果后,写一篇讲给“小白”们的教程。
-
AI模型 -
提示词 -
知识库。
-
大语言模型:是一个学习过无数本书、拥有无穷智慧的人。他读过无数的书、看过无数的段子,因此对公共知识、学识技能、日常聊天十分擅长。然而,在工作场景下,只会聊天侃大山可不行,你想让他帮你干活。这个时候,就需要“提示词”出场了, -
提示词:是你告诉这个全知全能的人,他是一个什么样的角色、他要专注于哪些技能,让他能够按照你的想法,变成一个你需要的“员工”。 -
知识库:相当于你给这个“聪明”员工的发放了一本工作手册。即使是看过再多的书、浏览过再多的文字,也不会准确的知道见到老板娘过来吃饭要打三折,张梦飞过去吃饭要打骨折。而知识库,就是把这些内容写在了工作手册上。让这个聪明的员工,见到有人来的时候,就翻一翻手册,然后再做出反应。
-
AI模型:这里使用的是阿里千问模型。 -
提示词:这里设定的角色是“美嘉”,是按照美嘉的人设、背景和对话风格做的设定。 -
知识库:这里放的是《爱情公寓》全季的剧情,让“美嘉”拥有了自己过往的“记忆”,知道自己做过什么、好朋友是谁等等。
图中右侧是一个十分简单的问答,
我问:“你是谁?你和子乔在台球厅吵架那次是为了什么吵架?”
她的回复是:“我是陈美嘉,那次在台球厅和吕子乔吵架是因为他约会被人撞见,我讽刺他脸大影响信号,他还反击我。后来谈到过去的事情,我指责他忘恩负义,他就说我平。最后,我伤心地说要分手,因为他之前甩过我。”
其中,她是陈美嘉,这里是人设中的设定。吵架的经过是知识库中的内容。
在我提问了之后,大模型去知识库里找到了相关内容,然后回复了我。这就是一个简单的正确回复的demo示例。
然而,我们会发现,有时候她的回答会十分不准确。
图三是知识库截图,其中是有“一菲为美嘉找了一份助教工作”的内容的。
但是回答这个问题时,AI并没有根据正确的知识库内容回答。
现在应该能够直观的理解,为什么需要让大模型根据知识库回答的更加准确、更符合我们的要求。
1、RAG介绍
- RAG(Retrieval-Augmented Generation),即检索增强生成,是一种结合信息检索和文本生成能力的技术,它由两部分组成:一个“检索器”和一个“生成器”。检索器从外部知识中快速找到与问题相关的信息,生成器则利用这些信息来制作精确和连贯的答案。这种结合使得RAG非常适合处理需要广泛知识的任务,如问答系统,能够提供详细而准确的回答。
简单来说,就是通过检索的模式,为大语言模型的生成提供更多信息,从而使大模型生成的答案更符合要求。
2、检索原理
- 可以把向量想象成空间中的点位,我们对话交流中的,每个词或短语都在这个空间中对应一个向量点位。
- 当系统需要找到与一个特定词或短语相关的内容时,它会查看这个词在虚拟空间中点的位置,寻找直线距离最近的点。在这个空间中,距离越近的点,代表词义或内容上的关联度越高。
简单来说,通过比较这些点的距离,检索器可以快速找到语义上接近的词语或信息,从而高效地检索相关内容。这就像在一个城市地图上找最近的餐馆,距离越近,越可能是你想去的地方。
①、问题解析阶段:
1、输入向量化
- 问题会被模型预处理,然后输入进嵌入模型(Embedding Modle)转化为向量。以便后续检索时,能够把问题语句与向量数据库中的其他上下文信息进行比对。
文本预处理: 这包括去除无关字符、标准化文本(例如将所有字符转换为小写)、分词等,以清洁和准备文本数据。
嵌入表示: 将预处理后的文本(词或短语)转换为向量。这通常通过使用预训练的嵌入模型来完成,如Word2Vec、GloVe、BERT等。这些模型将每个词或短语映射到一个高维空间中的一个点(即向量)。
特征提取: 对于整个问题句子,可能会应用进一步的特征提取技术,比如句子级别的嵌入,或使用深度学习模型(如BERT)直接提取整个句子的表示。这个表示能够捕捉句子的上下文信息,不仅仅是单个词。
向量优化: 在某些情况下,问题的向量表示可能会根据具体任务进行优化,例如通过调整模型参数来更好地与检索系统的其他部分协同工作。
②、知识库检索阶段:
我们需要先了解一个概念,在大模型的检索中,并不是依靠传统的关键字去搜索。而是依靠问题在空间中的向量位置,去寻找距离这个向量最近的其他词句,然后完成检索。
所以,要在向量中进行检索,我们的知识库其实也是被转化成了了一个巨大的向量库。
1、文档向量化:
- 知识库中的文档也需要被转换成向量形式。这使得文档内容能够在数值级别上与问题向量进行比较。在我们使用知识库工具时,上传文档就会帮助我们完成文档的向量化。这一步就是依靠Embedding Modle完成的。
2、知识库检索:
- 根据前一步输出的问题向量,检索器开始在一个庞大的向量空间中搜索与问题相关的内容(既向量距离最接近)。检索器根据问题的关键词和上下文,选出最相关的信息片段。
在这一步,检索器从知识库里,检索到了一些和用户问题最相关的内容。
相似性计算: 使用一种相似性度量方法(如余弦相似性)来计算问题向量和各个文档向量之间的相似度。这一步是为了找出与问题内容最为接近的文档。
排序与选择: 根据相似性得分,所有文档会被排序。系统通常会选择得分最高的几个文档,认为这些文档与问题最相关。
信息抽取: 从选定的高相关性文档中抽取具体的信息片段或答案。这可能涉及到进一步的文本处理技术,如命名实体识别、关键短语提取等。
③、信息整合阶段:
1、信息融合:
- 这里将接收到上一步中检索到的全部信息。然后把这些信息连带用户问题和系统预设,被整合成一个全新的上下文环境,为生成回答提供基础。
信息筛选与确认: 首先,系统会对检索器提供的信息进行评估,筛选出最相关和最可信的内容。这通常涉及到对信息的来源、时效性和相关性进行验证。
消除冗余: 在多个文档或数据源中,可能会有重复的信息。系统需要识别和去除这些冗余内容,以防在生成回答时出现重复或相互矛盾的信息。
关系映射: 系统将分析不同信息片段之间的逻辑和事实关系,如因果、对比、顺序等。这有助于构建一个结构化的知识框架,使得信息在语义上更加连贯。
上下文构建: 将筛选和结构化的信息组织成一个连贯的上下文环境。这通常包括对信息进行排序、归类和整合,使其形成一个统一的叙述或解答框架。
语义融合: 在必要时,系统可能会进行语义融合,即合并意义相近但表达不同的信息片段,以减少语义上的重复并增强信息的表达力。
预备生成阶段: 最后,整合好的上下文信息被编码成适合生成器处理的格式,如将文本转化为适合输入到生成模型的向量形式。
④、大模型生成回答
- 最终全新的上下文被一起传递给大语言模型。随后,大语言模型(LLM)根据提供的信息来回答问题。
- 因为这个上下文包括了检索到的信息,因此大语言模型相当于同时拿到了问题和参考答案,通过LLM的全文理解,最后生成一个准确和连贯的答案。
上下文向量化: 将整合后的上下文信息转化为向量。这通常通过一个预训练的语言模型进行,例如BERT或GPT。这些向量能够捕捉上下文中的语义信息,为生成回答提供必要的输入。
生成模型激活: 使用一个基于Transformer的生成模型(如GPT)接收向量化的上下文。这个模型利用自注意力机制来理解上下文中的各种关系和信息。
逐词生成回答: 生成模型开始逐词构建回答。模型在每一步生成一个词,同时考虑到之前已生成的词和整个上下文的语义。这个过程是迭代的,直到整个回答构建完成。
语言流畅性和准确性优化: 在回答生成的过程中,模型会优化语言的流畅性和逻辑性。确保生成的文本不仅在语法上正确,而且在逻辑上连贯,与用户问题紧密相关。
回答评估与调整: 完成初步生成后,系统可能会对回答进行评估,检查其准确性、相关性和用户满意度。如果需要,可以对回答进行微调或完全重新生成。
⑤、输出回答:
- 最终,生成的答案呈现给用户。
简要总结RAG的全流程:
-
- 问题解析阶段:
-
知识库检索阶段: 知识库中的文档同样向量化后,比较问题向量与文档向量,选择最相关的信息片段。抽取相关信息传递给下一步骤
- 信息整合阶段:
接收检索到的信息,与上下文构建形成融合、全面的信息文本。整合信息准备进入生成阶段。
-
大模型生成回答:
在回复中,可以看到这里有写11条引用,3条上下文,我们具体来看下,有什么处理。
④、大模型生成回答
来源:Equity AI