1 điểm bởi GN⁺ 2025-11-07 | 1 bình luận | Chia sẻ qua WhatsApp
  • Khi người dùng nhập những cuốn sách đã đọc, mô hình khuyến nghị sẽ đề xuất cuốn sách nên đọc tiếp theo
  • Kết quả tìm kiếm và gợi ý chỉ bao gồm các sách vượt ngưỡng độ phổ biến
  • Những sách có độ phổ biến thấp có thể được sử dụng ở mục khác (intersect) của trang
  • Khi nhập từ 3 cuốn sách trở lên, hệ thống cho kết quả gợi ý chính xác nhất
  • Triển khai thử nghiệm công nghệ gợi ý đọc sách cá nhân hóa tận dụng dữ liệu đánh giá quy mô lớn

Tính năng gợi ý sách

  • Khi người dùng nhập những cuốn sách đã đọc, hệ thống sẽ cung cấp kết quả gợi ý dựa trên mô hình
    • Dựa trên danh sách sách đã nhập, hệ thống đề xuất những cuốn đáng để đọc tiếp theo
  • Kết quả gợi ý và tìm kiếm chỉ bao gồm những đầu sách có mức độ phổ biến từ một ngưỡng nhất định trở lên
    • Những sách dưới ngưỡng phổ biến sẽ bị loại khỏi kết quả gợi ý

Cách nhập và tìm kiếm

  • Kết quả sẽ hiển thị khi nhập từ hai ký tự trở lên vào ô tìm kiếm
  • Những cuốn sách người dùng chọn sẽ hiển thị trong vùng ‘Selected Books’,
    nếu chưa chọn cuốn nào thì sẽ xuất hiện dòng “No books selected yet”

Tính năng bổ sung

  • Những sách có độ phổ biến thấp có thể được sử dụng riêng trên trang /intersect
  • Khi nhập từ 3 cuốn sách trở lên, độ chính xác của gợi ý được cải thiện

Tổng quan dịch vụ

  • Trang web sử dụng mô hình khuyến nghị dựa trên dữ liệu đánh giá Goodreads quy mô lớn (3 tỷ bài)
  • Mục tiêu là mang đến trải nghiệm gợi ý sách cá nhân hóa theo lịch sử đọc của người dùng
  • Bản gốc không có thêm chi tiết kỹ thuật hay giải thích về thuật toán

