Quipus,LightRag的Go版本的實現

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這一信息,避免了用戶對知識的不了解,而盲目進行溝通。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/901606.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/901606.shtml
英文地址,請注明出處:http://en.pswp.cn/news/901606.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql 8 支持直方圖

mysql 8 可以通過語句 ANALYZE TABLE table_name UPDATE HISTOGRAM ON column_name WITH 10 BUCKETS; 生產直方圖,解決索引數據傾斜的問題 在之前的mysql5.7的版本上是沒有的 參考: MySQL :: MySQL 8.0 Reference Manual :: 15.7.3.1 ANALYZE TABL…

力扣-hot100(最長連續序列 - Hash)

128. 最長連續序列 中等 給定一個未排序的整數數組 nums ,找出數字連續的最長序列(不要求序列元素在原數組中連續)的長度。 請你設計并實現時間復雜度為 O(n) 的算法解決此問題。 示例 1: 輸入:nums [100,4,200,…

RCEP框架下eBay日本站選品戰略重構:五維解析關稅紅利機遇

2024年RCEP深化實施背景下,亞太跨境電商生態迎來結構性變革。作為協定核心成員的日本市場,其跨境電商平臺正經歷新一輪價值重構。本文將聚焦eBay日本站,從政策解讀到實操路徑,系統拆解跨境賣家的戰略機遇。 一、關稅遞減機制下的…

Unity開發框架:輸入事件管理類

開發程序的時候經常會出現更改操作方式的情況&#xff0c;這種時候就需要將操作模式以事件的方式注冊到管理輸入事件的類中&#xff0c;方便可以隨時切換和調用 using System; using System.Collections.Generic; using UnityEngine;/// <summary> /// 記錄鼠標事件的的…

【kind管理腳本-2】腳本使用說明文檔 —— 便捷使用 kind 創建、刪除、管理集群腳本

當然可以&#xff0c;以下是為你這份 Kind 管理腳本寫的一份使用說明文檔&#xff0c;可作為 README.md 或內部文檔使用&#xff1a; &#x1f680; Kind 管理腳本說明文檔 本腳本是一個便捷的工具&#xff0c;幫助你快速創建、管理和診斷基于 Kind (Kubernetes IN Docker) 的…

opencv常用邊緣檢測算子示例

opencv常用邊緣檢測算子示例 1. Canny算子2. Sobel算子3. Scharr算子4. Laplacian算子5. 對比 1. Canny算子 從不同視覺對象中提取有用的結構信息并大大減少要處理的數據量的一種技術&#xff0c;檢測算法可以分為以下5個步驟&#xff1a; 噪聲過濾&#xff08;高斯濾波&…

Token安全存儲的幾種方式

文章目錄 1. EncryptedSharedPreferences示例代碼 2. SQLCipher示例代碼 3.使用 Android Keystore加密后存儲示例代碼1. 生成密鑰對2. 使用 KeystoreManager 代碼說明安全性建議加密后的幾種存儲方式1. 加密后采用 SharedPreferences存儲2. 加密后采用SQLite數據庫存儲1. Token…

MySQL數據庫表的約束類型和使用

表完整約束性 約束條件 說明 PRIMARY KEY (PK) 標識該字段為該表的主鍵&#xff0c;是可以唯一的標識記錄&#xff0c;不可以為空 UNIQUENOT NULL (primary key) FOREIGN KEY (FK) 標識該字段為該表的外鍵&#xff0c;實現表與表之間的關聯 (foreign key) NULL …

Java 線程詳解 --線程概念、線程池、線程同步與安全機制

一、Java線程的概念 Java 線程的本質&#xff1a;每個線程對應一個操作系統線程&#xff0c;由操作系統調度。JVM 通過調用操作系統 API&#xff08;如 Linux 的 pthread&#xff09;創建線程。 關鍵點&#xff1a; ? 用戶態與內核態&#xff1a;線程調度依賴操作系統&#…

PCL 計算點云至平面距離(SIMD加速)

文章目錄 一、簡介二、實現代碼三、實現效果一、簡介 SIMD 是一種并行計算模型,其中“單指令”表示處理器在同一時刻執行相同的指令,而“多數據”則表示同一條指令操作多個數據元素(如數組中的多個元素或矩陣中的多個元素)。與傳統的串行計算不同,SIMD 能夠同時處理多個數…

Ubuntu 22.04 完美安裝 ABAQUS 教程:從零到上手,解決兼容問題

教程概述與安裝準備 本教程詳細介紹了在 Ubuntu 22.04 系統上安裝 ABAQUS 2023 及 ifort 2021 的步驟,并實現用戶子程序的鏈接。教程同樣適用于 ABAQUS 2021(需相應調整文件名和路徑)以及 Ubuntu 18.04 至 22.04 系統,盡管未在所有版本上測試。需要注意的是,Intel 的 One…

Spark-TTS(Text-to-Speech):基于大語言模型的語音合成革新者!!!

Spark-TTS&#xff1a;基于大語言模型的語音合成革新者 &#x1f680; &#xff08;全稱解析 核心特性 行業影響全解讀&#xff09; 一、概念定義與技術定位 1. 英文全稱 Spark-TTS: An Efficient LLM-Based Text-to-Speech Model ? 關鍵詞解析&#xff1a; ? LLM-Based…

2025年十六屆藍橋杯Python B組原題及代碼解析

相關試題可以在洛谷上測試用例&#xff1a; 2025 十六屆 藍橋杯 Python B組 試題 A&#xff1a;攻擊次數 答案&#xff1a;103 print(103)代碼&#xff1a; # 初始化敵人的血量 x 2025# 初始化回合數 turn 0# 模擬攻擊過程 while x > 0:# 回合數加一turn 1# 第一個英…

Spring Boot項目中結合MyBatis實現MySQL的自動主從切換

原理解析 1. MySQL主從復制&#xff08;Master-Slave Replication&#xff09; 工作原理&#xff1a;MySQL主從復制通過二進制日志&#xff08;binary log&#xff09;來同步數據。主服務器記錄所有更改操作到二進制日志中&#xff0c;從服務器讀取這些日志并執行相應的SQL語…

【經驗記錄貼】使用配置文件提高項目的可維護性

mark一下。 整體修改前后如下&#xff1a; 課題&#xff1a; 在項目中有一個支持的文件類型的FILE_TYPE的定義&#xff0c; 這個是寫死在主程序中&#xff0c;每次增加可以支持的文件類型的時候&#xff0c;都需要去修改主程序中這個FILGE_TYPE的定義。 主程序修改其實不太花時…

用DeepSeek AI高效制作專業PPT

在當今職場中,制作精美而有力的PPT是展示想法、匯報工作和贏得機會的關鍵技能。然而,許多人花費過多時間在格式調整和內容組織上,而非專注于核心信息的傳達。DeepSeek AI作為新一代智能助手,能夠幫助您將PPT制作效率提升300%,同時顯著提高專業度。本文將詳細介紹如何利用D…

【AI學習從零至壹】語?模型及詞向量相關知識

語?模型及詞向量相關知識 ?然語?處理簡介?然語?理解&#xff08;NLU&#xff09;?然語??成&#xff08;NLG&#xff09;發展趨勢信息檢索技術布爾檢索與詞袋模型基于相關性的檢索 / TF-IDF舉例&#xff1a; 語?模型 / Language Model神經?絡語?模型Word2Vec訓練?法…

15.【.NET 8 實戰--孢子記賬--從單體到微服務--轉向微服務】--單體轉微服務--如何拆分單體

單體應用&#xff08;Monolithic Application&#xff09;是指將所有功能模塊集中在一個代碼庫中構建的應用程序。它通常是一個完整的、不可分割的整體&#xff0c;所有模塊共享相同的運行環境和數據庫。這種架構開發初期較為簡單&#xff0c;部署也較為方便&#xff0c;但隨著…

在ARM架構Mac上部署Python 3.12與Conda環境的全鏈路指南!!!

在ARM架構Mac上部署Python 3.12與Conda環境的全鏈路指南 &#x1f680; &#xff08;M1/M2芯片實測&#xff5c;含性能調優避坑手冊&#xff09; &#x1f31f; 核心價值點 ? 原生ARM支持&#xff1a;突破Rosetta轉譯的性能損耗 ? 環境隔離&#xff1a;Conda虛擬環境管理多…

yml文件上傳并映射到實體類

文章目錄 功能背景功能需要前端開發組件選用組件嵌套和參數綁定上傳邏輯示例 后端開發接收邏輯解析邏輯省流純手動實現&#xff08;不建議&#xff09; 功能背景 開發一個配置文件解析功能&#xff0c;需要兼容老版本的配置文件。 功能需要 前端&#xff1a;兩個配置文件分別…