Hướng dẫn xây dựng chatbot RAG hỗ trợ AI với Amazon Lex, Bedrock và S3
Mục lục
Doanh nghiệp ngày càng cần trợ lý AI trả lời đúng, nhanh và bám sát dữ liệu nội bộ – chatbot RAG đang trở thành hướng triển khai thực tế hơn so với chatbot chỉ dựa vào kiến thức sẵn có của mô hình.
Bài viết này hướng dẫn cách xây dựng chatbot RAG hỗ trợ AI bằng bộ dịch vụ AWS gồm Amazon Lex, Amazon Bedrock và Amazon S3 – được trình bày chi tiết, dễ triển khai, dễ mở rộng và phù hợp cho cả giai đoạn thử nghiệm lẫn ứng dụng thực tế.
Yêu cầu trước khi bắt đầu
- Có tài khoản AWS và đã đăng nhập bằng người dùng IAM có quyền quản trị (admin).
- Có quyền truy cập vào mô hình Amazon Titan Embeddings G1 – text trên Amazon Bedrock.
- Có quyền truy cập vào mô hình Anthropic Claude 3.5 Sonnet trên Amazon Bedrock.
- Có quyền truy cập vào các tài liệu chính sách du lịch (bạn có thể tải từ Google Drive tại đây).
- Có kinh nghiệm sử dụng AWS Console.
- Không cần viết code.
RAG (Retrieval-Augmented Generation) là gì?
Các mô hình ngôn ngữ lớn (LLM) như GPT-4 và Claude hiện xuất hiện ở khắp nơi. Chúng có thể trả lời rất tốt nhiều vấn đề, nhưng cũng có lúc sai theo cách khá “khó đỡ”, dẫn đến hiện tượng hallucination (ảo giác) – khi mô hình tạo ra thông tin sai sự thật hoặc bịa ra dữ liệu. Từ đây, khái niệm RAG xuất hiện.
Marina Danilevsky – Nhà khoa học nghiên cứu cao cấp tại IBM đã gọi RAG là một “framework” (khung phương pháp) giúp LLM trả lời chính xác hơn và cập nhật nhanh hơn.
Trước khi tìm hiểu sâu về RAG, bạn cần hiểu ngắn gọn về “generation” (tạo sinh). Trong ngữ cảnh của RAG, “generation” là việc các LLM tạo ra văn bản để phản hồi câu hỏi của người dùng, còn gọi là prompt.
Các LLM này đôi khi đưa ra câu trả lời sai do ngữ cảnh hạn chế hoặc thông tin đã cũ. Lý do là chúng chủ yếu lấy thông tin từ dữ liệu đã được huấn luyện trước đó. Hãy tưởng tượng khi được hỏi ca sĩ yêu thích của bạn đã giành bao nhiêu giải Grammy, và bạn trả lời dựa trên một bài báo đã đọc từ bốn năm trước. Câu trả lời đó có thể đúng, nhưng có hai vấn đề: thứ nhất, bạn không dẫn nguồn – thứ hai, thông tin đã lỗi thời.
Đây cũng chính là vấn đề mà các LLM truyền thống thường gặp. Câu trả lời có thể cũ và thiếu nguồn đáng tin cậy để kiểm chứng.
Giờ hãy hình dung cách bạn tra cứu thông tin trên Google từ một nguồn uy tín. Khi đó, câu trả lời của bạn sẽ chính xác và bám sát thực tế hơn. Nếu người hỏi nghi ngờ, bạn chỉ cần gửi link nguồn uy tín là họ sẽ tự kiểm tra.
Vậy, điều này liên quan gì đến LLM và RAG?
Thay vì để LLM chỉ dựa vào dữ liệu huấn luyện sẵn, dễ dẫn đến câu trả lời cũ – RAG sẽ truy xuất thông tin liên quan đến câu hỏi từ một kho dữ liệu trước khi mô hình tạo câu trả lời.
- Kho dữ liệu này có thể gồm nguồn bên ngoài như internet hoặc nguồn nội bộ như tài liệu doanh nghiệp (và trong hướng dẫn này sẽ dùng tài liệu nội bộ). Nhờ vậy, câu trả lời được tạo ra có độ chính xác cao hơn.
RAG giúp LLM cập nhật thông tin tốt hơn bằng cách truy xuất dữ liệu từ các nguồn bổ sung, thay vì chỉ phụ thuộc vào dữ liệu đã được huấn luyện từ trước.
Amazon Bedrock là gì?
Amazon Bedrock là dịch vụ được AWS quản lý, cho phép bạn truy cập vào các foundation model (mô hình nền tảng), tức là những “bộ máy AI cốt lõi” đứng sau các ứng dụng GenAI (Generative AI – Trí tuệ nhân tạo tạo sinh).
Ưu điểm nổi bật của Bedrock là AWS xử lý sẵn phần hạ tầng phía sau. Bạn không cần tự cấp phát GPU, thiết lập pipeline cho mô hình hay lo lắng về vận hành hệ thống.
Đây là một nền tảng tập trung – nơi bạn có thể thử nghiệm, tùy biến và triển khai các mô hình AI chất lượng cao từ nhiều nhà cung cấp như Anthropic, Stability AI và các mô hình Titan do Amazon phát triển.
Ví dụ thực tế: Giả sử bạn đang xây chatbot chăm sóc khách hàng. Với Bedrock, bạn chỉ cần chọn một mô hình ngôn ngữ phù hợp, tinh chỉnh theo nhu cầu riêng, rồi tích hợp vào ứng dụng. Toàn bộ quá trình này không yêu cầu bạn cấu hình server hay viết code hạ tầng.
Quy trình 6 bước xây chatbot RAG chuyên nghiệp
Đầu tiên, bạn cần truy cập các mô hình trên AWS thông qua Bedrock như sau:
- Đăng nhập vào tài khoản AWS IAM của bạn bằng quyền root.
- Vào Amazon Bedrock > Model Catalog.

