LLL開發平臺「畢昇」實測:令人驚豔的溯源定位功能 / LLL Development Platform "BISHEN" Hands-On: Impressive Source Locating Function
雖然大家都知道RAG可以將檢索結果交給大型語言模型回答,不過到底交給大型語言模型的是那些檢索結果?這些檢索結果又對應到那些文件?LLM開發平臺「畢昇」在檢索功能漂亮地解決了上述的問題,應可成為RAG應用中值得參考的標杆。
While everyone knows that RAG can submit retrieval results to large language models (LLMs), what exactly are those retrieval results submitted to LLMs? And which documents do these retrieval results correspond to? The LLM development platform, BISHENG, elegantly addresses these questions in its retrieval function and can serve as a valuable benchmark for RAG applications.
畢昇:大型語言模型開發平台 / Bisheng, LLM Development Platform
https://github.com/dataelement/bisheng
畢昇是一個開源的大型語言模型 (LLM) 應用開發平台,由北京數據項素智能科技有限公司開發,並以Apache 2.0授權。畢昇目標是讓 LLM 應用開發更快速落地,幫助使用者更有效率地進入新一代的應用開發模式。畢昇的名字取自活字印刷術的發明人,象徵這個平台如同活字印刷一樣,具有革新知識傳播的潛力。
畢昇平台提供豐富且完整的功能,包含生成式 AI 工作流程、基於檢索的生成 (RAG, Retrieval Augmented Generation)、代理 (Agent)、統一模型管理、評估、監督式微調 (SFT, Supervised Fine-Tuning)、資料集管理、企業級系統管理、可觀察性等等,致力於簡化開發流程並提升效率。
測試網站 / Demo Site
如果想要測試畢昇的效果,可以直接到此網址,用帳號跟密碼就能夠申請。我雖然也用Docker成功將畢昇架設起來,但功能跟測試網站有不少落差。以下我們先用測試網站來看看畢昇能作什麼。
主要功能概述 / Features
畢昇的主要功能從左邊導覽列可以進入。主要功能有六項:
- 會話:使用建構好的應用程式。
- 構建:將模型跟知識結合成應用程式。
- 知識:上傳文件成為可供檢索的知識庫。
- 模型:連接不同的模型提供者。
- 評測:將建構好的技能或助手,用特定資料集來評估。主要是研究用。
- 標註:將對話記錄進行標註與整理。
詳細的功能可以參考「全量功能列表」。以下我用自己的理解來介紹模型、知識、構建跟會話功能。
模型 / Model
在「模型」功能裡面,畢昇支援多種不同的模型提供方。此頁面的模型設定包含了大型語言模型llm跟文本嵌入模型embedding在內。大部分的模型都是來自中國的模型服務,包括百度千帆、阿里百煉、還有熱門的DeepSeek。國際的模型服務主要只能用OpenAI。自行架設的模型服務提供方主要是ollama。值得注意的是,Google系列的模型、Hugging Face API預設都不支援。因此,在使用畢昇之前,必須要先評估自己可用的模型服務。當然,測試網站可以使用畢昇提供的模型。
作為LLM開發平臺,我們也可以在畢昇裡面直接微調模型。這是畢昇另一個相關的專案bisheng-ft的整合成果。bisheng-ft是基於LLaMA-Factory重整的模型微調工具。開發者可以用網頁選擇基礎模型、設定訓練資料集、設定訓練參數來進行訓練。
訓練的資料集格式如下:
[
{
"instruction":"用户指令(必填)",
"input":"用户输入(选填)",
"output":"模型回答(必填)",
"history":[
[
"第一轮指令(选填)",
"第一轮回答(选填)"
],
[
"第二轮指令(选填)",
"第二轮回答(选填)"
]
]
},
{
"instruction":"用户指令(必填)",
"input":"用户输入(选填)",
"output":"模型回答(必填)",
"history":[
[
"第一轮指令(选填)",
"第一轮回答(选填)"
],
[
"第二轮指令(选填)",
"第二轮回答(选填)"
]
]
}
]
實際例子如下:
[
{
"instruction":"Give three tips for staying healthy.",
"input":"",
"output":"1.Eat a balanced diet and make sure to include plenty of fruits and vegetables. \n2. Exercise regularly to keep your body active and strong. \n3. Get enough sleep and maintain a consistent sleep schedule."
},
{
"instruction":"What are the three primary colors?",
"input":"",
"output":"The three primary colors are red, blue, and yellow."
}
]
知識 / Knowledge
畢昇的知識功能可讓人上傳文件檔案,以此作為RAG服務的知識來源。
知識設定的重點也是擺在分段(chunking)策略上。這點與其他的RAG系統相差不大。但畢昇在簡單的前端設定背後,其實有著非常複雜的架構。
https://dataelem.feishu.cn/wiki/Ic7Gw2GyMiAZzqkVHfWcc78Znxg
畢昇在處理上傳到知識的檔案時,使用了不同的組件來分析檔案內容。測試網站的版本是結合了bisheng-unstructured跟OCR SDK進階組件的功能,因此可以接受pdf (含文件裡面的圖片)、txt、docx、pptx、md、html、xls、xlsx、doc、ppt、png、jgp、jpeg、bmp等格式,而且可以使用溯源定位的功能。如果只架設基本的畢昇,那只能處理pdf、txt、docx、pptx、md、html等文字格式,而且沒有溯源定位功能。
如果要溯源定位,那就要佈署核心元件OCR SDK,而這是畢昇的商業拓展套件,並非開源的一部分。
簡單來說,佈署畢昇所使用的組件,會大幅影響知識檢索的結果。這也是我自己架設跟使用測試網站落差最大的地方。
構建 / Build
當模型跟知識準備好之後,我們就可以來到建構來開發應用程式。
畢昇將應用程式分成了工作流、助手、技能等三種類型。
助手的功能跟大部分聊天機器人的設定一樣,我們可以指定聊天機器人的系統角色、背後的大型語言模型、可調用的知識庫與其他工具等等。這是一般設定聊天機器人最常見的形態。
工作流的設計是Low Code類型的資料流動。畢昇的設計傾向在單一節點中整合相當多功能,因此節點數量較少、但節點裡需要設定的參數很多。一開始上手的時候要熟悉各個節點的細節需要花很多時間,但習慣之後,工作流的組成可以變得很簡潔。
技能則是專注於特定任務的表單。技能背後還是由工作流組成,但使用者並非是用聊天機器人的形式跟技能互動,而是用表單的形式填寫資料。這樣可以確保使用者遵循特定的規範填寫對應的資料,而正確的資料也能讓後續在工作流和大型語言模型裡面的處理更為準確。
建構的對外發佈 / External Publishing
在建構裡面設定的助手、工作流、技能都能對外發佈。畢昇支援了API (curl跟python)、獨立網頁、網頁內嵌、浮動按鈕這四種形式。值得注意的是,畢昇的網頁內嵌還能夠要求使用者登入後才能使用,這真的是非常棒的設計。
會話 / Chat
當建構好應用程式,並將之設定為「上線」(發佈的意思),我們就能在會話裡面使用這些應用程式。大部分的用法就跟一般的聊天機器人一樣,我們寫提示詞,然後機器人就會給予回覆。
如果有設定文檔知識庫問答的RAG功能的話,回答內容就會附帶「參考來源」。
點開參考來源,我們不僅可以看到跟提示詞相關的各個片段(chunk),還能看到這些片段在原始文件裡面的位置。畢昇將RAG的片段跟原始文件預覽的功能相互結合,這就是前面提到的溯源定位。
這功能簡直比傳統的全文檢索系統還要好上太多了!實在是令人非常驚豔。不過溯源定位需要配合畢昇的商業組件才能實現,光靠畢昇的開源程式碼是不能做到的。
評測跟標註 / Evaluation and Annotation
最後兩個功能:評測跟標註,我目前還不能順利掌握。
就我的理解來看,評測應該是針對特定的資料集,讓建構好的助手或技能來評估。但實際操作起來跟我想象的差異很大,而且一直失敗。
標註的資料則一直是空白的狀態。我在想這可能是測試網站的系統權限未開放,所以才沒辦法順利使用這些功能吧。
結語:強大,但不易掌控 / Conclusion: Powerful, but Not Easy to Control
畢昇在一眾大型語言模型開發平臺 (LLM DevOps)裡面,可以說是相當重量級的產品。這個重量級與其說是功能本身,不如說是其他方面的複雜,這包括了架設好之後內建了眾多的範例、需要眾多組件結合一起運作等等。架設畢昇的建議硬體條件為8核以上CPU跟32GB的RAM,而各組件還有更細緻的資源分類建議,這已經超過單純的筆電可以架設的程度。
此外,畢昇的產品發展也以中國受眾為主。模型的提供來源與資料處理的方式,大多是以簡體中文為主要處理對象,介面和語言也都以簡體中文為主。雖然程式碼提供了語系設定檔案,不過要如何發展成合適的語言,看起來還需要不少功夫。
儘管如此,畢昇結合了unstructured跟OCR套件所發展出的「溯源定位」功能實在是太令人印象深刻了。它不僅只是展示RAG中搜尋到的分段,還能在原始文件上顯示對應的位置。這種查找資料的方式簡直就是我理想中的形態。然而很遺憾的是,就我目前手邊的資源並無法實現出畢昇的「溯源定位」功能,因此也讓我放棄繼續深究畢昇的進階功能。
希望未來還有其他方案可以實現類似「溯源定位」的功能,這真的可以有效改善傳統的搜尋方式呢。
那麼這篇關於畢昇的介紹就到此為止了。文章的最後要來問問大家的是,在LLM DevOps系列的應用中,你聽過那些名詞呢?
6. 其他:歡迎在下面留言,分享你的看法吧!