一.本地部署Deepseek
Ollama 介紹
目前市面上主流的,成本最低的部署本地大模型的方法就是通過 Ollama 了:
Ollama
是一個開源的本地大語言模型運行框架,專為在本地機器上便捷部署和運行大型語言模型(LLM)而設計。
核心功能:
- 簡化部署:
Ollama
簡化了在 Docker 容器中部署大型語言模型的過程,即使是非專業用戶也能輕松管理和運行這些復雜的模型。 - 模型管理:支持多種流行的大型語言模型,如
Llama、Falcon
等,并提供豐富的命令行工具和用戶友好的WebUI
界面。 - 模型定制:用戶可以通過
Modelfile
文件自定義模型參數和行為,實現模型的個性化設置。
技術優勢:
- 輕量級與可擴展:
Ollama
保持較小的資源占用,同時具備良好的可擴展性,允許用戶根據硬件條件和項目需求進行優化。 - API 支持:提供簡潔的 API 接口,方便開發者集成到各種應用程序中。
- 兼容
OpenAI
接口:Ollama
支持OpenAI
的 API 標準,可以作為OpenAI
的私有化部署方案。
使用場景:
- 本地開發:開發者可以在本地環境中快速部署和測試大型語言模型,無需依賴云端服務。
- 數據隱私保護:用戶可以在本地運行模型,確保數據不離開本地設備,從而提高數據處理的隱私性和安全性。
- 多平臺支持:
Ollama
支持macOS、Windows、Linux
以及Docker
容器,具有廣泛的適用性。
Ollama
的目標是讓大型語言模型的使用更加簡單、高效和靈活,無論是對于開發者還是終端用戶。
Ollama 安裝和使用
Ollama
的下載和安裝非常簡單,尤其是對于 MAC 用戶:
打開瀏覽器,訪問 Ollama
官方網站:https://ollama.com/download
,下載適的安裝包。
下載完成后,直接雙擊安裝包并按照提示完成安裝。
安裝完成后,我們直接打開命令行執行 ollama --version
判斷是否安裝成功:
ollama
會在我們本地服務監聽 11434 端口:
然后我們可以直接使用 ollama run 模型名稱
來下載和運行我們想要的模型。
Ollama 支持的模型
ollama
支持的模型列表,我們可以到 https://ollama.com/search 查看:
另外 ollama
還支持下面這些主流模型:在模型詳情頁我們可以看到目前支持的模型的不同版本(具體的參數含義我們在上見介紹過了),包括每個模型展用的磁盤大小:注意這里不是說你磁盤有這么大就夠了,滿血版(671b)雖然只需要 404GB 的磁盤空間,對內存、顯卡、CPU 等其他硬件也有極高要求。
我試了下,我的設備比較垃圾,最多只能帶動7b、14b 這些。
然后,直接在控制臺使用 ollama run 模型名稱
來下載我們想要的模型就可以了:
下載完成后可以直接在命令行運行:
目前我們已經擁有了一個基礎的本地模型,但是這種交互方式太不友好了,下面我們通過一些工具來提升我們本地模型的使用體驗。
二.Chatbox客戶端
Chatbox客戶端 + Ollama - 交互
目前市面上有很多可以在本地與 AI 模型交互的客戶端,我認為做的較好的還是 Chatbox
。
Chatbox 的安裝和使用
Chatbox
是一款開源的 AI 客戶端,專為與各種大型語言模型進行交互而設計。它支持包括 Ollama 在內的多種主流模型的 API 接入,無論是本地部署的模型,還是其他服務提供商的模型,都能輕松連接。此外,Chatbox 提供了簡潔直觀的圖形界面,讓用戶無需復雜的命令行操作,就能與模型進行流暢的對話。它支持了目前市面上所有主流模型,并且兼容多個平臺,交互體驗也比較好,目前在 Github 上已經有接近 29K Star
。
使用方式也比較簡單,官方(https://chatboxai.app/zh)直接下載適合你系統的客戶端:
下載后打開客戶端,模型提供方選擇 Ollama API
,API 域名就是我們上面提到了本地 11434 端口的服務,另外它可以自動識別你的電腦上已經通過 Ollama
安裝的模型:
然后就可以在聊天窗選擇到你的本地模型了:
三.Anything LLM 客戶端-打通本地知識庫
RAG 架構介紹
RAG
(Retrieval-Augmented Generation,檢索增強生成)是一種結合信息檢索與生成模型的人工智能技術,旨在通過檢索外部知識庫中的信息來增強語言模型的生成能力。
有點抽象,簡單來說就是一種讓 AI 更聰明回答問題的方法,它分為三個步驟:找資料、整理資料和回答問題。首先,它會在一個知識庫(就像一個裝滿資料的書架)里找到和問題相關的部分;然后,把找到的內容整理成簡單易懂的形式;最后,用整理好的內容生成一個清晰準確的回答。這種方法讓機器的回答更準確、更有依據,還能隨時更新知識庫,用最新的信息來回答問題。
在這個架構圖里,主要有三個概念:LLM
(Large Language Model,大語言模型)、Embedding
(嵌入)和 Vector Database
(向量數據庫),這三個概念大家最好了解一下,因為后面工具的使用就是圍繞這三個概念來的,LLM 就不用多說了,主要看另外兩個概念:
- Embedding(嵌入):通過一個專門的模型來把你上傳的文本、表格數據等本地文件處理成機器能理解的 “數字代碼”。相似的文本在這個向量空間中距離會更近。比如,“蘋果”和“水果”這兩個詞的嵌入向量就會比較接近,而“蘋果”和“汽車”就會離得很遠。
- Vector Database(向量數據庫):用來存儲上一步處理好的 “數字代碼” 的數據庫,它能夠高效地存儲和檢索這些向量。當你有一個問題時,它會把問題轉換成向量,然后在這個倉庫里快速找到和問題最相關的向量。比如,你問“蘋果是什么?”它會在這個倉庫里找到和“蘋果”相關的向量,比如“水果”“紅色”“圓形”等。
那這三個概念的協作就組成了 RAG
架構:
- 檢索(Retrieve):當用戶提出一個問題時,首先通過 Embedding 模型將問題轉換成向量,然后在 Vector Database 中檢索與問題向量最相似的文檔向量。這一步就像是在圖書館里找到和問題最相關的書籍。
- 增強(Augment):檢索到的文檔向量會被提取出來,作為上下文信息,和原始問題一起輸入到 LLM 中。這一步就像是把找到的書里的關鍵內容摘抄下來,整理成一個簡潔的筆記,然后交給寫作助手。
- 生成(Generate):LLM 根據整理好的上下文信息,生成一個準確且連貫的回答。這一步就像是寫作助手根據筆記,寫出一個完整的、讓人容易理解的答案。
Anything LLM 的安裝和使用
這里我們用到的工具叫 Anything LLM
。
Anything LLM
是一款基于 RAG
架構的本地知識庫工具,能夠將文檔、網頁等數據源與本地運行的大語言模型(LLM
)相結合,構建個性化的知識庫問答系統。它支持多種主流模型的 API
接入方式,如 OpenAI、DeepSeek
等。
安裝使用的方式也比較簡單,我們直接訪問 Anything LLM
的官方網站:https://anythingllm.com/desktop,選擇適合你操作系統的版本進行下載。
下載完成后,運行安裝包并按照提示完成安裝,安裝完成后,打開 Anything LLM
應用,第一步就是選擇大模型,這里我們看到 AnythingLLM
同樣支持大部分的主流模型提供商,我們選擇 Ollama
,工具會自動讀取我們本地已經安裝的模型:
然后下一步應該是選擇前面我們提到的 Embedding
(嵌入模型)和 Vector Database
(向量數據庫),由于我之前選擇過了,所以這里默認記住了我之前的選項,然后向量數據庫我們也選擇默認的 LanceDB
,它也是完全運行在本地且免費的。
嵌入模型其實也非常重要,它處理的準確性直接決定了基于知識庫回答的準確度,我們可以看到 OPEN AI
也提供了嵌入模型,而且 OPEN AI
的嵌入模型目前應該是最強大的,但是 OPEN AI
的嵌入模型需要聯網和付費。我們這里先選的是默認的 AnythingLLM 提供的嵌入模型,它是完全運行在本地且免費的嵌入模型,當然準確度就比較一般了。
然后進來就是一些引導話術,我們可以到設置里先把語言改為中文:
Anything LLM 設置知識庫
知識庫的質量其實也直接決定了模型基于知識庫回答的效果,AI 友好的知識庫結構,首先應層次清晰,按主題、領域或功能分類,建立從概括到具體的合理層級,像圖書館分類擺放書籍;還要易于檢索,有精準關鍵詞索引、全文檢索功能和智能聯想,方便快速定位知識;并且通過知識圖譜、交叉引用建立數據關聯,形成知識網絡。
準備知識庫數據:這里我隨便搞了點數據:
然后我們點擊工作區的上傳圖標:
Anything LLM
支持上傳多種類型的文件,包括常見的文本文件(如 TXT、Markdown
)、文檔文件(如 PDF、Word、PPT、Excel
)、數據文件(如 CSV、JSON
) 等等:
把準備的知識庫文件上傳上去,并且添加到當前工作區,點擊保存:
然后我們測試一下:
另外 Anything LLM
還支持直接貼網頁鏈接來構建知識庫,我們嘗試貼一個 Vue 的文檔進去:
效果也是可以的:
不過網頁一般都屬于非結構化的數據,不利于模型檢索,推薦還是先在本地處理成 AI 友好的格式再上傳,效果更好。
Anything LLM 也可以聯網
另外, Anything LLM
本身還提供了非常強大的 Agent 能力,例如網頁深度抓取、生成圖表、鏈接 SQL 數據庫、等等。
當然也支持 Web 搜索的 Agent
,測試的話推薦大家選 SearXNG
和 DuckDuckGo
兩個免費的搜索引擎,當然效果不如付費的 Google、Bing
的要好。
下面我們測試一下,在聊天區打出 @ 就可以調起 agent:
現在,你擁有了一個帶本地知識庫的本地大模型,完全不用擔心信息泄漏、卡頓、付費等問題。
Anything LLM 的 API 調用
但是,在客戶端下使用還是太局限了,Anything LLM 還提供了 API 調用的能力,這樣我們就可以通過代碼來靈活定制我們的使用場景,可以做很多事情,比如:私人知識管理工具、企業內部智能客服等等。
在開始 API 調用之前,我們先要明確 Anything LLM 的兩個核心概念:
- Workspace:一個獨立的環境,用于存儲和管理與特定主題或項目相關的文件和數據。用戶可以在工作區中上傳文件、配置參數,并與模型進行交互。每個工作區的數據是獨立的,互不干擾,方便用戶對不同主題或項目進行分類管理。
- Thread:工作區中的一次具體對話記錄,代表用戶與模型之間的一系列交互。它會記錄用戶的問題和模型的回答,保持對話的連貫性。用戶可以在一個工作區中創建多個線程,分別處理不同的問題或任務,方便管理和追溯每次對話的內容。
我們可以在設置 - 工具 - API 密鑰下創建 API 密鑰,并且查看 Anything LLM 提供的 API 文檔:
可以看到, Anything LLM
提了非常詳細的 API,基本上客戶端內能做的事情都能使用 API 調用,包括各種設置、知識庫上傳、與大模型交互等等 ,點開每個 API 可以看到具體的參數詳情,也可以直接測試調用:
復制創建好的API 秘鑰到這里
調用獲取workspace的方法獲得workspace的slug
最常用的當然就是和大模型聊天的接口,因為 Anything LLM
中與大模型的交互都發生在 Workspace
下的 Thread
中:
Anything LLM
在本地啟動的端口默認是 3001 ,關鍵參數:apiToken
、slug
和 threadSlug
我們看到關鍵的兩個參數是 slug
和 threadSlug
,其實這兩個參數就分別代表 Workspace
和 Thread
的唯一標識,在客戶端我們是看不到這兩個標識的,我們可以通過接口創建新的 Workspace
和 Thread
來獲取,或者通過接口查詢已有的 Workspace
和 Thread
的 slug
: