這陣子有RAG的需求,之前用了ChromaDB後,覺得略有不足,包含:
* 資料要自己處理,尤其是PDF
* 如果Chroma要建立一個檢索+聊天系統,會需要額外編寫來構建
* 未有關鍵字出現頻率懲罰機制
後來搜尋後找到了兩個RAG工具: RAGFlow與Dify,我先試用的是RAGFlow,這邊就來詳細介紹
RAGflow有分多種版本,應該說是多種方案,有不含embedding版本、含embedding版本,向量資料庫也可以選擇Elasticsearch或Infinity,這邊就用含embedding版本(向量資料庫使用預設的Elasticsearch)
首先先到RAGflow Github下載RAGflow檔案
將下載後的zip解壓縮之後會看到一個ragflow資料夾,點開後可以看到各種檔案,我們要進入的是docker資料夾
這邊先展示等下要用的指令,分別是無embedding model
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/
pip3 install huggingface-hub nltk
python3 download_deps.py
docker build -f Dockerfile.slim -t infiniflow/ragflow:dev-slim .
與有embedding model
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/
pip3 install huggingface-hub nltk
python3 download_deps.py
docker build -f Dockerfile -t infiniflow/ragflow:dev .
兩者差別在Dockerfile為Dockerfile還是Dockerfile.slim
要執行這段必須用到pip3、python,所以要先到一個有pip3與python的地方,當然如果電腦全域環境有python與pip那可以直接在CMD執行,但我這台電腦沒有,因此藉由Anaconda來輔助運行
1. pip3 install huggingface-hub nltk
2. python3 download_deps.py,於ragflow資料夾執行這行
3. docker build -f Dockerfile -t infiniflow/ragflow:dev .,這步驟為下載模型,官方說有9G上下,要一陣子。
4. docker build -f Dockerfile -t infiniflow/ragflow:dev .,這步驟就是建立Img
5. docker compose up -d,之後進到docker資料夾執行這段,跑完這個就成功了。
於任意瀏覽器輸入localhost:80
,即可進入RAGflow介面,剛進去會需要創建帳號,但這是離線的,所以不須太在意帳號密碼的安全性(當然多使用例外)
成功後可進入此畫面
進來一一件事就是設定模型,沒有這個會無法使用RAGflow
RAGFlow聊天前必須先建立知識庫,點擊【創建知識庫】即可以創建知識庫,這邊重要的是要選對embedding model與正確的解析方法
之後即可上傳文件讓RAGflow依照設定的參數分析
解析完成後即可使用
有知識庫之後可以建立聊天助理,可以設定多種參數如系統提示語、模型名稱等參數
之後建立會話,即可開始使用RAGflow