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