iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0
生成式 AI

阿,又是一個RAG系列 第 28

Day27: 開源的標註工具: Label-Studio

  • 分享至 

  • xImage
  •  

Day27: 開源的標註工具: Label-Studio

Intro

  • 今天是相對獨立的一篇,我們想要介紹 Label-Studio 這款標註工具
  • 順便把我們最一開始立下的目標挖的坑給填了:
    • 主題2: 搭建 Label Studio 獲得 ground-truth
  • 關於為什麼是 Label-Studio 呢?
    • 因為他開源
    • 他可以完全只架在本地
    • 他支持我想要的幾乎所有功能
      • 加上 pre-annotation
      • 各種你想的到你沒想到的 cv/nlp 任務,而不是只是單一個
    • 可以支持夠多的客製化
  • 最一開始接觸的時候確實因為它的複雜而感到頭大,但熟悉之後就變成了工具箱裡面的一個工具
  • 還想說的是:標註工具的主要任務並不是只是標註而已,也是你向其他人展示你的資料集的一個很好的平台
    • 尤其是像 RAG 這種 context 一多就很難看的應用
      那我們就開始吧!

Task

  • 我們今天的任務就是把昨天 跑出來的 response 放到 label-studio 上看看我們的系統是出了什麼問題
  • 此外由於我們介紹 label-studio 的篇幅只有 1 篇,所以我只會很概略的講一下我認為的關鍵點,大部分都是以文檔要去哪裡找的方式說明

Action

首先我們先上結果:
https://ithelp.ithome.com.tw/upload/images/20251012/20177855Xc03xNXcpb.jpg
這張圖告訴我們:

  • 這題會答錯的主因是最後合成答案的時候模型自己錯亂,他在詳解的部分都講了答案了,只是選項還給錯
    • 當前我們的 pipline 錯誤的部分幾乎都是這個原因
    • 所以我們的下一步是要去清理檢索回來的 node 讓雜訊不要那麼多
    • 關於我們 rag 系統的分析就到這裡,接下來我們就純介紹 label-studio 吧

Label-Studio Intro

從上圖的結果來看,我們至少看到:

  • label-studio 可以讓我們用 role 、 context 這種對話形式來顯示我們的資料
  • label-studio 提供 NER 的標註,NER 標籤在最頂上,我設置了以下標籤
    • context_heighlight: 用來把 context 有講到答案的地方 highlight 起來
    • error_highlight: 用來把 model response 最主要錯誤的地方 highlight 起來
    • 被上了不同底色的內容就是 NER 標註的結果
  • label-studio 提供設置勾選框(就是分類)的標註
    • 見圖下方: 我設置了三個選項,參考資料不完整、合成回答失控、正確無問題,
  • label-studio 提供 text_area 直接填入文字
  • 他上方有一個 Show all authors 的篩選框,這個點開來可以篩選想要顯示的 role
    • 比如只想看 context、只想看 query 跟 response 等等

這是怎麼做的呢? (應該)比你想像中的簡單非常多

Quick Start

首先是環境的部分:

conda create -n label-studio python==3.12
conda activate label-studio
pip install label-studio
label-studio start
  • 然後你會可以在 http://localhost:8080 打開登入頁面了

    • 註冊什麼因為照做就好了,這邊就直接略過
  • 預設你的資料會被存在本地的 sqlite

    • 預設位置在: ~/.local/share/label-studio
    • 會有這些檔案: export label_studio.sqlite3 media test_data
  • 關於其他環境變數的設置,比如改預設 sqlite 的資料夾(LABEL_STUDIO_BASE_DATA_DIR):

    • 參考
    • 使用:
      • label-studio start --data-dir ./mcq_db
  • 也可以把 sqlite 換成 postgresql,供多人使用

最重要的三件事:

能夠啟動我們的專案之後,對於 label-studio(或者其他任何的標註工具),通常我們就是關心三件事:

  • 我的介面要怎麼配置 / 我要怎麼標
  • 我的資料要轉成什麼格式進去
  • 我標完怎麼拿出來