Danh mục mô hình
- Tìm mô hình “Titan Embeddings G1 – Text” và “Claude 3.5 Sonnet”.
Khi bấm vào các mô hình này, bạn sẽ được chuyển đến trang hiển thị thông tin chi tiết. Bạn chưa cần thao tác gì ở bước này.
Chúng ta sẽ bắt đầu quy trình xây chatbot RAG trên AWS qua 6 bước chi tiết dưới đây:
Bước 1: Tải tài liệu chính sách du lịch lên bucket S3
Để tải tài liệu lên, bạn vào trang Amazon S3 trong AWS Console, sau đó tạo một bucket. Nếu cần hướng dẫn chi tiết cách tạo bucket, bạn có thể xem tài liệu chính thức của AWS.
Tiếp theo, tải tài liệu đã tải xuống lên bucket S3.
Lưu ý: Tài liệu đang ở định dạng zip, vì vậy bạn cần giải nén trước khi tải lên.
Bước 2: Tạo Knowledge Base trong Amazon Bedrock
Sau khi đã tạo các S3 bucket và tải tài liệu lên, chúng ta chưa thể kết nối ngay chatbot xây bằng Lex trực tiếp với S3 bucket. Về mặt AI, S3 chỉ là nơi lưu trữ dữ liệu, chưa có khả năng hiểu nội dung tài liệu.
Để giải quyết điều này, chúng ta sẽ dùng Amazon Bedrock.
Tạo knowledge base
Thực hiện theo các bước sau trong AWS Console:
- Vào Amazon Bedrock.
- Chọn Build > Knowledge Bases.
- Nhấn Create.
- Trong menu chọn loại, chọn Knowledge base with vector store.
- Ở mục IAM permissions, giữ mặc định: Create and use a new service role.
- Ở mục nguồn dữ liệu, chọn: Amazon S3.
- Nhấn Next.
Chọn nguồn dữ liệu từ S3
- Nhấn Browse S3.
- Chọn bucket chứa tài liệu đã upload.
- Nhấn Next.
Chọn embedding model và vector store
Ở bước cấu hình tiếp theo:
-
- Nhấn Select model.
- Chọn embedding model: Titan Embeddings G1 – Text.
- Chọn vector store: Amazon OpenSearch Serverless.
- Nhấn Apply.
- Giữ nguyên các cấu hình còn lại và nhấn Next.
- Tạo knowledge base: Nhấn Create Knowledge Base. Quá trình này thường mất vài phút.
Sau khi hoàn tất, Bedrock sẽ chuyển bạn đến trang chi tiết knowledge base.
Đồng bộ dữ liệu (Sync)
Knowledge base tạo xong vẫn chưa đọc dữ liệu ngay. Bạn cần đồng bộ với nguồn dữ liệu S3:
- Kéo xuống phần Data source.
- Chọn data source.
- Nhấn Sync.
Sau vài giây, dữ liệu sẽ được đồng bộ.
Lưu ý: Nếu bạn có nhiều file hơn ví dụ trong tutorial (chỉ 4 file PDF), thời gian sync sẽ lâu hơn.
Đến đây, bạn đã có một Bedrock Knowledge Base kết nối với S3 bucket chứa tài liệu.
Bước 3: Tạo chatbot trong Amazon Lex
Bây giờ chúng ta tạo bot để người dùng có thể trò chuyện và đặt câu hỏi.
Tạo bot mới
- Vào Amazon Lex.
- Nhấn Create bot.
- Chọn Create a blank bot (trong mục Traditional creation method).
Cấu hình cơ bản cho bot
- Bot name: Đặt tên mà bạn muốn.
- Ở phần quyền truy cập: IAM permissions: chọn Create a role with basic Amazon Lex permissions
- Ở phần COPPA: Chọn No (bot này không thuộc phạm vi COPPA)
- Nhấn Next.
Thiết lập mô tả và giọng nói
Ở trang tiếp theo:
- Nhập mô tả ngắn trong ô Description.
- Chọn giọng đọc cho bot (text-to-speech). Amazon Lex cho phép nghe thử từng giọng, rất tiện để chọn giọng phù hợp với trải nghiệm người dùng.

