เผยแพร่เมื่อวันที่ 12 มีนาคม 2025, อัปเดตล่าสุดเมื่อวันที่ 28 พฤษภาคม 2025
| วิดีโออธิบาย | เว็บ | ส่วนขยาย | สถานะ Chrome | ความตั้งใจ |
|---|---|---|---|---|
| MDN | ดู | ความตั้งใจที่จะเปิดตัว |
Summarizer API ช่วยคุณสร้างข้อมูลสรุปของ ข้อมูลที่มีความยาวและรูปแบบต่างๆ ใช้ API นี้กับโมเดลพื้นฐานใน Chrome หรือโมเดลภาษาอื่นๆ ที่มีอยู่ในเบราว์เซอร์เพื่ออธิบายข้อความที่ยาวหรือซับซ้อนอย่างกระชับ
เมื่อดำเนินการฝั่งไคลเอ็นต์ คุณจะสามารถทำงานกับข้อมูลในเครื่องได้ ซึ่งช่วยให้คุณเก็บรักษาข้อมูลที่ละเอียดอ่อนให้ปลอดภัยและพร้อมใช้งานในวงกว้าง อย่างไรก็ตาม หน้าต่างบริบทมีขนาดเล็กกว่ามากเมื่อเทียบกับโมเดลฝั่งเซิร์ฟเวอร์ ซึ่งหมายความว่าการสรุปเอกสารขนาดใหญ่อาจเป็นเรื่องยาก คุณสามารถใช้เทคนิค ข้อมูลสรุปของข้อมูลสรุป เพื่อแก้ปัญหานี้ได้
ข้อมูลสรุปของข้อมูลสรุปคืออะไร
หากต้องการใช้เทคนิค ข้อมูลสรุปของข้อมูลสรุป ให้แยกเนื้อหาอินพุตออกเป็นส่วนๆ ตามจุดสำคัญ แล้วสรุปแต่ละส่วนแยกกัน จากนั้นคุณสามารถเชื่อมเอาต์พุตจากแต่ละส่วนเข้าด้วยกัน แล้วสรุปข้อความที่เชื่อมเข้าด้วยกันนี้ให้เป็นข้อมูลสรุปสุดท้าย
แยกเนื้อหาอย่างรอบคอบ
คุณควรพิจารณาวิธีแยกข้อความขนาดใหญ่ เนื่องจากกลยุทธ์ที่แตกต่างกันอาจนำไปสู่เอาต์พุตที่แตกต่างกันใน LLM โดยควรแยกข้อความเมื่อมีการเปลี่ยนหัวข้อ เช่น ส่วนใหม่ของบทความหรือที่ย่อหน้า คุณควรหลีกเลี่ยงการแยกข้อความตรงกลางคำหรือประโยค ซึ่งหมายความว่าคุณไม่สามารถใช้จำนวนอักขระเป็นแนวทางการแยกเพียงอย่างเดียวได้
คุณทำได้หลายวิธี ในตัวอย่างต่อไปนี้ เราใช้ Recursive Text Splitter จาก LangChain.js ซึ่งช่วยปรับสมดุลระหว่างประสิทธิภาพและ คุณภาพของเอาต์พุต วิธีนี้ควรใช้ได้กับปริมาณงานส่วนใหญ่
เมื่อสร้างอินสแตนซ์ใหม่ จะมีพารามิเตอร์สำคัญ 2 รายการดังนี้
chunkSizeคือจำนวนอักขระสูงสุดที่อนุญาตในแต่ละส่วนchunkOverlapคือจำนวนอักขระที่จะซ้อนทับกันระหว่าง 2 ส่วนที่ต่อเนื่องกัน ซึ่งจะช่วยให้มั่นใจว่าแต่ละส่วนมีบริบทบางส่วนจากส่วนก่อนหน้า
แยกข้อความด้วย splitText() เพื่อแสดงผลอาร์เรย์ของสตริงที่มีแต่ละส่วน
LLM ส่วนใหญ่มีหน้าต่างบริบทแสดงเป็นจำนวนโทเค็น ไม่ใช่จำนวนอักขระ โดยเฉลี่ยแล้วโทเค็นจะมีอักขระ 4 ตัว ในตัวอย่างของเรา chunkSize คือ 3, 000 อักขระ ซึ่งประมาณ 750 โทเค็น
กำหนดความพร้อมใช้งานของโทเค็น
หากต้องการกำหนดจำนวนโทเค็นที่พร้อมใช้งานสำหรับอินพุต ให้ใช้
measureInputUsage()
เมธอด และ inputQuota
พร็อพเพอร์ตี้ ในกรณีนี้ การใช้งานไม่มีขีดจำกัด เนื่องจากคุณไม่สามารถทราบได้ว่าเครื่องมือสรุปจะทำงานกี่ครั้งเพื่อประมวลผลข้อความทั้งหมด
สร้างข้อมูลสรุปสำหรับแต่ละส่วน
เมื่อตั้งค่าวิธีแยกเนื้อหาแล้ว คุณจะสร้างข้อมูลสรุปสำหรับแต่ละส่วนได้ด้วย Summarizer API
สร้างอินสแตนซ์ของเครื่องมือสรุปด้วยฟังก์ชัน
create() เราได้ตั้งค่าพารามิเตอร์ format เป็น plain-text, type
เป็น tldr,
และ length เป็น long เพื่อเก็บรักษาบริบทให้ได้มากที่สุด
จากนั้นสร้างข้อมูลสรุปสำหรับแต่ละส่วนที่สร้างโดย RecursiveCharacterTextSplitter และเชื่อมผลลัพธ์เข้าด้วยกันเป็นสตริงใหม่
เราคั่นข้อมูลสรุปแต่ละรายการด้วยบรรทัดใหม่เพื่อให้ระบุข้อมูลสรุปของแต่ละส่วนได้อย่างชัดเจน
แม้ว่าบรรทัดใหม่นี้จะไม่มีผลเมื่อดำเนินการลูปนี้เพียงครั้งเดียว แต่ก็มีประโยชน์ในการกำหนดว่าข้อมูลสรุปแต่ละรายการเพิ่มค่าโทเค็นสำหรับข้อมูลสรุปสุดท้ายอย่างไร ในกรณีส่วนใหญ่ โซลูชันนี้ควรใช้ได้กับเนื้อหาขนาดกลางและขนาดใหญ่
ข้อมูลสรุปของข้อมูลสรุปแบบเรียกซ้ำ
เมื่อคุณมีข้อความยาวมาก ความยาวของข้อมูลสรุปที่เชื่อมเข้าด้วยกันอาจยาวกว่าหน้าต่างบริบทที่พร้อมใช้งาน ซึ่งทำให้การสรุปไม่สำเร็จ คุณสามารถสรุปข้อมูลสรุปแบบเรียกซ้ำเพื่อแก้ปัญหานี้ได้
เรายังคงรวบรวมส่วนเริ่มต้นที่สร้างโดย RecursiveCharacterTextSplitter จากนั้นในฟังก์ชัน recursiveSummarizer() เราจะวนซ้ำกระบวนการสรุปตามความยาวอักขระของส่วนที่เชื่อมเข้าด้วยกัน หากความยาวอักขระของข้อมูลสรุปเกิน 3000 เราจะเชื่อมเข้าด้วยกันเป็น fullSummaries หากไม่ถึงขีดจำกัด ระบบจะบันทึกข้อมูลสรุปเป็น partialSummaries
เมื่อสร้างข้อมูลสรุปทั้งหมดแล้ว ระบบจะเพิ่มข้อมูลสรุปย่อยสุดท้ายลงในข้อมูลสรุปทั้งหมด หากมีข้อมูลสรุปเพียง 1 รายการใน fullSummaries คุณก็ไม่จำเป็นต้องเรียกซ้ำเพิ่มเติม ฟังก์ชันจะแสดงผลข้อมูลสรุปสุดท้าย หากมีข้อมูลสรุปมากกว่า 1 รายการ ฟังก์ชันจะทำซ้ำและสรุปข้อมูลสรุปย่อยต่อไป
เราได้ทดสอบโซลูชันนี้กับ Internet Relay Chat (IRC) RFC, ซึ่งมีอักขระมากถึง 110,030 ตัว รวมถึงคำ 17,560 คำ Summarizer API แสดงข้อมูลสรุปต่อไปนี้
Internet Relay Chat (IRC) เป็นวิธีสื่อสารออนไลน์แบบเรียลไทม์โดยใช้ข้อความ คุณสามารถแชทในช่องหรือส่งข้อความส่วนตัว และใช้คำสั่งเพื่อควบคุมการแชทและโต้ตอบกับเซิร์ฟเวอร์ได้ ซึ่งคล้ายกับห้องแชท บนอินเทอร์เน็ตที่คุณสามารถพิมพ์และดูข้อความของผู้อื่นได้ทันที
มีประสิทธิภาพมาก และมีอักขระเพียง 309 ตัวเท่านั้น
ข้อจำกัด
เทคนิคข้อมูลสรุปของข้อมูลสรุปช่วยให้คุณทำงานภายในหน้าต่างบริบทของโมเดลฝั่งไคลเอ็นต์ได้ แม้ว่า AI ฝั่งไคลเอ็นต์จะมีประโยชน์มากมาย แต่คุณอาจพบปัญหาต่อไปนี้
- ข้อมูลสรุปมีความแม่นยำน้อยลง: การเรียกซ้ำอาจทำให้กระบวนการสรุปทำซ้ำได้ ไม่สิ้นสุด และข้อมูลสรุปแต่ละรายการจะอยู่ห่างจากข้อความต้นฉบับมากขึ้น ซึ่งหมายความว่าโมเดลอาจสร้างข้อมูลสรุปสุดท้ายที่ตื้นเกินไปจนไม่เป็นประโยชน์
- ประสิทธิภาพช้าลง: การสร้างข้อมูลสรุปแต่ละรายการต้องใช้เวลา อีกครั้งที่การสร้างข้อมูลสรุปจำนวนไม่สิ้นสุดในข้อความขนาดใหญ่อาจทำให้วิธีนี้ใช้เวลาหลายนาทีจึงจะเสร็จสมบูรณ์
เรามีเดโมเครื่องมือสรุปให้คุณลองใช้, และคุณสามารถดู ซอร์สโค้ดฉบับเต็มได้
แชร์ความคิดเห็น
ลองใช้เทคนิคข้อมูลสรุปของข้อมูลสรุปกับข้อความอินพุตที่มีความยาวต่างๆ ขนาดการแยกต่างๆ และความยาวการซ้อนทับต่างๆ ด้วย Summarizer API
- หากต้องการแสดงความคิดเห็นเกี่ยวกับการใช้งานของ Chrome ให้ยื่น รายงานข้อบกพร่อง หรือคำขอฟีเจอร์
- อ่านเอกสารประกอบใน MDN
- แชทกับทีม Chrome AI เกี่ยวกับกระบวนการสรุป หรือคำถามอื่นๆ เกี่ยวกับ AI ในตัว