Điều chỉnh tỷ lệ tóm tắt phía máy khách trong các cửa sổ ngữ cảnh nhỏ

Ngày xuất bản: 12 tháng 3 năm 2025

Video giải thích Web Phần mở rộng Trạng thái của Chrome Intent
GitHub Sau một lá cờ Bản dùng thử Origin Sau một lá cờ Bản dùng thử Origin Xem Ý định thử nghiệm

API Trình tóm tắt giúp bạn tạo bản tóm tắt thông tin ở nhiều độ dài và định dạng. Sử dụng công cụ này với Gemini Nano trong Chrome để thực hiện suy luận phía máy khách và giải thích ngắn gọn các văn bản phức tạp hoặc dài.

Khi thực hiện ở phía máy khách, bạn có thể xử lý dữ liệu cục bộ, nhờ đó có thể bảo mật dữ liệu nhạy cảm và cung cấp khả năng sử dụng trên quy mô lớn. Tuy nhiên, cửa sổ ngữ cảnh nhỏ hơn nhiều so với các mô hình phía máy chủ, điều này có nghĩa là bạn có thể gặp khó khăn khi tóm tắt các tài liệu rất lớn. Để giải quyết vấn đề này, bạn có thể sử dụng kỹ thuật tóm tắt các bản tóm tắt.

Tóm tắt của bản tóm tắt là gì?

Để sử dụng kỹ thuật tóm tắt của tóm tắt, hãy chia nội dung đầu vào tại các điểm chính, sau đó tóm tắt từng phần một cách độc lập. Bạn có thể nối các kết quả từ mỗi phần, sau đó tóm tắt văn bản đã nối này thành một bản tóm tắt cuối cùng.

Ví dụ: nếu một tài liệu được chia thành ba phần, thì mỗi phần sẽ được tóm tắt. Ba bản tóm tắt đó được kết hợp với nhau và tóm tắt lại để có kết quả cuối cùng.

Chia nội dung một cách cẩn thận

Điều quan trọng là bạn phải cân nhắc cách chia một đoạn văn bản lớn, vì việc chia ở các vị trí khác nhau có thể dẫn đến kết quả hoàn toàn khác nhau của Gemini Nano hoặc các LLM khác. Tốt nhất là bạn nên tách văn bản khi có sự thay đổi về chủ đề, chẳng hạn như một phần mới của bài viết hoặc ở một đoạn văn. Điều quan trọng là bạn phải tránh phân tách văn bản ở giữa một từ hoặc câu, nghĩa là bạn không thể đặt số lượng ký tự làm nguyên tắc phân tách duy nhất.

Có nhiều cách để bạn có thể thực hiện việc này mà không cần phải thực hiện theo cách thủ công. Trong ví dụ sau, chúng tôi đã sử dụng Trình chia văn bản đệ quy từ LangChain.js để cân bằng hiệu suất và chất lượng đầu ra. Cách này sẽ phù hợp với hầu hết các khối lượng công việc.

Khi tạo một thực thể mới, có hai tham số chính:

  • chunkSize là số ký tự tối đa được phép trong mỗi phần phân tách.
  • chunkOverlap là số ký tự trùng lặp giữa hai phần phân tách liên tiếp. Điều này đảm bảo rằng mỗi phần có một số ngữ cảnh từ phần trước.

Phân tách văn bản bằng splitText() để trả về một mảng các chuỗi với mỗi đoạn.

Hầu hết các LLM đều có cửa sổ ngữ cảnh được biểu thị dưới dạng số lượng mã thông báo, thay vì số lượng ký tự. Trung bình, một mã thông báo chứa 4 ký tự, vì vậy, bạn có thể ước tính số lượng mã thông báo mà một dữ liệu đầu vào sử dụng bằng cách chia số ký tự cho 4.

Trong ví dụ của chúng ta, chunkSize có 3000 ký tự và đó là khoảng 750 mã thông báo.

Tạo bản tóm tắt cho từng phần phân tách

Sau khi thiết lập cách phân tách nội dung, bạn có thể tạo bản tóm tắt cho từng phần bằng Summarizer API.

Tạo một thực thể của trình tóm tắt bằng hàm create(). Để giữ lại nhiều ngữ cảnh nhất có thể, chúng ta đã đặt tham số format thành plain-text, type thành tl;drlength thành long.

Sau đó, tạo bản tóm tắt cho mỗi phần phân tách do RecursiveCharacterTextSplitter tạo và nối các kết quả vào một chuỗi mới. Chúng tôi đã phân tách từng phần tóm tắt bằng một dòng mới để xác định rõ phần tóm tắt cho từng phần.

