在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用Rust創(chuàng)建一個基于ChatGPT的RAG助手

jf_wN0SrCdH ? 來源: Second State ? 2023-10-24 17:34 ? 次閱讀

如今,ChatGPT 已經(jīng)成為家喻戶曉的名字,每個開發(fā)者都主動或被動地使用過 ChatGPT 或者是基于 ChatGPT 的產(chǎn)品。ChatGPT 很好,但是應(yīng)用到實際工作與生活場景,ChatGPT 經(jīng)常會出現(xiàn)一些幻覺,“一本正經(jīng)”地為我們提供一些錯誤答案,沒有辦法為我們提供專業(yè)的意見或指導(dǎo)。那我們?nèi)绾巫?ChatGPT 具備某個專業(yè)領(lǐng)域的知識,提升回答的正確率,從而讓 ChatGPT 真的用起來?比如訓(xùn)練 ChatGPT 成為企業(yè)的智能客服助手,解放客服的雙手。

如何構(gòu)建一個具有專業(yè)知識的機器人

為了解決這個問題,一般我們有兩種解決方法。第一種是利用自己的數(shù)據(jù)在大模型的基礎(chǔ)上進行 fine-tune(微調(diào)),訓(xùn)練出一個具備相關(guān)領(lǐng)域的知識的大模型,另一種方法稱作 RAG (Retrieval-Augmented Generation),檢索增強生成,利用向量數(shù)據(jù)庫的能力,將專業(yè)的知識數(shù)據(jù)轉(zhuǎn)換成多個向量,然后再利用大模型的能力進行檢索,最后回答問題。兩種方法各有自己的優(yōu)勢和劣勢,總體來說,盡管 RAG 的準(zhǔn)確度不如 fine-tune 高,但是 RAG 的性能比更適合普羅大眾,因為 RAG 更簡化,更高效。RAG 的優(yōu)勢有以下幾點:

相較于微調(diào)大模型需要 GPU 算力等硬件設(shè)備支持,RAG 只需要在軟件層面添加向量數(shù)據(jù)庫,操作起來更加簡單,成本也更低。

當(dāng)有數(shù)據(jù)更新時,RAG 允許開發(fā)者通過添加新的 embedding 以保證內(nèi)容的時效性,但是微調(diào)大模型則需要反復(fù)重新訓(xùn)練模型,耗費資源比較多

fine-tune RAG
是否需要 GPU 資源
開發(fā)周期
更新/刪除知識 需要重新訓(xùn)練 更新 embedding
適合場景 賦予大模型某種能力 賦予大模型某種知識
結(jié)果準(zhǔn)確度 高于 RAG 低于 fine-tune

如何使用 Rust 創(chuàng)建一個基于 ChatGPT 的 RAG 助手

常見的構(gòu)建 RAG 助手的工具是以 Python 為主的 langchain,但是如何使用 Rust 來構(gòu)建呢?這就需要我們有一套圍繞 Rust 語言打造的 LLM 工具鏈。flows.network 就是這樣一個專門為 Rust 開發(fā)者打造的構(gòu)建 LLM Agent 的平臺。和 langchain 一樣,flows.network 為 Rust 開發(fā)者包裝了常用的 LLM 工具庫,比如 ChatGPT 、Claude、Llama2 以及我們常用的 SaaS 工具 GitHub 、Discord、Telegram、Slack。但是更進一步的是,flows.network 是一個 serverless Rust 平臺,開發(fā)者只需構(gòu)建業(yè)務(wù)邏輯,編譯以及部署 Rust 函數(shù)都由平臺完成。

具體到構(gòu)建基于 ChatGPT 的 RAG 助手,flows.network 已經(jīng)開源了一套開箱即用的框架供 Rust 開發(fā)者使用。最近新發(fā)布 Learn Rust 助手就是基于這套框架所實現(xiàn)的。

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

為了方便大家理解基于 ChatGPT 的 RAG 助手,我在這里補充了一張在 Learn Rust 助手詢問問題的流程圖。從用戶問一個問題開始,Agent 就要和向量數(shù)據(jù)庫和 LLM 打交道,為沒有記憶的大模型補充手腳、眼睛和記憶。