Chọn ngôn ngữ cho bot
Bước 4: Thêm Welcome Intent cho chatbot
Sau khi tạo bot xong, Lex sẽ đưa bạn đến màn hình tạo intent.
Intent là gì? Intent là hành động hoặc mục đích mà chatbot dùng để xử lý yêu cầu của người dùng.
Ví dụ:
- Người dùng nói “Hi”.
- Bot hiểu đây là intent chào hỏi.
- Bot trả lời lời chào tương ứng.
Tạo WelcomeIntent
- Đổi tên intent thành: WelcomeIntent.
- Kéo xuống mục Sample utterances
- Thêm các câu mẫu. Bạn có thể thêm nhiều câu chào theo ý muốn.
Cấu hình câu trả lời ban đầu
Trong phần Initial response:
- Ở Message group, nhập lời chào, ví dụ: Xin chào! Chúng tôi có thể giúp gì cho bạn?
Cấu hình hành vi sau khi bot trả lời
- Nhấn Advanced options.
- Trong Set values, chọn: Wait for users input.
- Nhấn Update options.
Thiết lập này giúp bot chờ người dùng nhập tiếp câu hỏi sau khi chào.
FallbackIntent tự động
Khi quay lại danh sách Intents, bạn sẽ tìm thấy FallbackIntent được tạo sẵn.
Intent này sẽ được gọi khi người dùng nhập câu không khớp với các utterance đã khai báo.
Bước 5: Xây chatbot và kiểm tra hoạt động
Sau khi đã cấu hình intent, bạn cần build bot để áp dụng toàn bộ thiết lập.
Build bot
Nhấn Build ở góc trên bên phải và chờ hệ thống build xong.

