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