下面我們來詳細(xì)看看怎么使用 Rust 構(gòu)建 RAG 助手。開源的代碼分為兩部分,一部分是利用向量數(shù)據(jù)庫創(chuàng)建 embedding,另一部分是把加好 embedding 的向量數(shù)據(jù)庫與我們常用的工具結(jié)合起來。這兩部分代碼都是完全用 Rust 編寫的。

這篇文章主要聚焦如何搭建 RAG 知識庫助手,不會對代碼進行詳細(xì)解釋。對源代碼感興趣的朋友,敬請期待我們下一篇文章。

首先先來看第一部分在向量數(shù)據(jù)庫中創(chuàng)建 embedding。

在創(chuàng)建 embedding 的這個 demo repo 我們需要做三件事:

fork 這個 repo,把文件 text1.txt 里的內(nèi)容換成自己的內(nèi)容。這里要注意 embedding 的方法,要把相似的內(nèi)容放在一個 embedding 里,每個空行代表一個 embedding。你也可以直接在本地存儲自己的 embedding。

將 RAG-embedding repo 的代碼部署在 flows.network 上,得到一個可以訪問向量數(shù)據(jù)庫的 webhook。

在這個 webhook 中添加 embedding 的內(nèi)容以及命名 collection。

第一步是主要是開發(fā)者自己的工作,你可以選擇手動分段,也可以選擇使用算法進行分段。

第二步需要用到 flows.network, 簡單來說,我們需要把包含源代碼的 repo 導(dǎo)入到 flows.network 平臺,并且添加 OpenAI 的 API key。因為把 text 轉(zhuǎn)換成 embedding 的工作是調(diào)用 OpenAI 的 embedding API 完成的。部署完成后,我們會在頁面看到一個 webhook 鏈接。這個 webhook 鏈接需要保存下來,因為接下來我們將通過這個 wbhook 添加 embedding 的內(nèi)容。

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

第三步是用 curl 為這個向量數(shù)據(jù)庫添加 embedding 內(nèi)容。打開終端命令行工具,輸入下面的命令行。

//獲取源代碼及準(zhǔn)備好的txt文件
gitclonehttps://github.com/alabulei1/demo-RAG-embeddings.git
cddemo-RAG-embeddings

//上傳創(chuàng)建好的 embedding 文件。
//Webhook鏈接要替換成在flows.network生成的鏈接
//collection_name可以隨意替換,要記住這個名字,后面需要用到
//"@test1.txt"根據(jù)實際情況替換即可
curl"https://code.flows.network/webhook/I9GNgD5HKhFLY25DsOUI?collection_name=laokeshi&vector_size=1536&reset=1"-XPOST--data-binary"@test1.txt"

//添加成功后,終端會提示總共創(chuàng)建了多少個embedding
Successfullyinserted7records.Thecollectionnowhas7recordsintotal

看到終端輸出如上的命令行,就意味著我們的 embedding 已經(jīng)創(chuàng)建好了。

下面的視頻展示了如何在 flows.network 上部署這個創(chuàng)建 embedding 的 repo,并且在得到webhook 鏈接后,如何把 embedding 添加到向量數(shù)據(jù)庫。

接下來就可以將這些 embedding 與其他 SaaS 工具自由組裝。這時候就用到我們的第二個 demo repo:使用這些 embedding 創(chuàng)建一個 discord 機器人(Agent),讓用戶能夠在 Discord 直接咨詢相關(guān)問題。

同樣,我們需要將 RAG-discord-bot demo repo 導(dǎo)入到 flows.network 進行部署。我們需要配置五個環(huán)境變量。discod_token 和 bot_id 是設(shè)置 Discord 機器人的。這兩個參數(shù)在 Discord 的開發(fā)者中心獲取。

還有一個 collection_name ,這里要填入我們在上一步創(chuàng)建 embedding 的是所設(shè)置的 collection_name 的值, 讓 Discord agent 知道去找哪個數(shù)據(jù)庫檢索相關(guān)內(nèi)容。

另外兩個是 Agent 本身的信息。error-mesg 是發(fā)生錯誤時,給用戶的錯誤提示信息,system_promopt 是 agent 總的 Prompt,給 ChatGPT 規(guī)劃任務(wù)。

同樣,下面有一個視頻展示了如何在 flows.network 上導(dǎo)入 github repo,創(chuàng)建這個 Discord 機器人。

