Quá trình thu thập dữ liệu phải tự phát triển một công cụ Web Scraping để tổng hợp dữ liệu Bài toán 3: Tạo ra một chatbot tư vấn tuyển sinh sử dụng mô hình RAG để tổng hợp dữ liệu và t
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
-BÁO CÁO THỰC TẬP
NGÀNH: CÔNG NGHỆ THÔNG TIN
ĐỀ TÀI: CHATBOT HỖ TRỢ TUYỂN SINH
Cán bộ hướng dẫn: Nguyễn Văn Hoàng
Giảng viên đánh giá: TS Ngô Thị Duyên Sinh viên: Nguyễn Khắc Nam Huy
Mã sinh viên: 21020542 Lớp: K66-CB
Hà Nội, tháng 10 năm 2024
Trang 2Mục lục
I Giới thiệu chung 3
a Giới thiệu công ty 3
b Giới thiệu công việc 3
c Giới thiệu qua bài toán 4
II Yêu cầu bài toán 4
a Bài toán 1 4
b Bài toán 2 4
c Bài toán 3 5
III Tóm tắt lý thuyết, giải pháp, thuật toán 6
a Các lý thuyết, giải pháp và thuật toán liên quan 6
b Một số lý thuyết, công cụ và dịch vụ nổi bật được ứng dụng và các tích hợp để giải quyết vấn đề 7
IV Mô tả phần mềm cài đặt 10
V Kết quả đạt được, hướng phát triển 10
Trang 3LỜI CẢM ƠN
Trong suốt thời gian 3 năm học tập và rèn luyện tại Trường Đại Học Công Nghệ cho đến nay, em đã nhận được rất nhiều sự quan tâm, giúp đỡ của quý thầy
cô và bạn bè Với lòng biết ơn sâu sắc và chân thành nhất, em xin gửi đến quý thầy
cô ở khoa Công Nghệ Thông Tin – Trường Đại Học Công Nghệ đã nhiệt tình truyền đạt vốn kiến thức quý báu cho chúng em trong suốt thời gian học tập tại trường
Và đặc biệt, trong học kỳ này, Khoa đã tổ chức cho chúng em được tiếp cận với môn mà theo em là rất hữu ích đối với sinh viên ngành Khoa Học Máy Tính
Đó là bộ môn thực tập doanh nghiệp, để sinh viên có được kiến thức thực tiễn và
có định hướng cho công việc sau này Em xin gửi đến thầy Lê Phê Đô, người đã hướng dẫn cho em để có thể hoàn thành bộ môn thực tập doanh nghiệp này lời cảm
ơn sâu sắc nhất
Em cũng xin gửi lời cảm ơn chân thành tới công ty NTT DATA VDS vì đã giúp đỡ, tạo điều kiện và môi trường thuận lợi cho quá trình thực tập của em, giúp
em được trải nghiệm thực tiễn, trau dồi kĩ năng và tác phong làm việc trong suốt quá trình thực tập tại công ty Em cũng xin bày tỏ lòng biết ơn đến các anh/chị đồng nghiệp tại công ty, những người đã luôn giúp đỡ cũng như hỗ trợ em trong suốt quá trình thực tập Nhờ có sự hướng dẫn từ các anh/chị, em đã có thể hoàn thành tốt các công việc được giao cũng tích luỹ thêm kinh nghiệm thực tiễn quý giá
Trong quá trình thực tập, do kinh nghiệm thực tế còn hạn chế, khó tránh khỏi những sai sót Em kính mong thầy cô/bộ phận đánh giá bỏ qua những thiếu sót này Và với báo cáo thực tập này, nếu có thể, em rất mong nhận được những ý kiến đóng góp quý báu từ thầy/cô để em có thể hoàn thiện hơn trong tương lai
Em xin chân thành cảm ơn!
Trang 4I Giới thiệu chung
a Giới thiệu công ty
NTT DATA VDS là một công ty thành viên của tập đoàn NTT DATA, một trong những nhà cung cấp dịch vụ công nghệ thông tin hàng đầu thế giới
có trụ sở tại Nhật Bản Với hơn 50 năm kinh nghiệm trong lĩnh vực công nghệ thông tin, NTT DATA đã và đang xây dựng danh tiếng vững chắc trên toàn cầu, cung cấp các giải pháp và dịch vụ công nghệ tiên tiến nhằm hỗ trợ sự phát triển của các doanh nghiệp và tổ chức
Tại Việt Nam, NTT DATA VDS chuyên cung cấp các dịch vụ và giải pháp công nghệ thông tin tiên tiến bao gồm:
Giải pháp phần mềm doanh nghiệp: Hỗ trợ các doanh nghiệp tối ưu hóa quy trình hoạt động, tăng cường hiệu quả làm việc và quản lý hệ thống thông tin một cách chuyên nghiệp và hiệu quả
Phát triển ứng dụng và dịch vụ số: Xây dựng các ứng dụng và nền tảng số hóa nhằm tăng cường trải nghiệm khách hàng và đáp ứng nhu cầu thị trường
số ngày càng phát triển
Giải pháp tích hợp hệ thống: Cung cấp các giải pháp tích hợp hệ thống, giúp các doanh nghiệp quản lý, phân tích và xử lý dữ liệu một cách hiệu quả
Dịch vụ quản lý và vận hành hệ thống CNTT: Đảm bảo hệ thống thông tin của doanh nghiệp luôn hoạt động ổn định, an toàn và hiệu quả
b Giới thiệu công việc
Trong thời gian thực tập tại công ty, em đã có cơ hội tiếp thu và trau đòi thêm nhiều kiến thức về lập trình nói chung, đặc biệt là kiến thức về data analysis và AI Em đã được hướng dẫn và học hỏi từ các anh chị phụ trách, giú
em hiểu rõ hơn về các ngôn ngữ lập trình, các công cụ và công nghệ phổ biến Công việc chinh của em trong giai đoạn này là vừa học lý thuyết, vừa áp dụng thực hành thông qua các assignment được giao cho bởi các anh chị phụ trách Các assignment yêu cầu vận dụng rất nhiều kỹ năng trong các mảng phân tích dữ liệu, Machine Learning và AI Qua quá trình này, em không chỉ
Trang 5rèn luyện kỹ năng lập trình mà còn phát triển thêm khả năng tự nghiên cứu, tìm tòi giải pháp và cách giải quyết vấn đề
c Giới thiệu qua bài toán
Như đã nói ở trên, các bàu táon mà em cần giải quyết là những bài taons
áp dụng các kiến thức từ cơ bản đén chuyên sâu ở các mảng Phân tích dữ liệu, Machine Learning và AI 3 bài toán lớn có nội dung như sau:
Bài toán 1: Thực hành Data Manipulation và Data Visualization thông qua việc tìm hiểu và sàng lọc dữ liệu về các bài TED Talk trên kaggle.com
Bài toán 2: Phát triển một model Machine Learning dự doán giá homestay trong địa bàn Hà Nội dựa trên dữ liệu tự thu thập Quá trình thu thập dữ liệu phải tự phát triển một công cụ Web Scraping để tổng hợp dữ liệu
Bài toán 3: Tạo ra một chatbot tư vấn tuyển sinh sử dụng mô hình RAG để tổng hợp dữ liệu và trả lời các câu hỏi tuyển sinh Có sử dụng framework hỗ trợ LlamaIndex và cơ sở dữ liệu vector Pinecone
II Yêu cầu bài toán
a Bài toán 1
Trang web kaggle.com tổng hợp thông tin về tất cả các bài TED Talks được đăng trên trang chính thức Dataset bao gồm rất nhiều thông tin như số lượng xem, bình luận, mô tả, diễn giả…
Sử dụng các thư viện hỗ trợ là NumPy, Pandas và các thư viện hình hoá
dữ liệu như Matplotlib và Seaborn để xử lý và sàng lọc dữ liệu để dễ dàng phân tích, thống kê về các tiêu chí như số lượng người xem, bình luận, đánh giá…
b Bài toán 2
Tạo ra một công cụ Data Crawling để tổng hợp dữ liệu, thông tin về các căn nhà trong địa phận Hà Nội Sau đó sử dụng thông tin và xây dựng một model Machine Learning có khả năng dự đoán giá nhà với sai số nhỏ nhất có thể
Trang 6 Về ngôn ngữ và công cụ sử dụng: Sử dụng selenium webdriver để mở trang web thông qua Python và thu thập dữ liệu cũng như vượt qua Cloudflare, sử dụng Pandas và Seaborn để sắp xếp cũng như loại bỏ các dữ liệu không hợp
lệ như dữ liệu trống, dữ liệu ngoại lai Cuối cùng là sử dụng thư viện sklearn
để luyện model Machine Learning để đạt kết quả mong muốn
Yêu cầu chất lượng:
- Thu thập dữ liệu trong thời gian nhanh và hợp lý, giảm thiểu rủi rõ gặp lỗi và các hình thức tường lửa
- Xử lý dữ liệu hợp lý, thống kê các tiêu chí phù hợp và loại bỏ các dữ liệu gây ảnh hưởng tới kết quả như dữ liệu Null hay Outliers (dữ liệu ngoại lai)
- Phát triển model dự đoán giá nhà theo các thông tin cho trước với sai
số nhỏ nhất có thể (dự kiến deviation 5%)
c Bài toán 3
Về ngôn ngữ và framework sử dụng: Sử dụng framework LlamaIndex giúp chia nhỏ và vector hoá dữ liệu cũng như lưu trữ vào cơ sở dữ liệu vector Pinecone để dễ dàng truy cập Sử dụng streamlit để tạo giao diện dễ sử dụng
Về chức năng: Đầy đủ chức năng hỗ trợ và trả lời câu hỏi, ngoài ra còn các chức năng bổ sung thêm Cụ thể
o Chức năng trả lời các câu hỏi tuyển sinh: Sử dụng mô hình RAG và tổng hợp các dữ liệu trên trang tuyển sinh của nhà trường Từ đó tạo
ra được một cơ sở dữ liệu vector phù hợp để dễ dàng trong việc triển khai và sử dụng dữ liệu cũng như tìm kiếm câu trả lời
o Chức năng thêm vào: Sử dụng agents do LlamaIndex cũng cấp,
chatbot còn có thể thực hiện các tác vụ cơ bản, hoặc bất kì tác vụ nào được thêm vào miễn là được cung cấp quyền và tạo sẵn function phù hợp
Trang 7III Tóm tắt lý thuyết, giải pháp, thuật toán
a Các lý thuyết, giải pháp và thuật toán liên quan
Trong mỗi bài toán, em đều vận dụng các lý thuyết đã học được và tạo
ra các giải pháp phù hợp với yêu cầu cụ thể của bài toán như sau:
Trong bài toán 2, em đã áp dụng các bước cơ bản trong quá việc huấn luyện model Machine Learning đã được học như sau:
o Bước 1 Xác định vấn đề
Đầu tiên, em xác định loại vấn đề mà bạn muốn giải quyết, chẳng hạn như phân loại, hồi quy, phân nhóm, hay dự đoán thời gian Điều này sẽ giúp chọn lựa mô hình phù hợp
o Bước 2 Thu thập dữ liệu
Em đã học cách sử dụng Webdriver để làm công cụ tạo trình duyệt web thông qua Python Tuy vậy trong quá trình thu thập dữ liệu thì gặp phải khó khăn do trang web yêu cầu có sử dụng bảo mật Cloudflare Qua nhiều phép thử với các công cụ khác nhau như requests, seleniumbase, chromedriver… thì selenium và fake_useragent là công cụ duy nhất giúp thu thập dữ liệu website mà ít bị chặn bởi Cloudflare
o Bước 3 Tiền xử lý dữ liệu
Xử lý thiếu dữ liệu: Loại bỏ hoặc thay thế các giá trị thiếu.
Chuyển đổi định dạng: Chuyển đổi các kiểu dữ liệu để phù hợp
với yêu cầu của mô hình
Chuẩn hóa và tiêu chuẩn hóa: Đảm bảo rằng các tính năng có
cùng quy mô
Mã hóa các biến phân loại: Sử dụng các phương pháp như
one-hot encoding hoặc label encoding cho các biến phân loại
o Bước 4: Huấn luyện mô hình
Sau khi hoàn tất thu thập và thực hiện bước tiền xử lý dữ liệu với sự trợ giúp của Pandas và Seaborn Thì em thực hiện train model Machine
Trang 8Learning bằng cách phân chia dữ liệu thành tập huấn luyện (training set) và tập kiểm tra (test set) theo tỉ lệ 80%-20% Sau đó em lựa chọn mô hình bằng cách đánh giá qua các mô hình như Random Forest, SVM, Neural Network… qua các tiêu chí như R2 hay MSE (Mean Squared Error) để xác định mô hình cũng như đánh giá Sau đó tối ưu hoá mô hình bằng phương pháp điều chỉnh các tham số siêu (hyperparameter tuning)
Trong bài toán 3, em áp dụng mô hình RAG (Retrieval-Augmented Generation) cho chatbot, có sử dụng framework LlamaIndex để quảlý,
tổ chức dữ liệu cũng như tạo chỉ mục và vector hoá dữ liệu, còn
Pinecone để truy xuất vector và lưu trữ Quy trình hoạt động diễn ra như sau:
1 Dữ liệu được tổ chức: LlamaIndex giúp thu thập và tạo chỉ mục
cho các tài liệu từ nhiều nguồn, đảm bảo dữ liệu được tổ chức một cách hiệu quả
2 Chuyển đổi thành vector: Các tài liệu được chuyển đổi thành
vector thông qua các mô hình nhúng (embedding models) và sau
đó được lưu trữ trong Pinecone
3 Truy xuất thông tin: Khi nhận được câu hỏi từ người dùng, mô
hình RAG sẽ sử dụng Pinecone để tìm kiếm các tài liệu liên quan nhất dựa trên vector của câu hỏi
4 Tạo câu trả lời: Các tài liệu đã truy xuất sẽ được đưa vào mô hình
sinh (generation model) để tạo ra câu trả lời cho câu hỏi
5 Phản hồi: Cuối cùng, câu trả lời được trả về cho người dùng, giúp
họ nhận được thông tin chính xác và phong phú
b Một số lý thuyết, công cụ và dịch vụ nổi bật được ứng dụng và các tích hợp để giải quyết vấn đề
LlamaIndex: LlamaIndex (trước đây được gọi là GPT Index) là một
framework giúp kết nối các mô hình ngôn ngữ lớn (LLMs) với các nguồn dữ liệu bên ngoài, cho phép truy xuất và quản lý thông tin một cách hiệu quả LlamaIndex được thiết kế để cải thiện khả năng truy xuất và tổng hợp thông tin, hỗ trợ trong việc xây dựng các ứng dụng thông minh, như hệ thống hỏi
Trang 9đáp tự động, trợ lý ảo, và nhiều ứng dụng khác liên quan đến xử lý ngôn ngữ
tự nhiên (NLP)
Trong bài toán này, em sử dụng các chức năng sau của LlamaIndex:
- Quản lý và tổ chức dữ liệu: LlamaIndex giúp thu thập, tổ chức và
lưu trữ dữ liệu từ nhiều nguồn khác nhau, tạo điều kiện thuận lợi cho việc truy xuất thông tin Bằng cách xây dựng chỉ mục từ các tài liệu, LlamaIndex giúp cho việc tìm kiếm và truy xuất trở nên dễ dàng và hiệu quả hơn
- Tạo chỉ mục từ khóa: LlamaIndex có khả năng tạo ra các chỉ mục từ
khóa từ tài liệu, cho phép mô hình RAG tìm kiếm thông tin theo ngữ nghĩa, giúp truy xuất chính xác hơn
Pinecone:Pinecone là một nền tảng cơ sở dữ liệu vector được thiết kế đặc
biệt để lưu trữ, tìm kiếm và truy xuất các vector đại diện cho dữ liệu
Pinecone rất phù hợp cho các ứng dụng yêu cầu tìm kiếm thông tin nhanh chóng và chính xác trong các không gian vector cao chiều, như trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP), nhận dạng hình ảnh, và nhiều ứng dụng
AI khác
Trong bài toán này, em sử dụng các chức năng sau của Pinecone:
- Cơ sở dữ liệu vector: Pinecone cho phép người dùng lưu trữ và quản
lý hàng triệu vector mà không cần phải xây dựng và duy trì hạ tầng phức tạp Điều này giúp đơn giản hóa quy trình phát triển ứng dụng AI
- Tìm kiếm tương tự (Similarity Search): Pinecone hỗ trợ các truy
vấn tìm kiếm tương tự (similarity search) bằng cách tìm kiếm các vector tương đồng nhất với một vector truy vấn Điều này rất hữu ích trong việc tìm kiếm tài liệu, hình ảnh, hoặc bất kỳ dạng dữ liệu nào có thể được biểu diễn dưới dạng vector
Mô hình RAG ứng dụng LlamaIndex và Pinecone:
Phần 1 Chuẩn bị dữ liệu
Trang 101 Dữ liệu gốc:
o Bắt đầu với một tập hợp các tài liệu hoặc thông tin từ nhiều nguồn khác nhau Đây có thể là các bài viết, tài liệu nghiên cứu, hay bất kỳ
dữ liệu nào có giá trị thông tin
2 Sử dụng LlamaIndex:
o Tổ chức và chỉ mục dữ liệu: LlamaIndex giúp tổ chức dữ liệu, tạo ra
các chỉ mục từ khóa hoặc chỉ mục nhúng cho các tài liệu Điều này cho phép mô hình truy xuất thông tin dễ dàng và hiệu quả hơn
o Quản lý tài liệu: LlamaIndex có thể xử lý việc lưu trữ và quản lý tài
liệu, giúp bạn duy trì một kho dữ liệu có cấu trúc rõ ràng và dễ dàng truy cập
Phần 2 Chuyển đổi dữ liệu thành vector
3 Mô hình nhúng (Embedding model):
o Các tài liệu trong chỉ mục được chuyển đổi thành vector thông qua các mô hình nhúng như BERT, Sentence Transformers hoặc các mô hình khác Những vector này đại diện cho các tài liệu trong không gian vector cao chiều
4 Lưu trữ vector:
o Các vector này sau đó được lưu trữ trong Pinecone, một cơ sở dữ liệu
vector cho phép truy xuất thông tin nhanh chóng và hiệu quả
Phần 3 Truy xuất thông tin
5 Người dùng đưa ra câu hỏi:
o Khi người dùng đặt câu hỏi hoặc yêu cầu thông tin, mô hình sẽ tạo ra một vector tương ứng với câu hỏi đó
6 Tìm kiếm trong Pinecone:
o Mô hình RAG sử dụng Pinecone để tìm kiếm các vector tài liệu tương
tự nhất với vector câu hỏi Pinecone thực hiện tìm kiếm tương tự
Trang 11nhanh chóng, trả về danh sách các tài liệu có độ tương đồng cao nhất với câu hỏi
Phần 4 Tạo câu trả lời
7 Tổng hợp thông tin:
o Các tài liệu đã được truy xuất từ Pinecone sẽ được đưa vào mô hình sinh (generation model) như GPT-3 hoặc GPT-4 Mô hình này sẽ sử dụng thông tin từ các tài liệu để tạo ra câu trả lời
8 Tạo phản hồi tự nhiên:
o Mô hình sinh sẽ tạo ra một câu trả lời mạch lạc và tự nhiên, kết hợp các thông tin từ nhiều tài liệu khác nhau để tạo ra phản hồi chính xác cho người dùng
Phần 5 Trả về kết quả
9 Kết quả cho người dùng:
o Cuối cùng, câu trả lời được trả về cho người dùng, cung cấp thông tin chính xác và phong phú dựa trên các tài liệu đã truy xuất
IV Mô tả phần mềm cài đặt
Trong các bài toán, em sử dụng công cụ Visual Studio Code để lập trình Visual Studio Code là trình chỉnh sửa mã nguồn mở và miễn phí, thích hợp với mọi hệ điều hành và ngôn ngữ Với ưu điểm lớn về số lượng extension và các tính năng hỗ trợ hữu ích
Ngoài ra còn có các công cụ như Octoparse giúp thu thập dữ liệu và Docker để triển khai ứng dụng qua container
V Kết quả đạt được, hướng phát triển
Sau 3 tháng học tập và thực tập tại công ty thì em đã góp nhặt được rất nhiều kiến thức quý giá cũng như các kĩ năng hữu ích như: