当前位置: 首页 > news >正文

三分钟搭建线上RAG应用,实现定制化的知识库问答

=

由于大模型API价格已成白菜价,AI应用的开发将进入到RAG时代,而由于有了像阿里云百炼这样的一站式平台,普通开发者也能开发定制化的AI SaaS应用。

遥想2023年的3月份,GPT-4的32k上下文的API价格是平均每千字就超过0.5元,如果是加上历史对话,简单的一个问题都要好几块钱。由于价格太贵,很多应用的开发都只停留在简单的对话上,而现在各种大模型成本的降低,才让RAG应用开发成了可能。

比如现在通义千问GPT-4级主力模型Qwen-Long,API输入价格从0.02元/千tokens降至0.0005元/千tokens,这意味着,1块钱就可以买200万tokens,而且还支持1千万tokens长文本输入,大约相当于当前GPT-4价格的1/400,无论是企业部署定制化的客服服务,还是企业内部知识管理,还是其他专业、私有、实时等应用场景,哪怕是中小企业也能够承受这样的成本。

AI应用开发的三种模式

大模型存在很多已知问题,比如信息幻觉(Hallucination),它经常会生成看似合理但实际上不准确或不存在的信息;知识滞后,由于大模型都是基于静态的数据集训练,因此如果保证内容的时效性(尽管现在有了搜索,但是解决不了它训练时数据是静态的问题);内容不可追溯,由于它不能指出明确的信息来源,甚至还编造来源,影响了它回答的可信度;还有专业知识、私有知识欠缺,上下文有限等等问题。

为了解决大模型遇到的这些问题,提高模型的性能和输出质量,在AI应用开发时,大家往往会采取以下三种方式,即提示工程、微调和RAG:

1. 提示工程 (Prompt Engineering)

通过设计和优化输入提示来引导大语言模型生成更准确和有用的回答,比如通过提供详细和具体的问题描述,引导模型理解问题的意图;为模型提供必要的背景信息,使其能够更好地理解问题的背景和细节;通过给出一些示例回答,引导模型理解期望的回答形式和内容等;

提示工程 (Prompt Engineering)

在ChatGPT刚发布不久,网上就流传各种各样的提示词,比如引导它怎么写出不错的文案,编写出优秀的代码,不过这些提示词都是基于大模型已有的数据和能力而言的。

2. 微调 (Fine-Tuning)

微调是一种通过在预训练模型的基础上,使用特定领域的数据进行再训练,从而使模型在特定任务或领域上表现更好的技术。使用特定领域的数据进行微调,使模型在该领域的表现更加出色。

微调 (Fine-Tuning)

不过微调需要大量的高质量标注数据来进行训练。如果数据不足或者数据质量不高,模型的性能可能无法提升甚至下降。

3. 检索增强生成 (Retrieval-Augmented Generation, RAG)

检索增强生成(RAG)是一种结合检索和生成能力的方法,通过检索相关信息来增强生成模型的回答。在回答问题之前,模型会先检索与问题相关的背景信息和知识,将其整合到回答中,以提高准确性和信息量。这种方法能根据最新的检索结果动态更新和调整回答内容,从而在任务执行中提供最相关且重要的数据,提升模型的性能和准确性。在基于大语言模型(LLM)的问答系统中,RAG确保模型访问最新、可靠的事实,并允许用户查看来源以验证准确性,建立信任。

功能提示工程微调RAG
所需技能水平低:只需基本了解如何构建提示。中高:需要掌握机器学习原理和模型架构的知识。中等:需要了解机器学习和信息检索系统。
价格和资源低:使用现有模型,计算成本最低。高:需要大量的计算资源来进行训练。中等:需要资源来支持检索系统和模型交互,但比微调少。
定制化低:受限于模型的预训练知识和用户构建有效提示的能力。高:可以针对特定领域或风格进行广泛定制。中等:通过外部数据源进行定制,取决于数据源的质量和相关性。
数据需求无:使用预训练模型,无需额外数据。高:需要大量的相关数据集进行有效微调。中等:需要访问相关的外部数据库或信息源。
更新频率低:依赖于底层模型的再训练。可变:取决于何时用新数据再训练模型。高:可以整合最新的信息。
质量可变:高度依赖于构建提示的技能。高:针对特定数据集进行定制,提供更相关和准确的响应。高:通过上下文相关的外部信息增强响应。
使用场景一般查询、广泛主题、教育用途。专业应用、行业特定需求、定制化任务。需要最新信息的情况,以及涉及上下文的复杂查询。
实施难易度高:使用现有工具和接口,实施简单。低:需要深入的设置和训练过程。中等:涉及将语言模型与检索系统集成。

尽管RAG好处很多,但是即使是专业的程序员在面对信息检索、Embedding、向量数据库、搜索数据库、知识库管理、模型管理等时,也会面露难色,不过有了像阿里云百炼这样的一站式大模型应用开发平台,即便你毫无技术基础,也能在几分钟内搭建专属的RAG应用。

