# 前言 [Anything LLM](https://github.com/Mintplex-Labs/anything-llm)是Mintplex開發的一款整合any LLM API的開源平台,不管是OpenAI、Azure AOAI、Gemini、Huggingface、Ollama等,都可以直接透過至個平台上做使用。這個平台也整合了各種向量資料庫(Chroma、Qdrant、Pinecone、Weaviate、Milvus...),甚至是內建PDF解析、網頁爬蟲、YouTube影片分析,都能在這個平台上做到(真心佛)。 Anything LLM的出現大大降低AI應用的門檻,甚至不用親自寫code,就能做RAG的功能。雖說Mintplex是很佛心來著,讓比較沒基礎或非本科生的人能直接將LLM的功能應用最大化,但對於以此技術維生的工程師們也是殘忍,一口氣讓LLM的基本技能徹底貶值。 不過,畢竟在AI世界鬥爭的總是那幾間大集團,對我們這些不需參與競爭的工程師來說,真的是一大福音,接下來會詳細記錄如何從零開始架起Anything LLM。 由於Anything LLM是透過API key 呼叫各個LLM,因此用不到GPU,所以即使沒有超強顯示卡,也能在本機上架起(真的是太棒了)! Anything LLM提供多種方式啟動專案,而我選擇docker方式來執行。我的電腦為macbook 2015,因此會以我的環境做示範及記錄。 # STEP 1 安裝docker 由於我的電腦並未安裝docker,所以第一步先來安裝docker。我是跟著[菜鳥教程-MacOS Docker安裝](https://www.runoob.com/docker/macos-docker-install.html)直接透過Homebrew進行安裝,若沒有Homebrew這篇文章也有其他方法可以安裝。 ``` brew install --cask --appdir=/Applications docker ``` ==執行結果如下圖所示==,只要出現**successfully installed**就代表安裝成功囉! ![docker安裝結果](https://hackmd.io/_uploads/SkN69csbR.png) 可以透過```docker --version```再次確認是否能使用docker指令,結果如下圖。 ![docker version](https://hackmd.io/_uploads/S1qii9jZA.png) # STEP 2 安裝Anything LLM **新建文件夹anythingllm和子目錄** ``` mkdir ./volume1/docker/anythingllm/data ``` **進入anythingllm目錄** ``` cd ./volume1/docker/anythingllm ``` **新建env.txtx檔** ``` touch env.txt ``` **將環境設定寫入env.txt中** ``` SERVER_PORT=3001 STORAGE_DIR="/app/server/storage" UID='1000' GID='1000' ``` ==目前資料結構如下圖所示== ![資料結構](https://hackmd.io/_uploads/BktP6qjZR.png) **修改data目錄權限** ``` chmod -R 777 data ``` **修改env.txt文件權限** ``` chmod 777 env.txt ``` **安裝並運行AnythingLLM docker** ``` docker run -d \ --restart unless-stopped \ --cap-add SYS_ADMIN \ --name anythingllm \ -p 3014:3001 \ -v $(pwd)/data:/app/server/storage \ -v $(pwd)/env.txt:/app/server/.env \ mintplexlabs/anythingllm ``` ==NOTE:由於本機原本沒有anythingLLM,所以會先把這個docker pull下來,結果如下圖所示== ![docker pull](https://hackmd.io/_uploads/r1W1JjoZC.png) **透過```docker ps -a```查看docker狀態** ![docker status](https://hackmd.io/_uploads/H15m1ijbR.png) **瀏覽器輸入localhost:3014即可開始** ![image](https://hackmd.io/_uploads/HyKnkio-R.png) # STEP 3 初始設定 **選擇LLM模型,填寫URL、API KEY就能使用囉** ![image](https://hackmd.io/_uploads/H1bugjoZC.png) **選擇單人使用還是多人共用,多人使用時要建立管理者帳號** ![image](https://hackmd.io/_uploads/r1iqgjiZ0.png) **建立第一個WORKSPACE** ![image](https://hackmd.io/_uploads/SkrAxoi-C.png) **進入WORKSPACE之後就是標準的LLM介面** ![image](https://hackmd.io/_uploads/HkLxGsob0.png) # STEP 4 介面及使用說明 **上圖[1]為系統設定,在這可以調整LLM、Embedding模型和vector DB等** ![image](https://hackmd.io/_uploads/SJFEfsoWC.png) **上圖[2]為WORKSPACE的細節設定** ![image](https://hackmd.io/_uploads/rJeCzosZC.png) **上圖[3]為文件管理功能,在這可以上傳文件如PDF、txt、提供網址,甚至是YouTube影片位址。AnythingLLM在這會自動擷取文字內容,並轉成向量,是不是超方便!!!** ![image](https://hackmd.io/_uploads/SJ1WXjobA.png) **接著按```Move to Workspace```轉入,按```Save and Embedding```向量化並儲存 ![image](https://hackmd.io/_uploads/HyFCS2iWC.png) **記得把文件pin到Workspace** ![image](https://hackmd.io/_uploads/HJYlPhiZA.png) # STEP 5 進行測試囉 透過Anything LLM就能輕鬆體驗到RAG的功能了,且有附上Citation,如下圖所示: ![image](https://hackmd.io/_uploads/HJwvY2sbC.png) ==**NOTE:LLM的回答源自於以下段落,且內容有改寫**== ![image](https://hackmd.io/_uploads/SkzOqnsbA.png) 但從上圖的範例可以發現除了回答不準確之外,Citation也並不是很精準。由於我有將多個文件pin到Workspace,但其中一個Citation是與問題完全不相關的文件,因次這讓我懷疑RAG的真實性,以及是否是Embedding造成的問題。 # AnythingLLM 測試2 **我拿如何申辦ESTA舉例,比較有/無加入ESTA相關文件時,LLM的回覆是如何?** - 無ESTA相關文件(圖1) ![image](https://hackmd.io/_uploads/r1cM02jW0.png) - 有ESTA相關文件(圖2) ![image](https://hackmd.io/_uploads/SkxJa03o-0.png) - 正確答案(圖3) ![image](https://hackmd.io/_uploads/BJhJJTo-A.png) 從上面三張圖可以發現,圖1回覆是錯的($14 processing fee),而圖2加入相關文件後,的確修改成了正確答案($4 processing fee and $17 authorization fee),這也證實LLM的確會參考我們附上的文件。從這個測試可以發現使用英文文件與問答時,LLM表現較好,因此可以猜測到可能與Embedding有關。不過這兩個測試都有相同問題:**Citation錯誤**,這就讓我懷疑了RAG的真實性。 # 結論 Anything LLM的釋出的確讓我們能夠在地端架起整合多個LLM的聊天平台,不但可以上傳文件、爬蟲分析,還支援多使用者的管理。姑且不論效果如何,對於想整合LLM的一般使用者,門檻確實大幅降低;相對地,對於開發者來說,門檻也高了不少。整體來說,能透過一個平台就能體驗到RAG、vector DB等多種功能,對於一般想體驗的使用者來說,CP值還是滿高的,推薦可以玩玩看! # 參考資料 [AnythingLLM](https://github.com/Mintplex-Labs/anything-llm) [用AnythingLLM构建专属知识库 ](https://blog.csdn.net/wbsu2004/article/details/136614354)[包山包海的殺手級 LLM 整合平台 - Anything LLM](https://blog.darkthread.net/blog/anything-llm/)