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

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 源代碼,幫助大家更好地理解這背后的原理。敬請期待!

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器人
    +關注

    關注

    212

    文章

    29178

    瀏覽量

    210644
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4871

    瀏覽量

    130258
  • python
    +關注

    關注

    56

    文章

    4821

    瀏覽量

    85700
  • Rust
    +關注

    關注

    1

    文章

    233

    瀏覽量

    6851
  • ChatGPT
    +關注

    關注

    29

    文章

    1584

    瀏覽量

    8591

原文標題:手把手教你用 Rust 實現一個基于 ChatGPT 的 RAG 助手

文章出處:【微信號:Rust語言中文社區,微信公眾號:Rust語言中文社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何使用Rust連接Redis

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

    如何在Rust中使用Memcached

    Memcached協議的實現,使得開發者可以在Rust中使用Memcached。 基礎用法 創建連接 使用Rust語言Memcached需要先創建
    的頭像 發表于 09-19 16:30 ?1400次閱讀

    Rust GUI實踐之Rust-Qt模塊

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

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

    的 std::thread::Thread 結構體表示。我們可以通過下面的代碼來創建Thread: use std::thread; fn
    的頭像 發表于 09-20 11:15 ?1206次閱讀

    【「基于大模型的RAG應用開發與優化」閱讀體驗】+第章初體驗

    RAG技術的核心原理 針對大模型的不足,第章重點為什么需要RAGRAG的核心思想是培養
    發表于 02-07 10:42

    《AI Agent 應用與項目實戰》閱讀心得3——RAG架構與部署本地知識庫

    RAG技術建立在向量數據庫的基礎上,通過高維向量空間中的相似度計算來實現語義層面的匹配,這比傳統的關鍵詞搜索更能捕捉文本的深層語義關聯。 第七章通過本地知識庫的搭建案例展示了RAG
    發表于 03-07 19:49

    和安信可Ai-M61模組對話?手搓ChatGPT 語音助手 #人工智能 #

    ChatGPT
    jf_31745078
    發布于 :2025年03月12日 15:56:59

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

    項目,請創建新目錄,然后輸入mkdir YourFoldercd YourFolder使用Cargo創建
    發表于 05-20 08:00

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

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

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

    我正在 MCUXpresso IDE 中創建靜態庫。我正在使用 redlib 在我的代碼中導入 ` [i]stdlib.h`。它成功地構建了
    發表于 06-09 08:44

    用于打印漂亮的Rust結構和枚舉表tabled

    易于使用的庫,用于打印漂亮的 Rust 結構和枚舉表。
    的頭像 發表于 10-09 10:23 ?1504次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>個</b>用于打印漂亮的<b class='flag-5'>Rust</b>結構和枚舉表tabled

    Rust開發的壓測工具rsb

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

    什么是RAGRAG學習和實踐經驗

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

    如何手擼自有知識庫的RAG系統

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

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

    為什么我們需要桌面應用 原因實在太多,我們需要便捷地 導出 記錄,需要在回答長度超長的時候自動加上“繼續”,需要 收藏 些很酷很實用的prompt...... (首先我假設你是
    的頭像 發表于 09-25 11:19 ?538次閱讀
    如何用<b class='flag-5'>Rust</b>編寫<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>ChatGPT</b>桌面應用(保姆級教程)
    主站蜘蛛池模板: 国产亚洲精品免费 | 免费看一级大片 | 四虎永久地址4hu紧急入口 | 91精品日本久久久久久牛牛 | 免费四虎永久在线精品 | www.色午夜.com| 寡妇影院首页亚洲图片 | 欧美精品一区视频 | 亚洲邪恶天堂影院在线观看 | 六月丁香综合网 | 夜夜夜爽 | 综合天天| 欧美黑人巨大xxxx猛交 | 韩国三级在线不卡播放 | 日本一区免费在线观看 | 特黄特色大片免费视频播放 | 深夜动态福利gif动态进 | 91福利网站 | 农村一级片 | 美女又爽又黄视频 | 免免费看片 | 日韩特级毛片 | 在线观看黄色一级片 | 又粗又长又爽又长黄免费视频 | 狠狠做久久深爱婷婷97动漫 | 成人女人a毛片在线看 | 天天射美女 | 香港三级理论在线影院 | 最新天堂| 久久国产成人精品国产成人亚洲 | 恐怖片大全恐怖片免费观看好看的恐怖片 | 精品三级三级三级三级三级 | 视频二区中文字幕 | 老师您的兔子好软水好多动漫视频 | 中文字幕一二三区乱码老 | 亚洲一级毛片免费看 | 美人岛福利| 亚洲色图欧美视频 | 亚洲天堂一区二区三区 | 日韩免费高清一级毛片 | 天天操夜夜添 |