當(dāng) flow 的狀態(tài)變成 ready 后,就可以去 server 里找剛剛創(chuàng)建的 Discord 機器人,讓這個 Discord 機器人回答問題。注意,這時的 Discord 機器人應(yīng)該是 online 的狀態(tài),如果 Discord 機器人是 offline 的狀態(tài),請檢查 Discord 機器人是否設(shè)置正確。

這就是使用 Rust 創(chuàng)建一個基于 ChatGPT 的 RAG 助手的全部過程。當(dāng)然你也可以把 ChatGPT 換成其他的大模型,比如 Llama2。

使用 Rust 構(gòu)建 LLM Agent 并沒有那么難!如果你正在發(fā)愁不知道怎么把 Rust 用起來,來試試構(gòu)建這個 RAG Agent 吧。你可以構(gòu)建企業(yè)手冊助手、開發(fā)手冊助手、開源項目助手等等。

下一篇文章,我們將詳細(xì)解讀這個 RAG 助手的 Rust 源代碼,幫助大家更好地理解這背后的原理。敬請期待!

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 機器人
    +關(guān)注

    關(guān)注

    211

    文章

    28418

    瀏覽量

    207084
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4739

    瀏覽量

    128941
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84683
  • Rust
    +關(guān)注

    關(guān)注

    1

    文章

    228

    瀏覽量

    6607
  • ChatGPT
    +關(guān)注

    關(guān)注

    29

    文章

    1560

    瀏覽量

    7666

原文標(biāo)題:手把手教你用 Rust 實現(xiàn)一個基于 ChatGPT 的 RAG 助手

