Quả thực thì để RAG hoạt động tốt, yêu cầu hầu như tất cả bước phải chỉnh chu và chính xác (từ data -> indexing -> retrieval -> rerank -> generation .v.v)
Mình có một vài thắc mắc như sau
Nếu như rào cản để xây dựng LLM-powered system lớn như bài viết thì khả năng để startup, SME adopt công nghệ này là khó?
Liệu có thể triển khai RAG ở level đơn giản không? Cơ bản là automation các repetitive tasks của phòng ban cụ thể. Lúc này scope dự án cũng nhỏ lại và rủi ro ít hơn nhỉ ?
Chào bạn MinhDrake, cảm ơn bạn đã đặt câu hỏi!
Thực ra “Chiêu 3” mình giới thiệu chỉ cần push đúng một lần giá trị mã hoá (không phải hai lần), để vẫn đảm bảo O(1) không gian phụ.
Vì sao không cần push thêm val? Giá trị mã hóa (encoded) vừa chứa đủ thông tin để biết đời trước của minValue, vừa cho biết giá trị thực tại đỉnh (khi pop gặp số nhỏ hơn min hiện tại thì “đương nhiên” đó là encoded).
Như vậy ta chỉ push encoded chứ không cần push thêm val lần nữa - vừa đủ để thực hiện getMin(), vừa tiết kiệm không gian. Công thức khôi phục đúng là: oldMin = 2 * newMin − encoded với newMin chính là minValue sau khi bạn push xong.
Hy vọng phần giải thích này sẽ giúp bạn hiểu rõ hơn 😁
Em chào anh ạ,
thỉnh thoảng em lướt Tiktok cũng thấy video của CLB Lập trình - THPT Ngọc Tảo và thấy khá hay. Gần đây mới được biết anh là người thành lập và bất ngờ hơn anh còn là sinh viên PTIT khoá D14. Em xin tự giới thiệu, em là Nguyễn Mạnh Quân khoá D20 PTIT, rất vui được làm quen với anh ạ 😊
THẢO LUẬN
Các thầy trên lớp gọi là thuật toán thì có nên cãi các thầy không :VV
Cám ơn bài viết của bạn !
Quả thực thì để RAG hoạt động tốt, yêu cầu hầu như tất cả bước phải chỉnh chu và chính xác (từ data -> indexing -> retrieval -> rerank -> generation .v.v)
Mình có một vài thắc mắc như sau
Chào bạn MinhDrake, cảm ơn bạn đã đặt câu hỏi! Thực ra “Chiêu 3” mình giới thiệu chỉ cần push đúng một lần giá trị mã hoá (không phải hai lần), để vẫn đảm bảo O(1) không gian phụ. Vì sao không cần push thêm val? Giá trị mã hóa (encoded) vừa chứa đủ thông tin để biết đời trước của minValue, vừa cho biết giá trị thực tại đỉnh (khi pop gặp số nhỏ hơn min hiện tại thì “đương nhiên” đó là encoded). Như vậy ta chỉ push encoded chứ không cần push thêm val lần nữa - vừa đủ để thực hiện getMin(), vừa tiết kiệm không gian. Công thức khôi phục đúng là: oldMin = 2 * newMin − encoded với newMin chính là minValue sau khi bạn push xong. Hy vọng phần giải thích này sẽ giúp bạn hiểu rõ hơn 😁
mỗi a viết bài là cực thôi 🤣🤣
bài viết ý nghĩa quá ạ
ôi idol của lòng e
) hữu duyên ms đọc đc bài của idol
Anh đang xem trên bản Viblo mobile cũng thấy lỗi hiển thị code sql trong bài viết sít rịt vào text 🤣
Dạ vâng ạ. Hình như chức năng follow của Viblo lỗi nên em bấm follow mà refresh lại trang nó lại mất 😅
Ồ em cũng học PTIT à 🤘 Xin chào người anh em đồng môn 🤜🤛
Em chào anh ạ, thỉnh thoảng em lướt Tiktok cũng thấy video của CLB Lập trình - THPT Ngọc Tảo và thấy khá hay. Gần đây mới được biết anh là người thành lập và bất ngờ hơn anh còn là sinh viên PTIT khoá D14. Em xin tự giới thiệu, em là Nguyễn Mạnh Quân khoá D20 PTIT, rất vui được làm quen với anh ạ 😊
Ở đoạn này, mình nghĩ nếu val < minValue (min mới!) thì phải thực hiện 2 bước chứ nhỉ:
=> Sau đó đoạn lấy ra được giá trị min cũ thì mới thực hiện =: 2 * val_cũ - min_latest
Đỉnh của chóp 😱
Bài viết bổ ích quá ạ :>>
Hay
🥰🥰Tuyệt vời
Trước giờ toàn dùng RabbitMQ 😲
=_=''' Khó nhằn, +1 ủng hộ tác giả
sos dp, không khó như lời đồn (> lời đồn)
thanks bro :v
Một bài viết hữu ích.