在小型脈絡視窗中縮放用戶端摘要

發布日期:2025 年 3 月 12 日

說明 網頁 額外資訊 Chrome 狀態 Intent
GitHub 標記後面 Origin 試用 標記後面 Origin 試用 查看 意圖進行實驗

Summarizer API 可協助您以各種長度和格式產生資訊摘要。搭配 Chrome 中的 Gemini Nano 使用,執行用戶端推論,並簡要說明複雜或冗長的文字。

執行用戶端時,您可以在本機處理資料,進而保護機密資料安全,並提供大規模的可用性。不過,情境視窗比伺服器端模型小得多,因此很難為超大型文件製作摘要。如要解決這個問題,您可以使用「摘要的摘要」技巧。

什麼是摘要的摘要?

如要使用「摘要的摘要」技巧,請在關鍵點分割輸入內容,然後分別摘要每個部分。您可以將各部分的輸出內容連接起來,然後將連接後的文字濃縮為一個最終摘要。

舉例來說,如果文件分成三個部分,系統會為每個部分提供摘要。這三個摘要會合併並再次摘要,以便產生最終結果。

妥善分割內容

請務必考量如何分割大量文字,因為在不同位置分割內容,可能會導致 Gemini Nano 或其他 LLM 產生截然不同的輸出內容。在理想情況下,應在主題變更時分割文字,例如文章的新章節或段落。請務必避免在字詞或句子的中間分隔文字,也就是說,您無法只以字元數量做為分隔準則。

您可以透過多種方式完成這項工作,而無需手動操作。在以下範例中,我們使用 LangChain.js 中的遞迴文字分割器,以平衡效能和輸出品質。這應該適用於大多數工作負載。

建立新執行個體時,有兩個重要的參數:

  • chunkSize 是每個分割項目允許的字元數上限。
  • chunkOverlap 是兩個連續分割作業之間重疊的字元數量。這樣可確保每個區塊都包含先前區塊的部分內容。

使用 splitText() 分割文字,傳回每個區塊的字串陣列。

大多數大型語言模型的脈絡窗口會以符號數量表示,而非字元數量。一個符記平均包含 4 個字元,因此您可以將字元數除以 4,估算輸入內容所使用的符記數。

在本範例中,chunkSize 為 3000 個半形字元,約為 750 個符記。

為每個分割區產生摘要

設定內容分割方式後,您就可以使用 Summarizer API 為每個部分產生摘要。

使用 create() 函式建立摘要函式例項。為盡可能保留背景資訊,我們將 format 參數設為 plain-texttype 設為 tl;dr,以及 length 設為 long

接著,針對 RecursiveCharacterTextSplitter 建立的每個分割項目產生摘要,並將結果串連成新的字串。我們以新行分隔每個摘要,以便清楚標示每個部分的摘要。

雖然執行此迴圈一次時,這行新程式碼並無影響,但這有助於判斷每個摘要如何為最終摘要新增符記值。在大多數情況下,這項解決方案適用於中長篇內容。

摘要的遞迴摘要

如果文字量過長,連結摘要的長度可能會大於可用的背景期間,導致摘要作業失敗。如要解決這個問題,您可以遞迴地匯總摘要。

如果摘要摘要仍過長,您可以重複這個程序。理論上,您可以無限重複這個程序,直到收到適當的長度為止。

我們仍會收集 RecursiveCharacterTextSplitter 產生的初始分割項目。接著,在 recursiveSummarizer() 函式中,我們會根據連接分割字串的字元長度,循環執行摘要程序。如果摘要的字元長度超過 3000,我們會將其連接至 fullSummaries。如果未達上限,摘要會儲存為 partialSummaries

產生所有摘要後,系統會將最終的部分摘要加入完整摘要。如果 fullSummaries 中只有 1 個摘要,就不需要額外遞迴。函式會傳回最終摘要。如果有超過一則摘要,函式會重複並繼續摘要部分摘要。

我們使用 Internet Relay Chat (IRC) RFC 測試這個解決方案,該文件包含 17,560 個字詞,總共 110,030 個字元。Summarizer API 提供以下摘要:

Internet Relay Chat (IRC) 是一種使用文字訊息即時在線上進行通訊的方式。你可以在頻道中即時通訊或傳送私人訊息,也可以使用指令控制即時通訊,並與伺服器互動。就像是網際網路上的聊天室,你可以輸入內容並即時查看其他人的訊息。

這麼做相當有效!而且只有 309 個半形字元。

限制

摘要摘要技術可協助您在用戶端大小模型的內容視窗中運作。雖然用戶端 AI 有許多好處,但您可能會遇到以下情況:

  • 摘要不夠準確:使用遞迴時,摘要程序重複次數可能無限,且每個摘要都會離原始文字越來越遠。這表示模型產生的最終摘要可能太淺,無法提供實用資訊。
  • 效能較慢:每份摘要都需要花費時間產生。同樣地,由於較長的文字可能有無限的摘要,因此這個方法可能需要幾分鐘才能完成。

我們提供摘要器試用版,您也可以查看完整原始碼

提供意見

請嘗試使用摘要摘要技巧,搭配不同長度的輸入文字、不同分割大小和不同重疊長度,找出最適合您用途的做法。

立即加入來源試用,開始測試 Summarizer API,並提供寶貴意見。您的意見回饋會直接影響我們建構及實作此 API 未來版本,以及所有內建 AI API的方式。