文章出處:【微信號:Rust語言中文社區(qū),微信公眾號:Rust語言中文社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    如何使用Rust連接Redis

    ] redis = "0.22" Redis基礎(chǔ)用法和示例 連接Redis 連接Redis非常簡單,只需要使用redis::Client來創(chuàng)建連接即可,如下所示: use redis::Client; fn ma
    的頭像 發(fā)表于 09-19 16:22 ?2368次閱讀

    如何在Rust中使用Memcached

    Memcached協(xié)議的實現(xiàn),使得開發(fā)者可以在Rust中使用Memcached。 基礎(chǔ)用法 創(chuàng)建連接 使用Rust語言Memcached需要先創(chuàng)建
    的頭像 發(fā)表于 09-19 16:30 ?1248次閱讀

    Rust GUI實踐之Rust-Qt模塊

    Rust-Qt 是 Rust 語言的 Qt 綁定庫,它允許 Rust 開發(fā)者使用 Qt 框架來創(chuàng)建
    的頭像 發(fā)表于 09-30 16:43 ?1598次閱讀

    Rust的多線程編程概念和使用方法

    的 std::thread::Thread 結(jié)構(gòu)體表示。我們可以通過下面的代碼來創(chuàng)建Thread: use std::thread; fn
    的頭像 發(fā)表于 09-20 11:15 ?968次閱讀

    【國產(chǎn)FPGA+OMAPL138開發(fā)板體驗】(原創(chuàng))6.FPGA連接ChatGPT 4

    OMAP-L138(定點/浮點DSP C674x+ARM9)+ FPGA處理器的開發(fā)板。 編寫用于FPGA訪問ChatGPT 4的程序代碼是
    發(fā)表于 02-14 21:58

    【書籍評測活動NO.52】基于大模型的RAG應(yīng)用開發(fā)與優(yōu)化

    數(shù)據(jù)與上下文,以幫助大模型生成更豐富、更準(zhǔn)確、更可靠的內(nèi)容。這允許大模型在生成內(nèi)容時可以依賴實時與個性化的數(shù)據(jù)和知識,而不只是依賴訓(xùn)練知識。簡單的說:RAG給大模型增加了可以快速查找的知識外掛
    發(fā)表于 12-04 10:50

    chatGPT幫我寫硬件代碼,是懂行的,好助手!#chatgpt #物聯(lián)網(wǎng)開發(fā) #python開發(fā)板

    ChatGPT
    蘇州煜瑛微電子科技有限公司
    發(fā)布于 :2023年02月17日 15:27:42

    只會用Python?教你在樹莓派上開始使用Rust

    項目,請創(chuàng)建新目錄,然后輸入mkdir YourFoldercd YourFolder使用Cargo創(chuàng)建
    發(fā)表于 05-20 08:00

    科技大廠競逐AIGC,中國的ChatGPT在哪?

    推出了ChatGPT,嘗試在這里與它交談”,還包括鏈接,任何人都可以點擊鏈接,免費與ChatGPT交談。 與Siri、小愛同學(xué)等語音助手
    發(fā)表于 03-03 14:28

    Rust代碼中加載靜態(tài)庫時,出現(xiàn)錯誤 ` rust-lld: error: undefined symbol: malloc `怎么解決?

    我正在 MCUXpresso IDE 中創(chuàng)建靜態(tài)庫。我正在使用 redlib 在我的代碼中導(dǎo)入 ` [i]stdlib.h`。它成功地構(gòu)建了
    發(fā)表于 06-09 08:44

    用于打印漂亮的Rust結(jié)構(gòu)和枚舉表tabled

    易于使用的庫,用于打印漂亮的 Rust 結(jié)構(gòu)和枚舉表。
    的頭像 發(fā)表于 10-09 10:23 ?1383次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>個</b>用于打印漂亮的<b class='flag-5'>Rust</b>結(jié)構(gòu)和枚舉表tabled

    Rust開發(fā)的壓測工具rsb

    Rust 開發(fā)的壓測工具,項目地址:rsb,給 star 鼓勵下。
    的頭像 發(fā)表于 03-21 09:32 ?886次閱讀

    什么是RAGRAG學(xué)習(xí)和實踐經(jīng)驗

    高級的RAG能很大程度優(yōu)化原始RAG的問題,在索引、檢索和生成上都有更多精細(xì)的優(yōu)化,主要的優(yōu)化點會集中在索引、向量模型優(yōu)化、檢索后處理等模塊進行優(yōu)化
    的頭像 發(fā)表于 04-24 09:17 ?893次閱讀
    什么是<b class='flag-5'>RAG</b>,<b class='flag-5'>RAG</b>學(xué)習(xí)和實踐經(jīng)驗

    如何手?jǐn)]自有知識庫的RAG系統(tǒng)

    用于自然語言處理任務(wù),如文本生成、問答系統(tǒng)等。 我們通過下幾個步驟來完成基于京東云官網(wǎng)文檔的RAG系統(tǒng) 數(shù)據(jù)收集 建立知識庫 向量檢索 提示詞與模型 數(shù)據(jù)收集 數(shù)據(jù)的收集再整個
    的頭像 發(fā)表于 06-17 14:59 ?585次閱讀

    如何用Rust編寫ChatGPT桌面應(yīng)用(保姆級教程)

    為什么我們需要桌面應(yīng)用 原因?qū)嵲谔?,我們需要便捷?導(dǎo)出 記錄,需要在回答長度超長的時候自動加上“繼續(xù)”,需要 收藏 些很酷很實用的prompt...... (首先我假設(shè)你是
    的頭像 發(fā)表于 09-25 11:19 ?354次閱讀
    如何用<b class='flag-5'>Rust</b>編寫<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>ChatGPT</b>桌面應(yīng)用(保姆級教程)
    主站蜘蛛池模板: 国产一区二区影院| 亚洲主播自拍| 欧美一级爱操视频| 亚洲一区高清| 日本成片视频| 五月天婷婷在线免费观看| h网站国产| 日本高清网站| 天天做天天爱天天爽综合网| 91三级在线观看| 日本黄色免费| 手机在线观看视频你懂的| 九月婷婷综合婷婷| 六月婷婷在线观看| 久操免费在线| 亚洲地址一地址二地址三| 国产色噜噜| 22222se男人的天堂| 五月婷婷激情在线| aaaa欧美高清免费| 91国内视频| 欧美成人一区二区三区在线视频| 天天爱天天操| 在线精品国产三级| 国产精品手机在线| 5566在线观看| 久久精品综合视频| a4yy私人毛片在线| 日韩h视频| 你懂得的在线观看免费视频| 在线看你懂得| 在线免费看高清视频大全| 欧美成年性色mmm| 国产亚洲一区二区精品| 欧美黑人性xxx猛交| 欧美zoozzooz在线观看| 国内久久久久高清影视| 色色视频网| 九九午夜| 琪琪午夜免费影院在线观看| 九九热在线免费|