在Jetson上玩转大模型Day7:執行RAG功能的Jetson Copilot

科技   2024-10-30 08:31   江苏  











 在Jetson上玩转大模型:写在前面

在Jetson上玩转大模型Day2:环境搭建

在Jetson上玩转大模型Day3:TGW智能助手

在Jetson上玩转大模型Day4:SDW文生图

在Jetson上玩转大模型Day5:Ollama指令模式的智能助手

在Jetson上玩转大模型Day6:Ollama的Webui智能助手


在前面的大語言模型測試過程,一定會發現這些智能助手都存在一些“胡言亂語”、“答非所問”之類的狀況,其實可以將它視爲“不瞭解邊界”的小孩童一樣,因爲所有人工智能模型,都是再它的知識庫中,尋找“機率最高”的答案,很有可能這個答案的正確率還不到5%,但它不能回答“不知道”,必須找到一組以上的回覆(response),即便其正確率並不高。

爲了要協助處理這種現象,目前最流行的方法就是使用俗稱“檢索增強生成”的RAG(Retrieval-Augmented Generation)技術,爲手上的大語言模型助手提供補強或微調的功能。

NVIDIA在https://github.com/NVIDIA-AI-IOT/jetson-copilot/ 開源一個的Jetson Copilot項目,還是在Ollam大模型管理器之上,結合以下兩個應用功能所組成:

  • LlamaIndex:是一个用于快速搭建大型语言模型项目的CLI工具,旨在为LlamaIndex项目提供脚手架支持,支持多种后端存储解决方案,包括本地文件系统、‌AWS S3。在這各項目中是用來实现RAG流水线。

  • Streamlit:是一个基于Python的开源框架,用于快速构建和共享漂亮的机器学习和数据科学Web应用程序。在這個項目中用來搭建交互式的Web應用。

Jetson Copilt項目的安裝十分容易,只要執行以下代碼即可:

$ git clone https://github.com/NVIDIA-AI-IOT/jetson-copilot/

$ cd jetson-copilot  &&  ./setup_environment.sh

這裏的 setup_environment.sh 主要調試 docker 的一些環境,我們在前面的項目中已經執行過,其實可以忽略不執行。

如果想使用先前已經透過ollama管理器下載的模型資源,那麼在執行./launch_jetson_copilot.sh 腳本啓動整個 Jetson Copilot項目之前,最好先執行前面教過的啓動ollama容器的指令,如下:

$ jetson-containers run $(autotag ollama)

等到 ollama 管理器啓動之後,再開啓新的命令終端,執行以下指令:

$ cd jetson-copilot  &&  ./launch_jetson_copilot.sh

這個腳本會爲我們配置相關的環境變量,並且下載我們所需要的 dustynv/jetson-copilot:<版本> 鏡像文件。現在我們在 JetPack 6.0版本的Jetson Orin上執行時,這個<版本>就應該是 r36.3.0。

腳本中要求jetson-copilot所創建的容器中,首先就是檢查Ollama服務是否存在?如果不存在,就會下載獨立的dustynv/ollama容器,並且重新創建一個Ollama服務,如此一來,前面透過ollama pull所下載過的模型,就全部都用不上了,需要重新再下載一次,非常耗時費力。因此我們在前面提過,最好先啓動ollama服務器,這樣就能節省很多不必要的浪費,並且體現出兩種功能的結合。

這個腳本的最後會啓動 streamlit_app/app.py程序,裏面預設使用llama3大語言模型與mxbai-embed-large嵌入模型,啓動過程中如果發現缺少這些模型,就會直接啓動模型下載程序(如下圖)去下載缺少的元件,自動化程度相當高。

一切就緒之後,就會自動啓動瀏覽器,並跳出下面的操作畫面:

這時在命令框中會看到以下的信息:

表示我們在其他機器上,也能輸入<IP_OF_JETSON_COPILOT>:8501來使用這項應用。這裏可以非常輕易地切換Ollama已下載的模型,也可以點擊“Download a new LLM”選項去下載新的模型,請大家自行嘗試。

這裏的重點在於創建RAG應用,因此基礎的大模型對話就不多做嘗試。我們打開左邊“Use RAG”選項,就會看到其下方出現如下圖左邊的內容:

右圖是在jetson-copilot下的兩個對應文件目錄位置:

  • Documents(右邊):需要添加原始文件的地方;

  • Index(左邊):生成RAG Index的地方。

當我們點選“+Build a new index”時,就會進入下面畫面:

此時我們在“Local documents”那邊怎麼點擊也都沒有反應,因爲我們還沒有在Documents裏添加新的文件。現在我們在Documents裏新建langchain目錄,並且在下面添加7個pdf文件,然後按F5刷新頁面,就會看到如下內容:

這時再點擊“Local Documents”就有反應了。在這下面還有個可以輸入URL的框,每個URL用一行:

然後選擇左邊要使用的模型,這裏預設用mxbai-embed-large,在最上面給一個Index名稱,最後點擊最下面的“Build Index”,系統就會爲langchain建立RAG Index文件。

現在回到主畫面中,現在看看Index下面所出現的選項,與jetson-copilot下面的Index與Documents目錄中的內容比對一下,這樣就能掌握添加Index的方法。

選擇一個Index之後,再與智能助手進行互動,相信會有所不同的。至於使用RAG功能前後的差異,在這裏就不多贅述,由自己親手去體驗會更加有感覺。

最新:


GPUS开发者
在这里,你可以及时了解NVIDIA GPU的行业资讯、最新进展、应用场景和各项功能。还有一些工具、技巧和教程,帮助你利用GPU打造未来的科技。参与GPU世界举办的精彩活动,体验人工智能的未来生活。
 最新文章