我們就大致概覽一下吧

1. Labeling Interface

  • 首先是標註介面的部分,通常要先釐清這是一個什麼任務? 是標註影像的分類、標註文字的 NER 的、還是標註一段 llm 與使用者的對話
  • Labeling Interface 用一個 xml 來管理這個介面,你可以基於他規定好的語法寫一個 xml 來進行客製
    • 當然啦,一開始這種東西哪會自己寫,都是要先有一些範例來讓我熟悉一下
    • 我們今天的 xml 範例如下:
<View>
  <ParagraphLabels name="entity_slot" toName="dialogue">
    <Label value="context_highlight" />
    <Label value="error_highlight" />
  </ParagraphLabels>
  <Paragraphs name="dialogue" value="$RagResponse" layout="dialogue" />
    <Choices name="intent" toName="dialogue"
         choice="single" showInLine="true">
        <Choice value="參考資料不完整"/>
        <Choice value="合成回答失控"/>
        <Choice value="正確無問題"/>
    </Choices>
  <Header value="Provide response"/>
  <TextArea name="response" toName="response" rows="4" editable="true" maxSubmissions="1"/>
</View>
  • 首先是官方有一個 template Gallery 提供一些預先做好的頁面,或許可以從這裡開始:
  • 但我通常都覺得他的 template 不是很好用,很多地方其實沒必要那麼複雜,所以:
    • 請參考 playground
    • 個人覺得更有用的是這個,因為他夠簡單,很多時候我們只要從幾個簡單的功能開始,就可以把需求組出來,就不用被複雜的 template 綁死
  • 最後,對於某一個 xml tag 不熟悉可以先看一下文件,這個是遇到用來查的,不是要一開始全看的
  • 最最後,附上官方對這部分的教學: Configure labeling interface

2. Data 怎麼匯入:

  • 首先第一個問題是:資料要從哪裡匯入
    • 是本地 (json/csv)
    • 還是雲端比如說從 GCP
      • 官方其實不太推薦本地匯入(當然,如果是你真的要部署一個資料標註專案的話)
      • 但因為我們的實際用途通常就是看個自己的資料而已,所以就先不管這個
  • 再來就是匯入格式的問題
    • 設定好了標註介面之後,才能知道我們要把 data 整理成什麼格式,每個任務不同
    • playground 這個連結的最下面,顯示了如果你要這樣寫你的 interface,那你的一筆資料要長怎樣
  • 最後就是通用格式的問題:
    • 這邊假設我們就是要把資料包成一個 json 檔案:裡面就是一個 list of dictionary
    • 一筆 data 就是一個 dictionary
    • 通常實際的待標註資料,會放在 data 這個 key 下面,比如說原始的文字資訊
    • 然後可以用一個 predictions 來把 model 預先標註的資料放進去
      • 這個的文檔在: Import pre-annotations
      • 格式就參考 playground 給的
      • 你也可以先在 playground 上標一筆然後在下面看到這個這樣標了資料會變成怎樣
    • prediction 可以想成是 offline 的先用 model predict 好,然後再用人工篩

3. 標完了資料怎麼拿回來

  • 這個就是他整個介面有一個 Export 的按鈕,按下去就下載了...
    • 雖然這個很像廢話...
  • 如果實際想知道的是: 標註後的資料會變成怎麼樣的話,那就回到 2 的 playground,測試完下面會顯示這個任務標註後的格式
  • 如果想知道的是怎麼用 api 下載的話,參考
  • 最後就是關於export 的 文檔

Summary:

  • 好啦,我們今天介紹了 Label-Studio 這個工具
  • 一篇的篇幅其實也沒辦法介紹什麼,所以我主要做的事情是:
    • 用例子告訴你我覺得這個有多好用
    • 解決你可能首先會擔心的三個問題,它們真的都不複雜
  • 希望有朝一日你遇到標註問題的時候可以先想到它
  • 我們明天就來把 node 清一清,看可不可以把這個考卷破台吧!

上一篇
Day26: Online Retriever Evaluator
系列文
阿,又是一個RAG28
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言