之前試過用 Chatty GPT 打造個人專屬 ChatGPT 聊天室,但受限只能在本機桌面跑,無法多人使用。後來試了自架 Chatbot UI 伺服器因綁了 Supabase 太笨重,想等作者改 SQLite 版再用。

現在看來不用等 Chatbot UI 了! 有個包山包海的殺手級 LLM 整合平台開源專案 - Anything LLM,一口氣通吃所有 LLM API (ChatGPT、Azure OpenAI、Gemini、Hugging Face、Anthropic、Groq、Ollama... )、整進各大向量資料庫 (Chroma、Qdrant、Pinecone、Weaviate、Milvus...),甚至內建上傳 PDF 解析、爬網頁、掃 YouTube 影片... 等文字擷取及向量化功能,直接包辦 RAG 的活兒。把這些全部整進一個聊天介面,還支援多使用者管理,能設定誰可以用哪些 LLM 功能... 一口氣把大部分想得到的 LLM 整合功能都包進去了,大家還玩什麼?
(讀者提醒:目前有一大塊還沒被包進去 - 整合外部資料或控制外部裝罝的 PluginAgent。但該不會 Anything LLM 己在研發中?)

Anything LLM 採 MIT 授權,下幾行指令跑個 Docker 容器,幾分鐘便能架好一台多人共用的 LLM 聊天網站,背後可以接 ChatGPT 也可以接地端 LLM,還能上傳 PDF 抓網頁玩 RAG,完全免費。基本上要做簡單 LLM 整合應用,不必求人,不用寫程式,稍具 Docker 與 LLM 知識即可輕鬆搞定,傻瓜到極點。Mintplex Labs這間公司真是佛心來著,但說來也算心狠手辣,Anything LLM 一口氣讓 LLM 基本技能徹底貶值,這下子你得研究到更深才能有點價值,內捲又內捲,捲到最高點。

以下是我的安裝測試體驗筆記。(參考來源:國網中心莊朝鈞研究員線上課程 - 大型語言模型-中階/基於RAG方案的專屬私有知識庫服務網站建置)

我選擇用以下 Docker Compose 檔案執行 Anything LLM。

docker-compose.yml

version: '3.8'
services:
  anythingllm:
    image: mintplexlabs/anythingllm
    container_name: anythingllm
    ports:
      - "3001:3001"
    volumes:
      - ./storage:/app/server/storage
      - ./env.txt:/app/server/.env
    environment:
      - STORAGE_DIR=/app/server/storage
    cap_add:
      - SYS_ADMIN
    extra_hosts:
      - "host.docker.internal:host-gateway"
    restart: unless-stopped

執行前先 touch ./env.txt.\mkdir storage 建好檔案及資料夾,接著用 sudo docker-compose up -d 啟動容器,開瀏覽器連上 http://localhost:3001 即可開始使用。

首次使用要先做初始設定:

先選預設 LLM 模型,清單把當今的主流 LLM 一網打盡,填一下 URL、API Key 就能用:

選擇 Embedding 服務,AnythingLLM 有內建自己的版本:(延伸閱讀:動手玩 AI - 使用 OpenAI Embedding 模型比對文字相似性)

接著選向量資料庫,預設可用免安裝的 LanceDB:(延伸閱讀:YT 筆記:向量資料庫概念科普)

再來選擇單人使用還是多人共用,多人使用時要建立管理者帳號:

接著系統提醒你 LLM、Embedding、向量資料庫的資料流向,告知哪些會上雲哪些在本地:

再來建立第一個 Workspace:

進入 Workspace,就是個標準 LLM 聊天介面,大家應能無痛上手:

上圖 [1] 按下去是系統設定,其中 Users 功能可新增及管理使用者:

Workspace 聊天畫面的 [2] 為 Workspace 設定,Members 頁籤可指定哪些使用者可使用:

Workspace 聊天畫面的 [3] 按下去會帶出文件管理功能,你可以上傳 PDF、提供網址,甚至 YouTube 影片位址,讓 Anything LLM 擷取文字內容轉成向量供後續查詢:

按 Move to Workspace 轉入後,按 Save and Embbed 向量化:

處理好記得按圖釘啟用文件:

用上回小試 RAG - 整合 ChatGPT 與自有資料 (駕駛人手冊實測) 的 PDF 測試,成功查到答案,並有附上出處 (Citation):

原始來源應來自 PDF 這段,回答內容有被大幅改寫:

引用來源 (Citation) 顯示的內容也不算精準:

但可算是成功由自訂文件查到內容,達成 RAG 的基本要求。

【結論】

靠著 Anything LLM,我們可以無腦架出好一個整合 ChatGPT 或地端 LLM 模型的聊天伺服器,不但內建上傳 PDF、爬網功能,還支援多使用者管理,可滿足基本 RAG 應用需求。對於想玩 LLM 整合的一般使用者來說,門檻一下變低了;而對於想投身 LLM 整合應用的開發者來說,門檻一下變高了。功能與效果不如 Anything LLM,你還玩屁?

