0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Rust创建一个基于ChatGPT的RAG助手

jf_wN0SrCdH 来源: Second State 2023-10-24 17:34 次阅读

如今,ChatGPT 已经成为家喻户晓的名字,每个开发者都主动或被动地使用过 ChatGPT 或者是基于 ChatGPT 的产品。ChatGPT 很好,但是应用到实际工作与生活场景,ChatGPT 经常会出现一些幻觉,“一本正经”地为我们提供一些错误答案,没有办法为我们提供专业的意见或指导。那我们如何让 ChatGPT 具备某个专业领域的知识,提升回答的正确率,从而让 ChatGPT 真的用起来?比如训练 ChatGPT 成为企业的智能客服助手,解放客服的双手。

如何构建一个具有专业知识的机器人

为了解决这个问题,一般我们有两种解决方法。第一种是利用自己的数据在大模型的基础上进行 fine-tune(微调),训练出一个具备相关领域的知识的大模型,另一种方法称作 RAG (Retrieval-Augmented Generation),检索增强生成,利用向量数据库的能力,将专业的知识数据转换成多个向量,然后再利用大模型的能力进行检索,最后回答问题。两种方法各有自己的优势和劣势,总体来说,尽管 RAG 的准确度不如 fine-tune 高,但是 RAG 的性能比更适合普罗大众,因为 RAG 更简化,更高效。RAG 的优势有以下几点:

相较于微调大模型需要 GPU 算力等硬件设备支持,RAG 只需要在软件层面添加向量数据库,操作起来更加简单,成本也更低。

当有数据更新时,RAG 允许开发者通过添加新的 embedding 以保证内容的时效性,但是微调大模型则需要反复重新训练模型,耗费资源比较多

fine-tune RAG
是否需要 GPU 资源
开发周期
更新/删除知识 需要重新训练 更新 embedding
适合场景 赋予大模型某种能力 赋予大模型某种知识
结果准确度 高于 RAG 低于 fine-tune

如何使用 Rust 创建一个基于 ChatGPT 的 RAG 助手

常见的构建 RAG 助手的工具是以 Python 为主的 langchain,但是如何使用 Rust 来构建呢?这就需要我们有一套围绕 Rust 语言打造的 LLM 工具链。flows.network 就是这样一个专门为 Rust 开发者打造的构建 LLM Agent 的平台。和 langchain 一样,flows.network 为 Rust 开发者包装了常用的 LLM 工具库,比如 ChatGPT 、Claude、Llama2 以及我们常用的 SaaS 工具 GitHub 、Discord、Telegram、Slack。但是更进一步的是,flows.network 是一个 serverless Rust 平台,开发者只需构建业务逻辑,编译以及部署 Rust 函数都由平台完成。

具体到构建基于 ChatGPT 的 RAG 助手,flows.network 已经开源了一套开箱即用的框架供 Rust 开发者使用。最近新发布 Learn Rust 助手就是基于这套框架所实现的。

59405d16-7245-11ee-939d-92fbcf53809c.jpg

为了方便大家理解基于 ChatGPT 的 RAG 助手,我在这里补充了一张在 Learn Rust 助手询问问题的流程图。从用户问一个问题开始,Agent 就要和向量数据库和 LLM 打交道,为没有记忆的大模型补充手脚、眼睛和记忆。

下面我们来详细看看怎么使用 Rust 构建 RAG 助手。开源的代码分为两部分,一部分是利用向量数据库创建 embedding,另一部分是把加好 embedding 的向量数据库与我们常用的工具结合起来。这两部分代码都是完全用 Rust 编写的。

这篇文章主要聚焦如何搭建 RAG 知识库助手,不会对代码进行详细解释。对源代码感兴趣的朋友,敬请期待我们下一篇文章。

首先先来看第一部分在向量数据库中创建 embedding。

在创建 embedding 的这个 demo repo 我们需要做三件事:

fork 这个 repo,把文件 text1.txt 里的内容换成自己的内容。这里要注意 embedding 的方法,要把相似的内容放在一个 embedding 里,每个空行代表一个 embedding。你也可以直接在本地存储自己的 embedding。

