1 項目簡介
奇譜系統當前版本以知識庫為核心,基于知識庫可以快構建自己的問答系統。知識庫的Rag模塊的構建算法是參考了LightRag的算法流程的Go版本優化實現,它可以幫助你快速、準確地構建自己的知識庫,搭建屬于自己的AI智能助手。與當前LLM項目以python為主不同,奇譜系統的開發語言使用golang進行開發。
項目位置:quipus: quipus 構建精彩世界
2 主要功能
-
支持知識庫的管理
- 支持知識庫的創建、更新、刪除和測試,
- 支持LightRag的Go版本實現的增強檢索服務
- 支持文件(pdf、doc、ppt、txt、html)的上傳和解析,支持向量切片、知識圖譜、知識總結、知識問答、知識檢索、知識生成功能
- 支持文件的增量更新
-
支持模型供應商管理、模型管理
- 支持ollma、openai、智譜、kimi、百度千帆、騰訊云(openai接口)、阿里云(openai接口)
- 支持供應商的添加、修改、刪除和測試
-
支持助手的添加、修改、刪除和測試
-
支持基于主題場景的對話:
- 支持基于場景的對話的創建、修改、刪除和測試
- 支持基于場景的對話的對話記錄的查看
- 支持基于場景的對話的對話記錄的導出
- 支持主題的知識庫的總結的話題的自動導入,更方便用戶進行對話
-
支持多租戶
- 支持成員的管理
- 支持成員角色的管理
- 支持成員的自注冊
- 支持微信用戶小程序登錄
3 編譯及打包
下載代碼
git clone https://gitee.com/quipus/quipus.git
編譯:
可以通過容器鏡像打包,可以修改docker.sh中的鏡像版本號:
cd script/build
docker.sh
若是在主機上直接部署可以通過make進行編譯
make qpc #編譯客戶端,可以通過qpc訪問命令行make qpd #編譯服務端之前,需要先到script/build目錄下執行front.sh編譯前端代碼
4 部署
docker-deployment目錄下執行
將docker-compose.yml中的容器鏡像改為上述編譯打包好的容器鏡像
執行docker-compose up -d,默認端口為7227,若需要改端口,則需要修改.env中的端口
5 使用
5.1 注冊登錄
用戶在登錄系統時,如果系統中沒有用戶信息,則自動創建賬戶信息。
第一個登錄本系統的用戶為系統管理員用戶
其他普通登錄的用戶為租戶管理員,通過子賬戶登錄,則為租戶中的子用戶。
5.2 模型設置
? ? 租戶管理員可以設置模型供應商和模型,模型供應商包括openai、 ollama、智譜、kimi、百度千帆、騰訊云(openai接口)、阿里云(openai接口)等,模型包括llama、chatglm等。模型供應商和模型可以用于生成知識庫中的知識,也可以用于生成知識庫中的知識問答。 設置的模型在租戶范圍內可見。 用戶首先創建模型供應商,然后基于模型供應商創建模型。當前的模型支持Chat和embedding,設置參數較為簡單,chat模型設置最大的token長度,embeding設置Dim的長度,以便在知識庫構建和知識召回時使用。 創建模型供應商時,每個供應商的參數會有所差異,基于當前系統設置好的模板進行選擇。系統設置的模型模板的路徑在etc/llm-provider目錄下。
5.3 設置助手
點擊側邊欄助手按鈕,可以見租戶范圍內的助手列表,助手創建者可以編輯或修改助手。 在設置助手時,用戶可以設置助手的名稱、描述、模型、提示詞。當前提示詞生成比較簡單,用戶輸入關鍵詞,點擊生成按鈕,系統會將關鍵詞交由LLM Model進行生成,生成后,用戶可以編輯提示詞。 用戶在設置時,可以設置是否同時生成虛擬人,虛擬人在本系統中是一個和用戶對等的智能體。虛擬人可以用于場景的對話。 在設置助手時,提供了調測的功能,用于測試prompt和模型是否滿足要求。
5.4 設置知識庫
點擊側邊欄知識庫按鈕,可以見租戶范圍內的知識庫列表,知識庫創建者可以編輯或修改知識庫。 用戶設置知識庫的基本信息和上傳文件。在構建時,需要用戶手工點擊構建按鈕,開始執行構建任務。構建可以全量更新和增量更新。增量更新,適用于用戶增量上傳文件后進行的構建更新。 用戶創建/編輯知識時,可以設置知識的構建類型分為以下三類:
- 向量分塊:分塊無論用戶是否選擇,都會執行分塊。當前分塊的默認配置在/etc/rag/rag.yaml中,通過chunk_token進行切分,程序讀取的文本達到chunk_token長度的3倍時,開始執行切分:首先計算最前面的chunk_token長度的文本的tokens的度,然后再按句子的進行計算每個句子的token度,并進行累加,若計算的tokens的長度達到了chunk_token時,則將上述的已計算的文本作為一個chunk塊。
- 知識圖譜:在分塊的基礎上,將每段文本交由LLM Model進行知識的提取,提取出實體、關系、屬性,構建知識圖譜。
- 知識總結:與標準的LightRag不同,奇譜提供了知識總結。在分塊的基礎上,將每段文本交由LLM Model進行知識的總結,提取出title和summary,構建知識總結。 用戶在構建完成后,可以對構建好的知識庫進行測試,測試時,用戶可以輸入測試文本,系統會返回測試結果。 在構建過程,記錄每一步的執行記錄,以便斷點續建。
5.5 設置虛擬人
用戶可以創建或修改自己的虛擬人,虛擬人可以綁定不同的助手,在當前虛擬人可以用于場景的對話。當前虛擬人只支持一個助手。在后續虛擬人可以支持多個助手。根據任務的需要,由多個助手協同完成任務。
5.6 主題場景
點擊側邊欄主題按鈕,可以見租戶范圍內的主題場景列表,場景創建者可以編輯或修改場景。
創建/修改主題場景:可以設置主題的名稱、描述、虛擬人、綁定的知識庫。在保存后,會自動將知識庫的知識庫總結的話題信息同步到主題場景中。
主題對話歷史列表:點擊對話過的歷史,會將該次對話的上下文信息同步到對話框中,用戶可以繼續對話。 主題對話:用戶輸入對話內容,系統會根據用戶輸入的內容,調用虛擬人的助手,將從知識庫根據用戶設置的交互模式從知識庫中進行知識召回,并交由LLM Model進行生成。 因此,用戶在使用這里的主題場景時,可以知識當前的主題包含的主要內容,問答可以更有針對性。
6 總結
從實現方式,與python實現的知識庫相比,奇譜本身的程序占用空間并不大。
與LightRag官方庫相比,在保留了基本實現過程基礎上,在實現過程中每個環節進行了一定的優化。并且增加了知識總結這一步驟。
在主題場景對話中,增加了topic這一信息,避免了用戶對知識的不了解,而盲目進行溝通。