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

Alexandra Klepper
Alexandra Klepper

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

說明 網頁 額外資訊 Chrome 狀態 Intent
MDN Chrome 138 Chrome 138 查看 出貨意願

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

在用戶端執行時,您可以在本機處理資料,確保機密資料安全無虞,並大規模提供服務。不過,與伺服器端模型相比,內容視窗小得多,因此可能難以摘要大型文件。如要解決這個問題,可以使用「摘要的摘要」技巧。

什麼是摘要的摘要?

如要使用「摘要的摘要」技巧,請在重要時間點分割輸入內容,然後分別摘要各部分內容。您可以串連各部分的輸出內容,然後將串連的文字彙整成最終摘要。

舉例來說,如果文件分成三部分,系統會分別提供各部分的摘要。這三份摘要會合併,並再次摘要,做為最終結果。

謹慎分割內容

請務必考量如何分割大量文字,因為不同的策略可能會導致 LLM 產生不同的輸出內容。理想情況下,應在主題變更時分割文字,例如文章的新章節或段落。請務必避免在字詞或句子中間分割文字,也就是說,您不能只依據字元數來分割文字。

您可以透過多種方式達成這個目的,在以下範例中,我們使用了 LangChain.js遞迴文字分割器,可兼顧效能和輸出品質。這項做法適用於大多數工作負載。

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

  • 每個分割畫面最多可包含 chunkSize 個字元。
  • chunkOverlap 是指兩個連續分割之間要重疊的字元數。這可確保每個區塊都包含前一個區塊的部分脈絡。

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

大多數 LLM 的脈絡窗口都是以權杖數量表示,而非字元數量。平均來說,一個權杖包含 4 個字元。在我們的範例中,chunkSize 為 3000 個字元,大約是 750 個權杖。

判斷權杖是否可用

如要判斷輸入內容可使用的權杖數量,請使用 measureInputUsage() 方法和 inputQuota 屬性。在本例中,實作方式沒有限制,因為您無法得知摘要工具會執行幾次,才能處理所有文字。

生成每個分攤的摘要

設定內容分割方式後,即可使用 Summarizer API 為每個部分生成摘要。

使用 create() 函式建立摘要工具例項。為盡可能保留背景資訊,我們已將 format 參數設為 plain-texttype 設為 tldr,並將 length 設為 long

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

雖然只執行一次迴圈時,這個新行並不重要,但有助於判斷每個摘要如何增加最終摘要的權杖值。在大多數情況下,這個解決方案適用於中長篇內容。

摘要的遞迴摘要

如果文字過長,串連摘要的長度可能會超過可用的脈絡窗口,導致摘要失敗。如要解決這個問題,您可以遞迴總結摘要。

如果摘要的摘要還是太長,可以重複上述程序。理論上,你可以無限次重複這個程序,直到獲得適當長度的影片為止。

我們仍會蒐集 RecursiveCharacterTextSplitter 生成的初始分段。接著,在 recursiveSummarizer() 函式中,我們會根據串連分割的字元長度,迴圈執行摘要程序。如果摘要的字元長度超過 3000,我們會將摘要串連成 fullSummaries。如果未達上限,系統會將摘要儲存為 partialSummaries

所有摘要生成完畢後,最終的部分摘要會加入完整摘要。如果 fullSummaries 中只有 1 個摘要,則不需要額外的遞迴。函式會傳回最終摘要。如果有多個摘要,函式會重複執行,並繼續摘要部分摘要。

我們使用網際網路中繼聊天 (IRC) RFC 測試這項解決方案,該 RFC 包含 110,030 個字元,其中有 17,560 個字。Summarizer API 提供以下摘要:

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

這項功能相當實用!而且只有 309 個字元。

限制

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

  • 摘要內容不夠準確:遞迴可能會無限重複摘要程序,且每次產生的摘要內容與原始文字的差異會越來越大。這表示模型產生的最終摘要可能不夠深入,無法提供實用資訊。
  • 效能較慢:系統需要時間生成摘要,同樣地,由於較長的文字可能產生無限多種摘要,因此這個方法可能需要幾分鐘才能完成。

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

提供意見

嘗試使用摘要的摘要技術,搭配不同長度的輸入文字、不同大小的分割區,以及不同長度的重疊部分,並使用 Summarizer API