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

發布日期:2025 年 3 月 12 日,上次更新日期:2025 年 5 月 28 日

說明 網頁 額外資訊 Chrome 狀態 Intent
MDN 標記後面 Chrome 138 開發人員預覽版 標記後面 Chrome 138 開發人員預覽版 查看 Intent to Ship

Summarizer API 可協助您以各種長度和格式產生資訊摘要。搭配 Chrome 中的 Gemini Nano 或瀏覽器內建的其他語言模型使用,簡潔地解釋長篇或複雜的文字。

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

什麼是摘要的摘要?

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

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

妥善分割內容

請務必考量如何分割大量文字,因為不同的策略可能會導致 LLM 產生不同的輸出內容。在主題變更時,例如文章的新章節或段落,建議您分割文字。請務必避免在字詞或句子中間分隔文字,也就是說,您不能只以字元數量做為分隔指南。

您可以透過多種方式進行,在以下範例中,我們使用了 LangChain.js 中的遞迴文字切割器,以平衡效能和輸出品質。這應該適用於大多數工作負載。

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

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

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

大多數大型語言模型的脈絡窗口會以符號數量表示,而非字元數量。平均而言,一個符記包含 4 個字元。在本例中,chunkSize 的長度為 3, 000 個半形字元,約為 750 個符記。

判斷符記的可用性

如要判斷可用於輸入內容的符記數量,請使用 measureInputUsage() 方法和 inputQuota 屬性。在這種情況下,實作方式沒有限制,因為您無法得知摘要器要執行多少次才能處理所有文字。

為每個分割區產生摘要

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

使用 create() 函式建立摘要器的例項。為盡可能保留背景資訊,我們將 format 參數設為 plain-texttype 設為 tldr,並將 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 使用不同長度的輸入文字、不同分割大小和不同重疊長度。