好捲啊~~~ 我還是躺平好了。


Comments

# by Nick Yang

它看似沒有copilot的功能.

# by 小森森

已在研發中。

# by Jackson3716

可以丟民法給他看,然後再問他實際案例,會用到哪幾條民法嗎 (RAG)

# by c

文件 pin 起來只是丟進去 prompt,不是 RAG。

# by Hank

以前有用過法條做 RAG 但效果很差,回答的答案不忍卒賭 不確定是模型對中文支援度差的問題? 還是RAG/向量資料庫的問題?

# by Jeffrey

to Hank, 請教使用的 LLM 跟向量資料庫?除了向量相似度有加入其他檢索演算法(如:BM25、TF-IDF )?

# by Hank

模型是使用 mistral-7b-instruct-v0.1.Q4_K_M.gguf embedding 使用 all-MiniLM-L6-v2 向量資料庫是使用 Chroma (langchain.vectorstores) 沒有加入其他檢索演算法 模型回答的結果如下圖,感覺就是一本正經的胡說八道 https://trendnews.sodomcode.com/files/law_rag.png 自己是有在懷疑,是否一般的 LLM 在分析法條類的資料比較弱? 畢竟法律用語跟一般的中文還是不太一樣

# by Jeffrey

to Hank,感謝分享經驗。 品質不好是否為 LLM 的鍋,倒有個方法可以驗證。 從 Chroma 查到的結果最後會組進 Prompt 交給 mistral 產生最終回答,若能取出最終 Prompt 拿給 ChatGPT 或其他 LLM 生成,看看品質是否變好便能判斷是否 mistral 不夠力。

# by jimmy

請問要怎麼做到多人共用網站,我指的是在f其他電腦上輸入http://localhost:3001 登入到網站上?

# by Jeffrey

to Jimmy, 標準做法是透過 Reverse Proxy 接受外部連線,可以考慮 Nginx Docker 或其他提供 GUI 管理介面的解決方案: * HTTPS Nginx Docker 之懶人安裝法 https://blog.darkthread.net/blog/nginx-certbot-auto-setup/ * 為 Nginx 提供友善管理介面與自動化 HTTPS - Nginx Proxy Manager https://blog.darkthread.net/blog/nginx-proxy-manager/ * 自動化 HTTPS 網站伺服器 - Caddy Server https://blog.darkthread.net/blog/caddy-server/

# by Ben

thx

# by Carlos

您好,請問一下若是要用http://localhost:3001 並指定用哪一個WORKSPACE時,要如何設定?謝謝。

# by Jeffrey

to Carlos, 你是說透過 URL 開啟指定 Workspace?URL 寫 localhost:3001/workspace/<your_workspace_name> 應該就可以了。

# by Yu

您好,我正在嘗試使用ubuntu 24.04 + docker 啟動Anything LLM 但在發送request時會出現An error occurred while streaming response. network error. 請問您有遇過類似的問題,或是提供小弟一些解決方案嗎?

# by Bill YU

上傳檔案後 釘選,回到對話框之後就無法對話,直接顯示這樣,是上傳的檔案有問題嗎? Could not respond to message. LanceDBError: LanceError(IO): Query vector must have non-zero length, C:\Users\runneradmin\.cargo\registry\src\index.crates.io-6f17d22bba15001f\lance-0.9.18\src\dataset\scanner.rs:378:27

# by Jeffrey

to Yu, 由訊息像是連不上伺服器,建議用瀏覽器 F12 開發者工具觀察網路傳輸,看是呼叫哪個 URL 時出錯。

# by Jeffrey

to Bill YU, 想到的調查方向是換個檔案上傳看看,若只有特定檔案會出錯,那有可能真的是踩到 Bug 了。

# by Yu

黑大您好,能不能請您提供撰文當下的作業環境讓我做參考? 我目前是使用ubuntu 24.04 + docker engine community 26.1.1執行。 在工作區發送一筆訊息後,container就停止運作了, 看了一下docker logs顯示 /usr/local/bin/docker-entrypoint.sh: line 7: 115 Illegal instructions (core dumped) node /app/server/index.js 不太確定問題出在哪裡..Qwq

# by Yu

黑大您好,非常感謝您的回覆!! 我也有看到這篇issue,使用與Docker v4.30.0相同版本的Docker Engine v26.1.1,但問題依樣沒有解決。 後來嘗試透過azure VM 跑,可以順利執行。

# by thomas

針對 發送request時會出現An error occurred while streaming response. network error. 問題 我在vmware 安裝沒問題 在PVE安裝後會出現上述問題,cpu 也改了 HOST 沒改善 我都是安裝乾淨的ubuntu server 22.0 + Docker 標準安裝 + Anythingllm

# by EENDR

試著餵了一些簡單的銷售數據,但不論比大小或加總數據都是錯誤的 不知道是不是哪裡還需要調整? 謝謝

Post a comment