三分钟内搭建专属RAG应用

第1步:导入专有、私有、动态的数据

通过导入数据,可以把1000页以内的PDF、Word等文档直接上传到数据管理中心,阿里云文档智能解析服务会自动解析文档,抽取文档内容、层级结构等信息。比如我直接导入了一本《孙子兵法》的PDF文档。

导入数据,支持PDF等常用文档,百炼自会提炼

第2步:将导入的数据创建成知识库

这一步如果是你自己用代码的方式开发,则需要你掌握langchain、embedding模型、向量数据库(比如milvus、Pinecone)、开源的搜索数据库(如Meilisearch、Elasticsearch、Lucene)等知识,会非常复杂,但是使用百炼平台,不需要你有技术基础,只需要按照步骤点几下即可。

复杂的技术概念,只用可视化简单的操作即可完成

智能切分一步到位,无需调用langchain等

第3步:创建并发布RAG应用

接下来我们就可以直接创建并发布自己的RAG大模型了,选择大模型时,推荐通义千问-Max,输入prompt提示词时,需要加上一下变量${documents} 即可,比如:

# 知识库      请记住以下材料,他们可能对回答问题有帮助。      ${documents}   

知识检索增强支持多个文档,自带Elasticsearch

同时,要勾选知识检索增强,并选中之前创建好的知识库,以及回答来源(如果你希望让RAG回答问题都指出来源),然后点击保存并发布即可,到这里我们的RAG应用就已经创建好了。

第4步:调用RAG应用

我们可以直接在百炼控制台,像聊天一样来调用已经发布的应用,不过这个只是用来测试,比如我直接向它提问:“这本书有几个章节”,它不仅会围绕着我上传的《孙子兵法》来回答问题,而且还明确给出具体的出处,再也不会在它不懂的时候“胡说八道”了。

知识检索增强支持多个文档,自带Elasticsearch

就这么一个简单的问题,由于集成了资料,它的输入token是2562个,输出是107个,这在以前影响RAG流行最大的因素就是token太贵,而现在通义千问基本将API的调用打成了白菜价格,即便是在知识库里存放几百万字,RAG应用的对外用户服务的成本也在可控之内了。

而要让你的应用被广大用户使用,则需要懂一点编程知识,比如你可以使用阿里云的FC云函数计算来托管你的应用,也可以将应用集成到一些聊天应用里(比如集成到一些Chat Next Web之类的UI里,不过需要对UI的调用代码进行一点改造)。

用FC云函数即可调用,代码可以转换为多种语言

如何系统的去学习大模型LLM ?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 解锁企业微信营销新纪元:智驭未来,让每一次触达都精准高效!
  • Tensorflow实现深度学习8:猫狗识别
  • Qt Dialog退出事件
  • AIGC时代从新手到高手:B端竞品分析实战案例与技巧分享
  • 华为Huawei路由器交换机SSH配置
  • 设计模式-结构型模式-组合模式
  • 学习WebGl基础知识(二)
  • Docker原理及实例
  • 使用docker部署project-exam-system(项目)
  • QT connect的使用
  • SLM2110CG 1.0A/1.6A600V完美代替IR2110 精准驱动,可靠之芯 高压、高速的功率MOSFET和IGBT驱动器
  • 【深度解读】知识库的作用
  • NVIDIA GeForce RTX标志升级 加入AI的力量
  • 9、Django Admin优化查询
  • MacOS下WKWebView设置背景透明问题
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【个人向】《HTTP图解》阅后小结
  • canvas 绘制双线技巧
  • PaddlePaddle-GitHub的正确打开姿势
  • Spring-boot 启动时碰到的错误
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 前端相关框架总和
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  •  一套莫尔斯电报听写、翻译系统
  • 用jQuery怎么做到前后端分离
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​【已解决】npm install​卡主不动的情况
  • ​iOS安全加固方法及实现
  • # Redis 入门到精通(九)-- 主从复制(1)
  • #{}和${}的区别?
  • #pragma multi_compile #pragma shader_feature
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (C语言)二分查找 超详细
  • (Ruby)Ubuntu12.04安装Rails环境
  • (SpringBoot)第七章:SpringBoot日志文件
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (二)丶RabbitMQ的六大核心
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (六)Hibernate的二级缓存
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (转) RFS+AutoItLibrary测试web对话框
  • .bat文件调用java类的main方法
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • @Bean注解详解
  • @Builder注释导致@RequestBody的前端json反序列化失败,HTTP400
  • @ohos.systemParameterEnhance系统参数接口调用:控制设备硬件(执行shell命令方式)
  • @RestControllerAdvice异常统一处理类失效原因
  • [20171101]rman to destination.txt
  • [AutoSar]状态管理(五)Dcm与BswM、EcuM的复位实现
  • [C#]OpenCvSharp使用帧差法或者三帧差法检测移动物体
  • [C++] 从零实现一个ping服务