Nhấn vào Build để tiến hành xây bot
Test bot
Nhấn Test ở góc trên bên phải. Màn hình test chatbot sẽ hiện ra. Bạn có thể thử nhập: Xin chào.
Bot sẽ trả về lời chào đã cấu hình trong WelcomeIntent.
Kiểm tra intent đang được gọi
Khi nhấn Inspect, bạn sẽ thấy intent hiện tại mà bot đang nhận diện. Ví dụ ở đây là: WelcomeIntent. Tới bước này, bot đã hoạt động ở mức cơ bản.
Lưu ý: Bot vẫn chưa có khả năng trả lời câu hỏi dựa trên tài liệu trong S3.
Bước 6: Thêm Amazon QnAIntent để bot trả lời từ knowledge base
Đây là bước giúp bot có khả năng GenAI và trả lời FAQ từ dữ liệu doanh nghiệp.
QnAIntent là gì? Amazon QnAIntent là built-in intent của Lex, dùng mô hình GenAI để:
- Nhận câu hỏi người dùng.
- Truy vấn nguồn kiến thức được cấp quyền.
- Trả lời theo ngữ cảnh.
Thêm QnAIntent
- Trên trang Intents, chọn: Add intent > Use built-in intent.
- Chọn QnAIntent.
- Đặt tên intent theo ý bạn.
- Nhấn Add.

Chọn QnAIntent, như hình trên
Cấu hình QnAIntent
Trong phần QnA configuration: Chọn model > Claude 3.5 Sonnet.
Kết nối với Bedrock Knowledge Base
Bạn cần cung cấp Knowledge Base ID đã tạo ở Bước 2:
- Quay lại Amazon Bedrock > Knowledge Bases.
- Sao chép Knowledge Base ID.
- Dán vào trường: Knowledge base for Amazon Bedrock Id.
Sau đó:
- Nhấn Save intent.
- Nhấn Build để xây lại bot.
Kiểm tra chatbot sau khi tích hợp QnAIntent
Bây giờ bạn có thể test hội thoại theo luồng như sau:
- Gửi câu chào để kích hoạt WelcomeIntent.
- Hỏi một câu liên quan đến tài liệu trong knowledge base.
Ví dụ:
- Tổng chi phí chuyến đi là bao nhiêu?
- Chỗ này có cho mang theo thú cưng không?
Nếu cấu hình đúng, bot sẽ lấy thông tin từ Amazon Lex (QnAIntent) > Truy vấn sang Bedrock Knowledge Base > Knowledge base truy xuất dữ liệu từ tài liệu đã đồng bộ trong S3.
Kết quả nhận được: Bot trả lời đúng theo nội dung tài liệu của bạn, thay vì trả lời chung chung.

Sau khi xây dựng bạn cần test lại để đánh giá khả năng phản hồi của bot
Tổng kết
Bạn vừa xây một chatbot RAG trên AWS có khả năng trả lời dựa trên dữ liệu riêng của doanh nghiệp. Mô hình này phù hợp cho nhiều bài toán thực tế như:
- Hỗ trợ khách hàng.
- Hỏi đáp nội bộ HR.
- Tra cứu tài liệu sản phẩm.
- Hướng dẫn chính sách và quy trình nội bộ.
Khi kết hợp Amazon Lex + Bedrock + S3 + RAG, bạn có thể tạo ra một hệ thống trả lời theo ngữ cảnh, bám sát tài liệu và dễ mở rộng theo nhu cầu.
Bạn cũng có thể tiếp tục cải tiến bằng cách:
- Thêm nhiều tài liệu vào knowledge base.
- Thử các foundation model khác trong Bedrock.
- Tinh chỉnh intent để xử lý hội thoại phức tạp hơn.
Nếu doanh nghiệp bạn mới bắt đầu hoặc đội ngũ chưa có nhiều kinh nghiệm triển khai, hãy liên hệ RenovaCloud để được tư vấn kiến trúc, thiết lập Knowledge Base, tối ưu RAG và hỗ trợ triển khai end-to-end theo đúng nhu cầu thực tế!
