ThinkRAG 大模型檢索增強生成系統,可以輕松部署在筆記本電腦上,實現本地知識庫智能問答。
該系統基于 LlamaIndex 和 Streamlit 構建,針對國內用戶在模型選擇、文本處理等諸多領域進行了優化。
1. 項目地址
ThinkRAG 在Github開源,使用 MIT 協議。你可以通過以下網址或點擊“閱讀原文”,獲取代碼和文檔,在筆記本電腦上運行和使用。
https://github.com/wzdavid/ThinkRAG
2. 模型支持
ThinkRAG 可使用 LlamaIndex 數據框架支持的所有模型。關于模型列表信息,請參考以下文檔。
https://docs.llamaindex.ai/en/stable/module_guides/models/llms/modules/
現在,RAG框架太多,好用的系統太少。
ThinkRAG致力于打造一個直接能用、有用、易用的應用系統。
因此,在各種模型、組件與技術上,我們做了精心的選擇與取舍。
首先,使用大模型,ThinkRAG支持OpenAI API 以及所有兼容的 LLM API,包括國內主流大模型廠商,例如:
智譜(Zhipu)
月之暗面(Moonshot )
深度求索(DeepSeek)
……
如果要本地化部署大模型,ThinkRAG 選用了簡單易用的 Ollama。我們可以從通過 Ollama 將大模型下載到本地運行。
目前 Ollama 支持幾乎所有主流大模型本地化部署,包括 Llama、Gemma、GLM 、Mistral、Phi、Llava等。具體可訪問以下 Ollama 官網了解。
https://ollama.com/
系統也使用了嵌入模型和重排模型,可支持來自 Hugging Face 的大多數模型。目前,ThinkRAG主要選用了BAAI的BGE系列模型。國內用戶可訪問如下網址了解和下載:
https://hf-mirror.com/BAAI
3. 系統特點
ThinkRAG 是為專業人士、科研人員、學生等知識工作者開發的大模型應用系統,可在筆記本電腦上直接使用,且知識庫數據都保存在電腦本地。
ThinkRAG具備以下特點:
LlamaIndex框架的完整應用
開發模式支持本地文件存儲,無需安裝任何數據庫
無需 GPU 支持,即可在筆記本電腦上運行
支持本地部署的模型和離線使用
特別地,ThinkRAG 還為國內用戶做了大量定制和優化:
使用 Spacy 文本分割器,更好地處理中文字符
采用中文標題增強功能
使用中文提示詞模板進行問答和細化過程
默認支持國內大模型廠商,如智譜、月之暗面和深度求索等
使用雙語嵌入模型,如 BAAI的bge-large-zh-v1.5
4. 快速開始
第1步 下載與安裝
從Github下載代碼后,用pip安裝所需組件。
pip3 install -r requirements.txt
若要離線運行系統,請首先從官網下載 Ollama。然后,使用 Ollama 命令下載如GLM、 Gemma 和 QWen 等大模型。
同步,從Hugging Face將嵌入模型(BAAI/bge-large-zh-v1.5)和重排模型(BAAI/bge-reranker-base)下載到 localmodels 目錄中。
具體步驟,可參考 docs 目錄下的文檔:HowToDownloadModels.md
https://github.com/wzdavid/ThinkRAG/blob/main/docs/HowToDownloadModels.md
第2步 系統配置
為了獲得更好的性能,推薦使用千億級參數的商用大模型 LLM API。
首先,從 LLM 服務商獲取 API 密鑰,配置如下環境變量。
ZHIPU_API_KEY = ''
MOONSHOT_API_KEY = ''
DEEPSEEK_API_KEY = ''
OPENAI_API_KEY = ''
你可以跳過這一步,在系統運行后,再通過應用界面配置 API 密鑰。
如果選擇使用其中一個或多個 LLM API,請在 config.py 配置文件中刪除不再使用的服務商。
當然,你也可以在配置文件中,添加兼容 OpenAI API 的其他服務商。
ThinkRAG 默認以開發模式運行。在此模式下,系統使用本地文件存儲,你不需要安裝任何數據庫。
若要切換到生產模式,你可以按照以下方式配置環境變量。
THINKRAG_ENV = production
在生產模式下,系統使用向量數據庫 Chroma 和鍵值數據庫 Redis。
如果你沒有安裝 Redis,建議通過 Docker 安裝,或使用已有的 Redis 實例。請在 config.py 文件里,配置 Redis 實例的參數信息。
第3步 運行系統
現在,你已經準備好運行 ThinkRAG。
請在包含 app.py 文件的目錄中運行以下命令。
streamlit run app.py
系統將運行,并在瀏覽器上自動打開以下網址,展示應用界面。
http://localhost:8501/
第一次運行可能會需要等待片刻。如果沒有提前下載 Hugging Face 上的嵌入模型,系統還會自動下載模型,將需要等待更長時間。
5. 使用指南
(1)系統配置
ThinkRAG 支持在用戶界面,對大模型進行配置與選擇,包括:大模型 LLM API 的 Base URL 和 API 密鑰,并可以選擇使用的具體模型,例如:智譜的 glm-4。
系統將自動檢測 API 和密鑰是否可用,若可用則在底部用綠色文字,顯示當前選擇的大模型實例。
同樣,系統可以自動獲取 Ollama 下載的模型,用戶可以在用戶界面上選擇所需的模型。
若你已經將嵌入模型和重排模型下載到本地 localmodels 目錄下。在用戶界面上,可以切換選擇使用的模型,并設置重排模型的參數,比如 Top N。
在左側導航欄,點擊高級設置(Settings-Advanced),你還可以對下列參數進行設置:
Top K
Temperature
System Prompt
Response Mode
通過使用不同參數,我們可以對比大模型輸出結果,找到最有效的參數組合。
(2)管理知識庫
ThinkRAG 支持上傳 PDF、DOCX、PPTX 等各類文件,也支持上傳網頁 URL。
點擊 Browse files 按鈕,選擇電腦上的文件,然后點擊 Load 按鈕加載,此時會列出所有加載的文件。
然后,點擊 Save 按鈕,系統會對文件進行處理,包括文本分割和嵌入,保存到知識庫中。
同樣,你可以輸入或粘貼網頁 URL,獲取網頁信息,處理后保存到知識庫中。
系統支持對知識庫進行管理。
如上圖所示,ThinkRAG 可以分頁列出,知識庫中所有的文檔。
選擇要刪除的文檔,將出現 Delete selected documents 按鈕,點擊該按鈕可以將文檔從知識庫中刪除。
(3)智能問答
在左側導航欄,點擊 Query,將會出現智能問答頁面。
輸入問題后,系統會對知識庫進行檢索,并給出回答。在這個過程當中,系統將采用混合檢索和重排等技術,從知識庫獲取準確的內容。
例如,我們已經在知識庫中上傳了一個 Word 文檔:“大衛說流程.docx“。
現在輸入問題:”流程有哪三個特征?”
如圖所示,系統用時2.49秒,給出了準確的回答:流程具備目標性、重復性與過程性。同時,系統還給出了從知識庫檢索到的2個相關文檔。
可以看到,ThinkRAG 完整和有效地實現了,基于本地知識庫的大模型檢索增強生成的功能。
6. 技術架構
ThinkRAG 采用 LlamaIndex 數據框架開發,前端使用Streamlit。系統的開發模式和生產模式,分別選用了不同的技術組件,如下表所示:
開發模式 | 生產模式 | |
RAG框架 | LlamaIndex | LlamaIndex |
前端框架 | Streamlit | Streamlit |
嵌入模型 | BAAI/bge-small-zh-v1.5 | BAAI/bge-large-zh-v1.5 |
重排模型 | BAAI/bge-reranker-base | BAAI/bge-reranker-large |
文本分割器 | SentenceSplitter | SpacyTextSplitter |
對話存儲 | SimpleChatStore | Redis |
文檔存儲 | SimpleDocumentStore | Redis |
索引存儲 | SimpleIndexStore | Redis |
向量存儲 | SimpleVectorStore | Chroma |
這些技術組件,按照前端、框架、大模型、工具、存儲、基礎設施,這六個部分進行架構設計。
如下圖所示:
可參考在《大模型應用架構設計》一文,了解架構與技術細節。
7. 后續開發計劃
ThinkRAG 將繼續優化核心功能,持續提升檢索的效率和準確性,主要包括:
優化對文檔和網頁的處理,支持多模態知識庫和多模態檢索
構建知識圖譜,通過知識圖譜增強檢索,并基于圖進行推理
通過智能體處理復雜場景,尤其是準確調用其他工具和數據,完成任務
同時,我們還將進一步完善應用架構、提升用戶體驗,主要包括:
設計:有設計感和極佳用戶體驗的用戶界面
前端:基于Electron、React、Vite等技術,構建桌面客戶端應用,為用戶提供極致簡潔的下載、安裝和運行方式
后端:通過FastAPI提供接口,以及消息隊列等技術提升整體性能和可擴展性
好事即將發生。
如你有興趣,歡迎加入 ThinkRAG 開源項目,一起打造用戶喜愛的 AI 產品!請在公眾號留言。
感謝你的持續關注與支持!