1 bình luận

 
GN⁺ 2025-11-07
Ý kiến Hacker News
  • Tò mò không biết việc này có vi phạm Điều 4 trong điều khoản sử dụng của Goodreads hay không
    Trong đó ghi rằng không được “sửa đổi, sao chép, phân phối hoặc sử dụng nội dung trong dịch vụ để tạo tác phẩm phái sinh”, nên có vẻ cần sự cho phép rõ ràng nếu muốn dùng nội dung của người viết đánh giá để huấn luyện LLM
    • Tôi nghĩ trong thời đại này những điều khoản như vậy không còn nhiều ý nghĩa
      Tính hợp pháp của việc scraping phụ thuộc vào khu vực tài phán. Ở Mỹ, nhờ án lệ HiQ Labs v. LinkedIn, việc cào dữ liệu từ các trang web công khai được công nhận là không vi phạm CFAA. Vì vậy mới xuất hiện rất nhiều startup scraping dữ liệu công khai
    • Về mặt kỹ thuật thì họ không công khai sử dụng chính tác phẩm có bản quyền của Goodreads
      Thông tin hiển thị trên site chỉ là tiêu đề và tác giả, mà những thứ đó không thuộc sở hữu của Goodreads.
      Có thể vẫn vướng điều khoản “tạo tác phẩm phái sinh”, nhưng khó coi việc đề xuất sách dựa trên review là hành vi xâm phạm.
      Nó tương tự như một YouTuber làm video kiểu “đọc 50 review rồi đề xuất sách”
    • Gần đây thậm chí việc đưa toàn bộ sách vào huấn luyện LLM cũng được xem là fair use, nên có khả năng review cũng không cần xin phép. Dù vậy tôi vẫn muốn nghe ý kiến từ chuyên gia pháp lý
    • Không hiểu sao lại hỏi một câu mà có vẻ đã biết sẵn câu trả lời
  • Tôi cứ thêm sách mãi rồi nhận được thông báo “quá nhiều”. Ý tưởng thực sự rất thú vị
    Nhưng tôi có vài đề xuất
    • UI: những cuốn đã bấm “Add” nên biến mất khỏi danh sách gợi ý. Nếu vẫn ở đó thì khá khó hiểu
    • Độ đa dạng của gợi ý: hệ thống đoán rất đúng những cuốn tôi đã đọc, nhưng lại ít có khám phá mới.
      Nếu danh sách sách tôi đã đọc đủ nhiều, sẽ hay hơn nếu nó tìm những độc giả giống tôi (‘eigenfriends’) rồi gợi ý các cuốn gây tranh cãi hoặc hợp gu thiểu số mà họ đã đọc
      Lần tới sẽ thú vị nếu có thể kết nối VLM để nhập bằng ảnh chụp giá sách
    • Ở trang “intersect” của site, có thể nhập nhiều cuốn để tìm tập độc giả giao nhau.
      Ví dụ, nếu nhập “Lenin’s Tomb” và “Secondhand Time”, bạn có thể xem những sách khác mà những người đã đọc cả hai cuốn đó cũng đọc.
      Cách này tương tự Filmaffinity. Họ đưa ra gợi ý dựa trên nhóm người dùng có gu tương tự gọi là ‘soulmates’
      Cá nhân tôi nghĩ thay vì sách gây tranh cãi thì lọc theo bạn bè có gu khác nhau sẽ mang lại gợi ý mới mẻ hơn
  • Site rất nhanh và thực sự ấn tượng
    Nhưng nếu thêm một cuốn trong series (ví dụ Discworld #33), thì cả series đó sẽ thống trị phần gợi ý. Tôi muốn loại trừ những series mình đã đọc rồi
    Ngoài ra có vài cuốn có trên Goodreads nhưng không tìm thấy khi tìm kiếm. Có vẻ chúng bị thiếu trong dataset
    Khi bấm nút “Similar”, tôi lại thấy những cuốn giống về hình thức nhưng khác về ngữ cảnh.
    Dù vậy với các sách phổ thông hơn thì kết quả khá khớp với wishlist của tôi
    • Tôi nghĩ cách xử lý series là vấn đề lớn nhất
      Tôi đã phát hành vì các chỉ số test và kiểm tra chất lượng đều ổn, nhưng có lẽ giải pháp sẽ là dùng mô hình transformer để tạo 100~200 ứng viên rồi áp dụng reranker
  • Với kinh nghiệm từng xây hệ thống gợi ý, từ giờ mới là phần thực sự khó
    Hiện tại nó gần với gợi ý dựa trên nội dung, nhưng về sau sẽ phải tính cả các chỉ số như serendipitynovelty
    Trong dịch vụ thực tế, việc dùng nhiều bộ gợi ý cho các mục tiêu khác nhau rồi kết hợp có trọng số thường hiệu quả hơn
    Ví dụ có thể trộn gợi ý dựa trên nội dung, dựa trên đồ thị, mô hình cho mục tiêu cụ thể, thậm chí cả loại dựa trên TF‑IDF/BM25/Splade
    Vì mỗi người muốn được gợi ý theo cách khác nhau, nên điều chỉnh trọng số theo từng người dùng là mấu chốt
  • Nên loại tác giả của những cuốn đã nhập ra khỏi kết quả
    Nếu tôi đã thích tác giả đó thì tự tôi cũng sẽ tìm các tác phẩm khác của họ, nên gợi ý sách cùng tác giả không có nhiều ý nghĩa
    Gợi ý thực sự thú vị là thứ vừa (1) hợp gu tôi vừa (2) bất ngờ
    Những gợi ý quá giống nhau có nguy cơ tạo ra buồng vang
    • Tôi đồng ý nên loại series, nhưng tác giả thì tốt hơn nên để thành tùy chọn
      Nhiều khi người ta không biết một tác giả mình từng đọc còn có tác phẩm nào khác
    • Việc cứ liên tục gợi ý những cuốn đã đọc rồi thì không hay
  • Tôi nhập nhiều cuốn khác nhau và nó đoán khá đúng những cuốn tôi đã đọc và thích
    Nhưng sẽ tốt hơn nếu có thể thêm cả tín hiệu tiêu cực (negative signal) cho những cuốn tôi ghét
    Nhìn chung kết quả khá ấn tượng
  • Trong robots.txt có ghi rõ là cấm scraping (disallow)
    Bỏ qua vấn đề pháp lý, tôi vẫn thấy điều này không phù hợp về mặt đạo đức
    • Là người thường xuyên viết review trên Goodreads, tôi thấy cách sử dụng này khó chịu
  • Có vẻ cuốn sách được thêm cuối cùng đang ảnh hưởng quá mức đến kết quả gợi ý
    • Đây là do đặc tính của positional embedding
      Mục cuối cùng được phản ánh là có mức liên quan cao nhất khi dự đoán tương tác tiếp theo
      Nếu thêm nhiều sách hơn thì hiệu ứng này sẽ giảm bớt
  • Chúng tôi đã xây dựng dataset này từ năm 2016, và dữ liệu đó đã được bao phủ rồi
    Hiện đang ở giai đoạn beta kín trên TestFlight và sẽ sớm phát hành công khai
  • Khoảng 5 năm trước tôi từng hình dung một công cụ có thể tìm phim mới khi nói kiểu “hãy gợi ý cho tôi phim gangster hay
    Khi đó đa số đều nói là bất khả thi, nhưng giờ có vẻ đã làm được
    Dù vậy, nếu đã có dataset lớn như vậy thì tôi vẫn băn khoăn liệu AI có thật sự cần thiết không
    Thay vì các mô hình như SASRec/RAG, có lẽ chỉ cần xếp hạng đơn giản và tính giao tập như last.fm ngày xưa cũng cho kết quả tương tự
    Trước đây tôi từng hình dung một cấu trúc đồ thị ‘bộ não’ cho hệ gợi ý, nơi điểm số được lan truyền dọc theo các liên kết giữa các item.
    Có lẽ ở những nơi như Amazon cũng đang dùng một biến thể kiểu này
    • Chỉ với yêu cầu “hãy gợi ý cho tôi phim gangster hay” thì vẫn chưa đủ
      Nếu không biết người dùng đã xem gì hay có gu ra sao, thì không thể gợi ý chính xác “một bộ phim họ sẽ thích nhưng chưa xem”
      Rốt cuộc đây là hệ thống gợi ý tổng quát trở nên khả thi khi nới lỏng ràng buộc thông tin
    • Nhân tiện, last.fm cũng không chỉ dùng xếp hạng đơn giản mà đã dùng các thuật toán machine learning cơ bản