将 RAG-embedding repo 的代码部署在 flows.network 上,得到一个可以访问向量数据库的 webhook。

在这个 webhook 中添加 embedding 的内容以及命名 collection。

第一步是主要是开发者自己的工作,你可以选择手动分段,也可以选择使用算法进行分段。

第二步需要用到 flows.network, 简单来说,我们需要把包含源代码的 repo 导入到 flows.network 平台,并且添加 OpenAI 的 API key。因为把 text 转换成 embedding 的工作是调用 OpenAI 的 embedding API 完成的。部署完成后,我们会在页面看到一个 webhook 链接。这个 webhook 链接需要保存下来,因为接下来我们将通过这个 wbhook 添加 embedding 的内容。

//webhook示例
https://code.flows.network/webhook/I9GNgD5HKhFLY25DsOUI

第三步是用 curl 为这个向量数据库添加 embedding 内容。打开终端命令行工具,输入下面的命令行。

//获取源代码及准备好的txt文件
gitclonehttps://github.com/alabulei1/demo-RAG-embeddings.git
cddemo-RAG-embeddings

//上传创建好的 embedding 文件。
//Webhook链接要替换成在flows.network生成的链接
//collection_name可以随意替换,要记住这个名字,后面需要用到
//"@test1.txt"根据实际情况替换即可
curl"https://code.flows.network/webhook/I9GNgD5HKhFLY25DsOUI?collection_name=laokeshi&vector_size=1536&reset=1"-XPOST--data-binary"@test1.txt"

//添加成功后,终端会提示总共创建了多少个embedding
Successfullyinserted7records.Thecollectionnowhas7recordsintotal

看到终端输出如上的命令行,就意味着我们的 embedding 已经创建好了。

下面的视频展示了如何在 flows.network 上部署这个创建 embedding 的 repo,并且在得到webhook 链接后,如何把 embedding 添加到向量数据库。

接下来就可以将这些 embedding 与其他 SaaS 工具自由组装。这时候就用到我们的第二个 demo repo:使用这些 embedding 创建一个 discord 机器人(Agent),让用户能够在 Discord 直接咨询相关问题。

同样,我们需要将 RAG-discord-bot demo repo 导入到 flows.network 进行部署。我们需要配置五个环境变量。discod_token 和 bot_id 是设置 Discord 机器人的。这两个参数在 Discord 的开发者中心获取。

还有一个 collection_name ,这里要填入我们在上一步创建 embedding 的是所设置的 collection_name 的值, 让 Discord agent 知道去找哪个数据库检索相关内容。

另外两个是 Agent 本身的信息。error-mesg 是发生错误时,给用户的错误提示信息,system_promopt 是 agent 总的 Prompt,给 ChatGPT 规划任务。

同样,下面有一个视频展示了如何在 flows.network 上导入 github repo,创建这个 Discord 机器人。

当 flow 的状态变成 ready 后,就可以去 server 里找刚刚创建的 Discord 机器人,让这个 Discord 机器人回答问题。注意,这时的 Discord 机器人应该是 online 的状态,如果 Discord 机器人是 offline 的状态,请检查 Discord 机器人是否设置正确。

这就是使用 Rust 创建一个基于 ChatGPT 的 RAG 助手的全部过程。当然你也可以把 ChatGPT 换成其他的大模型,比如 Llama2。

使用 Rust 构建 LLM Agent 并没有那么难!如果你正在发愁不知道怎么把 Rust 用起来,来试试构建这个 RAG Agent 吧。你可以构建企业手册助手、开发手册助手、开源项目助手等等。

下一篇文章,我们将详细解读这个 RAG 助手的 Rust 源代码,帮助大家更好地理解这背后的原理。敬请期待!

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    206

    文章

    27033

    浏览量

    201408
  • gpu
    gpu
    +关注

    关注

    27

    文章

    4417

    浏览量

    126705
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83467
  • Rust
    +关注

    关注

    1

    文章

    223

    浏览量

    6387
  • ChatGPT
    +关注

    关注

    27

    文章

    1408

    浏览量

    4745