Mặc dù dòng mới này không quan trọng khi chỉ thực thi vòng lặp này một lần, nhưng dòng này rất hữu ích để xác định cách mỗi bản tóm tắt thêm vào giá trị mã thông báo cho bản tóm tắt cuối cùng. Trong hầu hết các trường hợp, giải pháp này sẽ phù hợp với nội dung dài và trung bình.

Tóm tắt đệ quy của các bản tóm tắt

Khi bạn có một lượng văn bản quá dài, độ dài của bản tóm tắt nối có thể lớn hơn cửa sổ ngữ cảnh hiện có, do đó khiến quá trình tóm tắt không thành công. Để giải quyết vấn đề này, bạn có thể tóm tắt các bản tóm tắt một cách đệ quy.

Nếu bản tóm tắt của bản tóm tắt vẫn quá dài, bạn có thể lặp lại quy trình này. Về lý thuyết, bạn có thể lặp lại quy trình này vô thời hạn cho đến khi nhận được độ dài phù hợp.

Chúng ta vẫn thu thập các phần phân tách ban đầu do RecursiveCharacterTextSplitter tạo ra. Sau đó, trong hàm recursiveSummarizer(), chúng ta lặp lại quá trình tóm tắt dựa trên độ dài ký tự của các phần phân tách nối tiếp. Nếu độ dài ký tự của bản tóm tắt vượt quá 3000, thì chúng ta sẽ nối vào fullSummaries. Nếu không đạt đến giới hạn, bản tóm tắt sẽ được lưu dưới dạng partialSummaries.

Sau khi tất cả bản tóm tắt được tạo, các bản tóm tắt một phần cuối cùng sẽ được thêm vào bản tóm tắt đầy đủ. Nếu chỉ có 1 bản tóm tắt trong fullSummaries, bạn không cần phải lặp lại thêm. Hàm này trả về một bản tóm tắt cuối cùng. Nếu có nhiều bản tóm tắt, hàm sẽ lặp lại và tiếp tục tóm tắt một phần các bản tóm tắt.

Chúng tôi đã thử nghiệm giải pháp này với RFC Internet Relay Chat (IRC), có tới 110.030 ký tự bao gồm 17.560 từ. API Tóm tắt đã cung cấp bản tóm tắt sau:

Internet Relay Chat (IRC) là một cách giao tiếp trực tuyến theo thời gian thực bằng tin nhắn văn bản. Bạn có thể trò chuyện trong các kênh hoặc gửi tin nhắn riêng tư, đồng thời có thể sử dụng các lệnh để kiểm soát cuộc trò chuyện và tương tác với máy chủ. Đây giống như một phòng trò chuyện trên Internet, nơi bạn có thể nhập và xem tin nhắn của người khác ngay lập tức.

Cách này khá hiệu quả! Và chỉ có 309 ký tự.

Các điểm hạn chế

Kỹ thuật tóm tắt tóm tắt giúp bạn hoạt động trong cửa sổ ngữ cảnh của mô hình kích thước ứng dụng. Mặc dù có nhiều lợi ích cho AI phía máy khách, nhưng bạn có thể gặp phải những vấn đề sau:

  • Bản tóm tắt ít chính xác hơn: Với quy trình đệ quy, việc lặp lại quy trình tóm tắt có thể là vô hạn và mỗi bản tóm tắt lại càng xa văn bản gốc. Điều này có nghĩa là mô hình có thể tạo ra một bản tóm tắt cuối cùng quá nông để hữu ích.
  • Hiệu suất chậm hơn: Mỗi bản tóm tắt cần có thời gian để tạo. Xin nhắc lại, với số lượng bản tóm tắt vô hạn trong văn bản lớn hơn, phương pháp này có thể mất vài phút để hoàn tất.

Chúng tôi có bản minh hoạ trình tóm tắt và bạn có thể xem mã nguồn đầy đủ.

Chia sẻ ý kiến phản hồi của bạn

Hãy thử sử dụng kỹ thuật tóm tắt tóm tắt với nhiều độ dài văn bản đầu vào, nhiều kích thước phân tách và nhiều độ dài trùng lặp để xác định phương pháp nào phù hợp nhất với trường hợp sử dụng của bạn.

Bắt đầu kiểm thử API Tóm tắt ngay bằng cách tham gia dùng thử phiên bản gốc và chia sẻ ý kiến phản hồi của bạn. Ý kiến đóng góp của bạn có thể trực tiếp tác động đến cách chúng tôi xây dựng và triển khai các phiên bản trong tương lai của API này cũng như tất cả API AI tích hợp sẵn.