专栏名称: 码农翻身
工作15年的前IBM架构师分享好玩有趣的编程知识和职场的经验教训, 不容错过。
目录
相关文章推荐
程序员的那些事  ·  逃回大厂!谷歌天才科学家 Yi ... ·  2 天前  
程序猿  ·  Python首次超越JavaScript,G ... ·  1 周前  
OSC开源社区  ·  Node.js开始反击 ·  1 周前  
OSC开源社区  ·  逃离“北上广深”,新一线是最好的去处吗? ·  1 周前  
51好读  ›  专栏  ›  码农翻身

厉害,阿里又放了一个大招 !

码农翻身  · 公众号  · 程序员  · 2024-11-28 08:55

正文

2023年大模型(LLM)火了以后,很多人用它来写文章、写文案、写总结,生成图片、极大地提高了工作效率。


但是用得多了以后就发现,这大模型还有很多缺陷的,它的训练数据通常滞后,新的东西它根本不知道,由于训练一次时间很长,成本很高,知识也很难更新。高度专业化的领域,缺乏领域深度,并且可能会生成错误的回答



01
RAG


为了解决大模型的这些问题,RAG(Retrieval-Augmented Generation)被提了出来。


RAG的想法很简单,把传统检索和生成模型做结合,用户在使用之前,先建立一个知识库,把专业领域知识“向量化”以后,存到向量库中。 



当用户提出以后,RAG先利用检索模块从知识库中查找与输入问题或上下文相关的内容,然后将检索到的信息与原始输入一起提供给大模型,最后大模型再进行生成输出。



RAG通过检索模块访问外部知识库,突破生成模型的参数规模限制,提供最新且广泛的知识。还能够追踪回答的来源,增强结果的可信度,知识更新也很方便。


所以RAG在智能客服,法律问答、学术问答等领域中非常好用。



02
RAG的痛点


但是RAG在工作的时候,需要用传统的方法来检索知识库,从中检索出来的很可能是“难负样本”(Hard Negative Samples),什么是难负样本呢?


举个例子,假设你正在训练一个猫和狗分类模型:


正样本:猫的图片。

负样本:不是猫的图片,比如狗、鸟、汽车等。

普通负样本:一辆汽车的图片,与猫完全无关。

难负样本:一只小猫形状类似的狗(比如有猫的毛色特征)


简单来说,难负样本就是和正样本非常相似的负样本,它们看起来与目标类别接近,实际上属于错误类别。


RAG的检索模块是利用传统检索去访问知识库的,这时候很有可能会把“难负样本”给检索出来,然后输入给大模型生成回答,大模型分不清真假,基于“难负样本”进行回答,不但无法生成正确答案,反而会被误导,导致回答质量下降,甚至引入“幻觉”现象。



RAG这么好的增强技术,难道就因为“难负样本”给搞坏了吗?能不能在检索结果中把“难负样本”给剔除出去?



03
阿里云百炼:RAG全新升级


最近我发现阿里巴巴的百炼平台对RAG框架做了升级,有效地解决了“幻觉”问题。


通常情况下,在对知识库进行搜索的时候,是根据文本相似度的阈值来进行判定的,例如下面的例子,阈值是0.4,chunk1和chunk2高于0.4,那就作为搜索结果返回了。chunk3的相似度是0.3,低于阈值,就被丢弃了。



最终,chunk1和chunk2再加上用户的问题被发给大模型。


这种根据文本相似度判断的方法速度比较快,但是准确一般,还有可能产生“难负样本”,在大模型那里产生幻觉。


阿里云的百炼平台则在相似度的基础上,引入了“拒识模块”,系统首先通过相似度阈值筛选出初步的搜索结果,然后利用大模型对这些结果进行深入分析,判断它们与用户查询的关联程度


比如下图,根据相似度阈值,chunk1和chunk2已经被取出,但是通过大模型的分析以后,发现chunk1和用户的查询没有关联,就被抛弃了。



最终,只有chunk1加上用户的查询发给了大模型来生成答案,由于信息关联性极高,幻觉就被消除了。


通过这一机制,大模型在生成回答前,能够先对候选信息进行一次全面的“质量检查”,确保所有用于生成的信息都是高度相关且可靠的。


从具体实现上来说,“拒识模块“包括了三个重点的组成部分:


1. 复杂的指令系统


既然要使用大模型来判断检索结果与用户问题的相关度,那必然要有一套指令系统来告诉大模型怎么处理,例如告诉大模型:检索结果中涉及的实体与用户问题中的实体要完全一致啊,否则就认为不相关。


2. 大模型调用


调用大语言模型,得到每条检索文档的相关性判断。


3. 后处理


根据大模型输出的相关性结果,过滤掉那些不相关的检索文档。如果相关文档列表为空,则直接返回无答案,避免大语言模型产生幻觉答案。



04
使用全新的RAG


“拒识模块”的处理过程听起来非常复杂,但是是阿里云百炼平台上,已经把整个过程都封装好了,用户只需点几下按钮就可以启用这个强大的功能。


在阿里云百炼平台上,选择创建一个RAG应用:



例如我创建RAG应用叫做“码农翻身张大胖”,目的是把我公众号的文章建立一个知识库,让这个智能体应用去检索,回答用户提出的问题。


这里要打开“知识库检索增强”,把我的文章传上去,让检索模块去搜索。



然后重点进行“检索配置”,进行“回答范围设定”,选择“搜索阈值+大模型判断”就可以了,剩下的就不用管了。



接下来,就可以向这个RAG应用发问了:




05
总结


阿里云百炼集成了200多款大模型的API,涵盖通义千问、Llama、ChatGLM等国内外主流模型,可以直接调用模型进行推理,其中通义千问的QPS和TPM基本拉满,可提升到500万,完全可以满足高并发场景的需求。


如果你想训练自己的模型,百炼也提供从数据管理、模型调优、评测到部署的全链路模型服务,用户可弹性按需调用算力,无需关心底层架构。


在百炼平台上,还可以轻松地创建RAG应用,一键开启知识检索增强(RAG),建立知识库,在检索配置上,通过“搜索阈值+大模型判断”的方式,更好地解决了大模型幻觉问题,让大模型在复杂场景下的应用开辟了新的可能性,进一步推动了人工智能技术的发展和应用。


强烈建议大家都来试一试,感受下人工智能的最新进展。


扫描下方二维码,进入阿里云百炼官网