原文标题:手把手教你用 Rust 实现一个基于 ChatGPT 的 RAG 助手

文章出处:【微信号:Rust语言中文社区,微信公众号:Rust语言中文社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何在Rust中使用Memcached

    了Memcached协议的实现,使得开发者可以在Rust中使用Memcached。 基础用法 创建连接 使用Rust语言Memcached需要先创建一个连接。可以使用 memcache
    的头像 发表于 09-19 16:30 883次阅读

    Rust GUI实践之Rust-Qt模块

    Rust-Qt 是 Rust 语言的一个 Qt 绑定库,它允许 Rust 开发者使用 Qt 框架来创建跨平台的图形界面应用程序。Qt 是一个跨平台的应用程序框架,它提供了一系列的工具和
    的头像 发表于 09-30 16:43 964次阅读

    【国产FPGA+OMAPL138开发板体验】(原创)6.FPGA连接ChatGPT 4

    OMAP-L138(定点/浮点DSP C674x+ARM9)+ FPGA处理器的开发板。 编写用于FPGA访问ChatGPT 4的程序代码是
    发表于 02-14 21:58

    chatGPT帮我写硬件代码,是懂行的,好助手!#chatgpt #物联网开发 #python开发板

    ChatGPT
    苏州煜瑛微电子科技有限公司
    发布于 :2023年02月17日 15:27:42

    DAQ助手使用与虚拟采集卡创建

    简单几步,学会labviewDAQ助手和虚拟采集卡创建,没有采集卡也样可以。
    发表于 07-26 10:00

    创建1TCP任务+3UDP任务时为什么最后任务创建失败

    创建1TCP任务+3UDP任务时,最后任务不能成功创建。程序是在探索者附带的LWIP_网
    发表于 04-17 04:35

    只会用Python?教你在树莓派上开始使用Rust

    项目,请创建新目录,然后输入mkdir YourFoldercd YourFolder使用Cargo创建
    发表于 05-20 08:00

    RUST在嵌入式开发中的应用是什么

    的文档、有用的错误消息、友好编译器、流的工具,只是Rust的几个好处。它带有集成的包管理器和构建工具,支持自动完成和类型检查的智能多编辑器,
    发表于 12-24 08:34

    科技大厂竞逐AIGC,中国的ChatGPT在哪?

    推出了ChatGPT,尝试在这里与它交谈”,还包括链接,任何人都可以点击链接,免费与ChatGPT交谈。 与Siri、小爱同学等语音助手
    发表于 03-03 14:28

    ChatGPT系统开发AI人功智能方案

    ChatGPT由OpenAI开发的人工智能语言模型,可以实现自然语言处理、对话生成等功能。要开发类似
    发表于 05-18 10:16

    Rust代码中加载静态库时,出现错误 ` rust-lld: error: undefined symbol: malloc `怎么解决?

    我正在 MCUXpresso IDE 中创建静态库。我正在使用 redlib 在我的代码中导入 ` [i]stdlib.h`。它成功地构建了
    发表于 06-09 08:44

    不到1分钟开发GPT应用!各路大神疯狂整活,网友:ChatGPT就是新iPhone

    这个说法并不准确。尽管ChatGPT等语言模型已经在定程度上改变了我们获取信息、学习知识的方式,但它们并不能替代人类进行创造性思考和创造性活动。 虽然些人可能会利用ChatGPT
    发表于 11-19 12:06

    搜索出生的百川智能大模型RAG爬坑之路总结

    今天对百川的RAG方法进行解读,百川智能具有深厚的搜索背景,来看看他们是怎么爬RAG的坑的吧~
    的头像 发表于 01-05 15:02 843次阅读
    搜索出生的百川智能大模型<b class='flag-5'>RAG</b>爬坑之路总结

    什么是RAGRAG学习和实践经验

    高级的RAG能很大程度优化原始RAG的问题,在索引、检索和生成上都有更多精细的优化,主要的优化点会集中在索引、向量模型优化、检索后处理等模块进行优化
    的头像 发表于 04-24 09:17 85次阅读
    什么是<b class='flag-5'>RAG</b>,<b class='flag-5'>RAG</b>学习和实践经验