Một vài câu chuyện xung quanh phát triển Chatbot (Phần 1)
Chào mừng các bạn đã đến tới series một vài câu chuyện xung quanh phát triển Chabot. Trong series này gồm nhiễu bài viết mình dự định có cách nội dung như sau:
- Phần 1: Tổng quan về ChatBot và các phương pháp phát triển
- Phần 2: Mình tập tành xây dựng hệ thống ChatBot như nào và khái niệm các kĩ thuật liên quan
- Phần 3: Mình tập tành xây dựng hệ thống ChatBot như nào và khái niệm các kĩ thuật liên quan (Tiếp)
- Phần 4: Các điểm lưu ý khi xây dựng ứng dụng Chatbot trong thực tiễn
- Và vân vân mây mây
Hy vọng chuỗi bài viết này mang lại nhiều gía trị cho mọi người. Cảm ơn mọi người đã dành thời gian đọc.
A. Tổng quan
I. Lợi ích của ChatBot
Chatbot từ lâu đang nhanh chóng trở thành công cụ thiết yếu cho doanh nghiệp. Chúng ta có thể dễ dàng bắt gặp chatbot trong cuộc sống hàng ngày dưới nhiều hình thái khác nhau khi mua sắm online, online banking, tư vấn học tập trực tuyến, etc. Hiển nhiên, các dự án chatbot đã và đang đem lại rất nhiều lợi ích cho cả khách hàng và doanh nghiệp:
-
Sẵn sàng: Một trong những lợi ích nổi bật của chatbot là khả năng hoạt động liên tục, 24/7. Khách hàng có thể nhận được sự hỗ trợ bất cứ lúc nào, ngay cả ngoài giờ làm việc thông thường. Điều này không chỉ nâng cao trải nghiệm khách hàng mà còn giúp doanh nghiệp duy trì sự hài lòng và trung thành từ phía khách hàng. Việc không bị giới hạn bởi thời gian giúp các tổ chức tiết kiệm chi phí nhân sự và tận dụng tối đa nguồn lực.
-
Tốc độ: Chatbot có khả năng xử lý nhiều yêu cầu cùng một lúc và cung cấp phản hồi ngay lập tức. Điều này giúp giảm thiểu thời gian chờ đợi của khách hàng, đặc biệt trong những giờ cao điểm khi lượng yêu cầu tăng lên. Tốc độ phản hồi nhanh chóng không chỉ làm hài lòng khách hàng mà còn tạo điều kiện cho doanh nghiệp giải quyết vấn đề kịp thời, từ đó nâng cao hiệu quả hoạt động.
-
Khả năng mở rộng: Cuối cùng, chatbot có khả năng mở rộng rất linh hoạt. Khi doanh nghiệp phát triển và số lượng khách hàng gia tăng, chatbot có thể dễ dàng được cập nhật và mở rộng để đáp ứng nhu cầu mới mà không cần phải tuyển dụng thêm nhân viên. Điều này giúp doanh nghiệp tiết kiệm chi phí và thời gian, đồng thời đảm bảo rằng mọi khách hàng đều nhận được sự hỗ trợ kịp thời và hiệu quả.
II. Các phương pháp phát triển chatbot
- Rule-based chatbots
Chatbot được phát triển theo phương pháp này sẽ dẫn dắt một cuộc trò chuyện theo các kịch bản cụ thể đã lập trình sẵn. Mặc dù dễ dàng sử dụng và phát triển nhưng chatbot được xây dựng bằng phương pháp này hạn chế về khả năng cập nhật thêm kiến thức, câu trả lời thường được cố định không thể giao tiếp tự nhiên với người dùng.
- Menu-based chatbots
Chatbot sẽ cung cấp memu được chuẩn bị sẵn cho người dùng gồm một danh sách các lựa chọn. Mỗi lựa chọn có thể dẫn tới một câu trả lời hay một kịch bản cố định. Chatbot này hiệu quả cho những trường hợp đơn giản tuy nhiên nó cũng khiến người dùng không thoải mái đối với những câu hỏi phức tạp, câu trả lời không có trong menu
- Hybrid Chatbot
Hybrid Chatbot là loạt chatbot kết hợp giữa tự động hóa và tư vấn bởi các nhân viên chăm sóc khách hàng. húng có khả năng trả lời các câu hỏi thông thường, trong khi những vấn đề phức tạp hơn sẽ được xử lý bởi nhân viên thực. Điều này giúp nâng cao hiệu quả phục vụ và đảm bảo rằng khách hàng luôn nhận được sự hỗ trợ phù hợp. Tuy nhiên trong trường hợp hệ thống vào cao điểm xử lý, người dùng có thể chờ lâu do nhân viên chăm sóc khách hàng quá tải.
- AI powered chatbot
Cuối cùng là chatbot dựa trên công nghệ trí tuệ nhân tạo cho phép người dùng đặt câu hỏi mở và cung cấp phản hồi tự nhiên giống như con người. Đặc biệt với sự phát triển bùng nổ của các mô hình sinh (generative ai) gần đây đã mở ra một kỷ nguyên phát triển mới cho việc ứng dụng xây dụng các công cụ chatbot. Đặc biệt, các chatbot này có khả năng học hỏi từ các cuộc hội thoại, cập nhật dữ liệu theo thời gian thực. Trong series này, mình tập trung về các phương pháp kĩ thuật liên quan tới loại hình chatbot này
B. AI Powered Chatbot
I. Quá trình phát triển
Với sự phát triển của loại hình chatbot dựa trên công nghệ AI, mình chia thành 2 giai đoạn: trước và sau khi công nghệ sinh (Generative AI)
1. Trước khi Generative AI phổ biến
Trước khi xuất hiện của các mô hình sinh, ChatBot AI thường được xây dựng trên những framework như RASA . Việc phát triển trên RASA cũng khá đơn giản. Đầu tiên, bạn cần cung cấp dữ liệu huấn luyện cho chatbot, bao gồm các câu hỏi, câu trả lời, và các nhãn (intent) tương ứng. Dữ liệu này giúp mô hình học được các ý định của người dùng và cách phản hồi phù hợp. Khi người dùng gửi câu hỏi, Rasa phân tích câu hỏi đó để xác định ý định của người dùng. Ví dụ, nếu người dùng hỏi "Tôi muốn đặt phòng", chatbot sẽ nhận diện ý định là "book_room". Dựa trên phân tích mục đích câu hỏi người dùng, chatbot sẽ thực hiện các hành động tương ứng có thể là truy xuất thông tin trong database, vv và cuối cùng là tạo ra phản hồi cho người dùng.
Phương pháp này cho phép người phát triển có thể tùy chỉnh các kịch bản hội thoại phù hợp với cụ thể từng doanh nghiệp với chi phí thấp. Tuy nhiên tính tự nhiên trong các câu phản hồi và tính linh hoạt các tình huống thực tế bị hạn chế rất nhiều
2. Sau khi Generative AI phổ biến
Tuy nhiên cuộc chơi đã thay đổi từ khi Generative AI xuất hiện, LLM đã thúc đẩy sự phát triển ứng dụng chatbot. Một số kỹ thuật ứng dụng LLM trong phát triển chatbot mà chúng ta có thể đề cập như:
- Train from scratch
- Finetune
- RAG
Mỗi phương pháp đều có ưu và nhược điểm cụ thể. Tùy thuộc vào mục tiêu, tài nguyên và dữ liệu sẵn có, chúng ta có thể chọn những phương pháp khác nhau
II. Tổng quan các phương pháp phát triển chatbot
1. Train from scratch
Ở phương pháp này, team phát triển cần thu thập dữ liệu, thiết kế hoặc chọn mô hình phù hợp và huấn luyện mô hình trên bộ dữ liệu đó. Các mô hình thông thường là các mô hình lớn gồm hàng trăm triệu cho đến hàng trăm tỉ tham số.
Theo một thống kê của trang Originality.ai, ở các mô hình có tiếng nhất bây giờ như gpt ta có số lượng tham số như sau:
- GPT-1 = 117 triệu tham số
- GPT-2 = 1.2 tỉ tham số
- GPT-3 = 175 tỉ tham số
- GPT-4 = 1.6 triệu tỉ tham số
Nhận xét cá nhân
Ưu điểm:
- Khả năng kiểm soát : Team phát triển có thể chọn mô hình phát triển, cách thức chuẩn bị và chất lượng dữ liệu, cách mô hình phản hồi
- Chất lượng câu trả lời: Khi xây dựng từ đầu, mô hình có thể được tối ưu hóa hoàn toàn cho một lĩnh vực hoặc một bối cảnh cụ thể mà không bị ảnh hưởng bởi kiến thức từ những lĩnh vực hay khía cạnh không cần thiết.
- Maintain: Việc chủ động trong xây dựng mô hình sẽ giúp cho team phát triển dễ dàng chủ động chỉnh sửa, nâng cấp mô hình trong thời gian phát triển dài mà không cần chờ cập nhật từ các bên thứ 3
Nhược điểm
- Tốn kém tài nguyên, chi phí lớn: Huấn luyện từ đầu đòi hỏi tài nguyên phần cứng mạnh mẽ (GPU/TPU) và thời gian dài, đặc biệt đối với các mô hình lớn. Đương nhiên chi phí huấn luyện cũng sẽ rất lớn. Theo một bên thạo tin cho hay vào năm 2024, OpenAI đã chi tổng cộng 8.5 tỉ đô la cho huấn luyện mô hình và chi phí nhân sự ( source ) trong đó chi phí huấn luyện GPT-4 khoảng 63 triệu đô
- Dữ liệu huấn luyện lớn: Phương pháp này đòi hỏi một lượng dữ liệu chất lượng cao với số lượng rất lớn. GPT-4 được huấn luyện với khoảng 13T token bao gồm cả dữ liệu text và code
- Đòi hỏi chuyên môn cao: Biện pháp này cũng yêu cầu đội ngũ nhân sự giỏi có trình độ chuyên môn cao trong xây dựng mô hình ngôn ngữ lớn
- Tính cập nhật: Huấn luyện mô hình dữ liệu lớn tương đối mất thời gian vì thế sẽ gây khó khăn trong trường hợp tri thức cần cập nhật liên tục
2. Fine-tuning
Fine-tuning là một kĩ thuật trong machine learning được thực hiện bằng cách sử dụng một mô hình đã được huấn luyện sẵn trên một lượng dữ lượng lớn để huấn luyện trên một bộ dữ liệu nhỏ hơn có domain hẹp hơn với mục đích tối ưu mô hình hoạt động tốt hơn trên domain hẹp đó. Các kỹ thuật dùng để fine tuning LLM, các bạn có thể theo dõi thêm tại bài viết Các kỹ thuật tuning mô hình Large Language Model (LLM) .
Nhận xét cá nhân:
Ưu điểm
- Nân cao độ chính xác: Fine-tuning sẽ giúp cải thiện độ chính xác của mô hình trong một domain cụ thể do được tinh chỉnh trong bộ dữ liệu sát với thực tế phù hợp kỳ vọng hơn
- Tiết kiệm chi phí: Fine-tuning sẽ giúp chúng ta tiết kiệm hơn so với việc huấn luyện một mô hình AI từ đầu do tận dụng được thông tin được huấn luyện sẵn trước đó
- Khắc phục hạn chế về mặt dữ liệu: Kỹ thuật này yêu cầu ít dữ liệu hơn vì mô hình đã được thừa hưởng kiến thức được huấn luyện trước đó trên bộ dữ liệu rất lớn
Nhược điểm
- Overfitting: Nếu bộ dữ liệu nhỏ và thiếu tính đa dạng, không bao phủ các trường hợp có thể xảy ra, mô hình sau khi tiến hành fine-tuning có thể gặp hiện tượng hoạt động tốt trên dữ liệu fine-tuning nhưng không hoạt động tốt trên dữ liệu mới
- Thiên kiến Có thể gây ra hiện tượng đưa ra kết quả bị bias sau khi finetuning
- Tài nguyên tính toán: Tuy fine-tuning có chi phí rẻ hơn so với việc huấn luyện từ đầu nhưng cũng cần một chi phí đáng kể đặc biệt
- Tính cập nhật: Tương tự như "Training from scratch", phương pháp fine-tuning cũng tương đối mất thời gian vì thế sẽ gây khó khăn trong trường hợp tri thức cần cập nhật liên tục
3. RAG
RAG là từ được viết tắt từ Retrieval-Augmented Generation, một kĩ thuật dựa trên sự kết hợp của kĩ thuật truy vấn dữ liệu và mô hình sinh (generative model). Như mình trình bày phía bên trên, một điểm yếu chung của cả 2 phương pháp fine-tuning và training from scratch chính là khả năng cập nhật, việc này cản trở cung cấp tri thức liên tục để mô hình có thể trả ra các kết quả chính xác. Và RAG giúp chúng ta giải quyết được vấn đề nhức đầu đó
Về tổng quan, RAG thường bao gồm những các bước sau đây
- Xây dựng kho dữ liệu: Đầu tiên chúng ta cần xây dựng một kho chứa dữ liệu liên quan phục vụ cho chatbot. Kho dữ liệu này có thể ở bất dữ dạng nào chỉ cần có chức năng lưu trữ và hỗ trợ truy vấn dữ liệu.
- Truy vấn dữ liệu: Bước này sẽ thực hiện tìm kiếm và trả về toàn bộ các document liên quan sử dụng bằng các kĩ thuật truy vấn như vector search, text search etc.
- Sinh câu trả lời: Tài liệu liên quan câu hỏi sau được truyền vào làm bối cảnh để mô hình có thể kết hợp với câu hỏi đầu vào để sinh ra câu trả lời
Tất nhiên để một hệ thống RAG hoạt động hiệu quả thì chỉ 3 bước bên trên là không đủ, mình sẽ trình bày chi tiết hơn ở các bài sau.
Nhận xét cá nhân
Ưu điểm
- Tính liên quan: Bằng cách sử dụng nguồn dữ liệu được cập nhật liên tục làm bối cảnh cho mô hình sinh AI nên RAG có thể sinh ra câu trả lời chính xác, cụ thể hơn so với các phương pháp trước đó.
- Giảm thiểu hiện tượng ảo giác: Dữ liệu về bối cảnh được cung cấp cụ thể, giảm bớt hiện tượng mô hình cung cấp thông tin không chính xác cũng như bị sai lệch
- Khả năng mở rộng: RAG cho phép xử lý dữ liệu số lượng lớn thích hợp cho phát triển ứng dụng giải quyết các vấn đề trong cuộc sống một cách nhanh chóng với chi phí hợp lý hơn
- Tính cập nhật: RAG có thể tích hợp dễ dàng với các nguồn dữ liệu được cập nhật liên tục
Nhược điểm
- Phụ thuộc chất lượng của kho dữ liệu: Vì kho dữ liệu quyết định bối cảnh cụ thể đưa vào mô hình sinh chứ không phải được chuẩn bị sẵn như hai phương pháp training from scratch hay finetuning
- Độ trễ: Việc truy vấn trên lượng dữ liệu có thể dẫn tới tăng độ trễ. Đồng thời lượng context đưa vào cũng thường rất lớn, điều đó sẽ rất tới thời gian xử lý sẽ tăng lên, giảm trải nghiệm người dùng. Tuy nhiên vấn đè này hiện nay cũng có rất nhiều phương pháp để tối ưu
Việc lựa chọn giữa Training from Scratch, Fine-tuning hay RAG không chỉ là một quyết định kỹ thuật mà còn là chiến lược tối ưu hóa nguồn lực và mục tiêu của bài toán. Trong bối cảnh cần sự linh hoạt và khả năng cập nhật thông tin liên tục, RAG nổi bật như một giải pháp mạnh mẽ, đặc biệt cho các lĩnh vực thay đổi nhanh và yêu cầu kiến thức đa dạng. Ngược lại, Fine-tuning lại là lựa chọn lý tưởng khi cần tập trung vào một miền tri thức cụ thể, mang lại những câu trả lời chính xác và phù hợp với thực tế. Dù là phương pháp nào, điều cốt lõi vẫn là sự thấu hiểu bài toán và bối cảnh triển khai, bởi chỉ khi chọn đúng hướng đi, chatbot mới có thể thực sự trở thành công cụ hiệu quả, đáp ứng kỳ vọng ngày càng cao của người dùng.
All rights reserved