Hướng dẫn xây dựng RAG chatbot từ A-Z

Tóm tắt nhanh

Video hướng dẫn cách xây dựng một chatbot Retrieval-Augmented Generation (RAG) sử dụng framework Langchain để tra cứu thông tin từ các bài báo nghiên cứu khoa học. Các bước chính bao gồm:

  • Chuẩn bị dữ liệu bằng cách tạo các bài báo khoa học giả mạo bằng ChatGPT.
  • Load dữ liệu vào chương trình bằng DirectoryLoader.
  • Chia nhỏ tài liệu thành các đoạn nhỏ (chunking) bằng RecursiveCharacterTextSplitter.
  • Sử dụng mô hình embedding của OpenAI để chuyển đổi các đoạn văn bản thành vector và lưu trữ trong vector database (FAISS).
  • Thiết kế prompt để chatbot trả lời câu hỏi dựa trên ngữ cảnh được cung cấp.
  • Kết nối các thành phần lại với nhau để tạo thành một pipeline hoàn chỉnh.

Giới thiệu về RAG Chatbot và Langchain

Video giới thiệu về kỹ thuật Retrieval-Augmented Generation (RAG), một phương pháp nâng cao trong AI cho phép kết hợp các mô hình ngôn ngữ lớn với dữ liệu bên ngoài. RAG cho phép các tổ chức xây dựng chatbot có khả năng trả lời các câu hỏi dựa trên thông tin nội bộ, điều mà các công cụ AI thông thường như ChatGPT không thể làm được do thiếu quyền truy cập vào dữ liệu này. Video cũng tóm tắt các thành phần cơ bản của một hệ thống RAG điển hình: dữ liệu nội bộ được chia nhỏ thành các đoạn (chunking), sau đó được số hóa thành các vector embedding và lưu trữ trong vector database để tìm kiếm và truy xuất. Khi người dùng đặt câu hỏi, câu hỏi này cũng được mã hóa thành vector và so sánh với các vector embedding trong database để tìm ngữ cảnh phù hợp, kết hợp với câu hỏi để tạo prompt đưa vào mô hình ngôn ngữ lớn, tạo ra output trả về cho người dùng.

Chuẩn bị dữ liệu

Để đảm bảo tính khách quan, video hướng dẫn sử dụng ChatGPT để tạo ra các file dữ liệu giả, không tồn tại ngoài thực tế. Mục đích là để chatbot chỉ tìm kiếm thông tin từ nguồn dữ liệu này, thay vì tìm kiếm trên mạng. Ví dụ, video yêu cầu ChatGPT tạo hai bài báo nghiên cứu khoa học bằng tiếng Anh và trả về dưới dạng hai file PDF riêng biệt. Sau khi tải về, hai file này được đặt trong một folder có tên "papers", đóng vai trò là nguồn dữ liệu riêng cho chatbot.

Load dữ liệu vào chương trình

Video giới thiệu class DirectoryLoader trong Langchain để load dữ liệu từ một thư mục. Các tham số quan trọng bao gồm: path (đường dẫn đến thư mục), glob (khuôn mẫu của file dữ liệu, ví dụ "*.pdf"), loader_class (class để đọc file, mặc định là UnstructuredFileLoader). Các tham số khác như show_progress (hiển thị thanh tiến trình) và use_multithreading (sử dụng đa luồng) cũng được đề cập. Sau khi cài đặt các thư viện cần thiết, video hướng dẫn import các class cần thiết và khởi tạo DirectoryLoader với các tham số phù hợp để load dữ liệu từ thư mục "papers". Kết quả là một list các Document, mỗi Document đại diện cho một file đã được load, bao gồm nội dung văn bản và metadata (tên file, nguồn file,...).

Chunking (Phân đoạn văn bản)

Video giải thích về quá trình chunking, tức là chia nhỏ các document thành các đoạn (chunk) nhỏ hơn. Kỹ thuật chunking cơ bản dựa vào độ dài, chia tài liệu thành các đoạn có độ dài không vượt quá một số lượng token nhất định. Video giới thiệu class RecursiveCharacterTextSplitter trong Langchain, một text splitter phổ biến, chia tài liệu dựa vào các ký tự phân tách tự nhiên (tiêu đề, chương, đoạn, dòng,...). Các tham số quan trọng bao gồm: chunk_size (độ dài tối đa của chunk), chunk_overlap (độ dài phần trùng lặp giữa các chunk), add_start_index (lưu vị trí bắt đầu của chunk trong tài liệu gốc), strip_whitespace (loại bỏ khoảng trắng ở đầu và cuối chunk), và separators (các ký tự phân tách). Video cũng sử dụng trang web Chunkviz để minh họa cách các giá trị chunk_size khác nhau ảnh hưởng đến việc phân đoạn văn bản.

Embedding và Vector Database

Video hướng dẫn sử dụng mô hình embedding của OpenAI để chuyển đổi các chunk văn bản thành vector và lưu trữ chúng trong vector database FAISS. Để sử dụng mô hình của OpenAI, cần cài đặt package langchain-openai và tạo API key trên trang platform.openai.com. Video cũng lưu ý rằng cần nạp tiền vào tài khoản OpenAI để sử dụng API. Sau đó, video hướng dẫn import class OpenAIEmbeddings và khởi tạo nó, chỉ định sử dụng mô hình "text-embedding-ada-002". Video cũng giải thích về giới hạn kích thước input của các mô hình embedding và lý do cần chunking. Tiếp theo, video hướng dẫn sử dụng FAISS (Facebook AI Similarity Search) làm vector database miễn phí, import class FAISS từ langchain.community.vectorstores và sử dụng method from_documents để tạo vector store từ các chunk đã được chia.

Receiver và Prompt

Video giải thích về vai trò của receiver, thành phần nhận câu hỏi của người dùng và tìm kiếm các chunk tài liệu liên quan nhất trong vector database. Video hướng dẫn khởi tạo receiver bằng method as_retriever của vector store, thiết lập các tham số search_type (simility score thessal) và search_kwargs (k=5, score_threshold=0.2) để chỉ lấy tối đa 5 chunk tài liệu có điểm tương đồng vượt quá ngưỡng 0.2. Video cũng nhấn mạnh rằng receiver sử dụng cùng mô hình embedding để mã hóa câu hỏi của người dùng và so sánh với các vector embedding trong database. Tiếp theo, video hướng dẫn thiết kế prompt cho chatbot, bao gồm vai trò, nhiệm vụ, phong cách của chatbot, câu hỏi gốc của người dùng và nguồn thông tin để trả lời. Video cung cấp một template prompt mẫu và hướng dẫn import class ChatPromptTemplate từ langchain_core.prompts để tạo prompt template từ template đã thiết kế.

Mô hình ngôn ngữ lớn (LLM) và Kết nối các thành phần

Video hướng dẫn sử dụng mô hình ngôn ngữ lớn (LLM) của OpenAI để trả lời câu hỏi của người dùng dựa trên prompt đã cung cấp. Video hướng dẫn import class ChatOpenAI từ langchain_openai và khởi tạo nó, chỉ định sử dụng mô hình "gpt-3.5-turbo" và thiết lập temperature bằng 0 để đảm bảo tính ổn định của câu trả lời. Video cũng giải thích về ý nghĩa của tham số temperature. Tiếp theo, video hướng dẫn kết nối các thành phần lại với nhau để tạo thành một pipeline hoàn chỉnh bằng cách sử dụng class RunnablePassthrough và toán tử | (pipe). Pipeline bao gồm các bước: tạo input cho prompt, thiết kế prompt, gửi prompt cho LLM và trích xuất câu trả lời từ output của LLM.

Kiểm tra và Kết luận

Video hướng dẫn thêm dòng code để nhận input là câu hỏi của người dùng và đưa câu hỏi này vào trong pipeline đã định nghĩa. Sau đó, video in ra câu trả lời của chatbot và kiểm tra tính chính xác của câu trả lời bằng cách so sánh với tài liệu gốc. Video cũng minh họa cách chatbot trích dẫn nguồn thông tin đã sử dụng để trả lời câu hỏi. Cuối cùng, video kết luận rằng đã cùng nhau thực hành xây dựng một chatbot giúp tìm kiếm và tra cứu thông tin về các bài báo nghiên cứu khoa học và có thể mở rộng để xây dựng các chatbot cho các bài toán tương tự.

Summarize any YouTube video in seconds

Get summaries like this one for any video, in your language, with the free Summ app.

Download on the Apple Store
Get it on Google Play

Transcript

YouTube Transcript Generator

0:00 Xin chào các bạn. Hôm nay trong video này mình sẽ hướng dẫn các bạn thực hành tự mình code, tự mình xây dựng một rap chatbot với framework lăng trên. Nếu các bạn là những người đang học, đang làm về AI hoặc các bạn chỉ đơn giản là những người có quan tâm đến các tin tức có liên quan đến AI trong những năm vừa qua, có lẽ các bạn cũng không còn xa lạ gì với thuật ngữ RAC này. RAC là từ viết tắt của Receiver Aman Generation. Đây là một kỹ thuật nâng cao trong AI giúp kết hợp khả năng của các nguồn ngôn ngữ lớn với các nguồn dữ liệu ở bên ngoài. Nhờ CAP mà các công ty, doanh nghiệp, bệnh viện hay là ngân hàng có thể xây dựng các chatbot có khả năng trả lời câu hỏi của người dùng dựa vào thông tin hay là dữ liệu nội bộ. Đây là điều mà các công cụ AI mang định ví dụ như là chat GBT, Gemini, Dipsic hay là Close sẽ không thể nào trả lời được. Không phải vì chúng

0:46 không đủ thông minh mà chỉ đơn giản là vì chúng không có quyền truy cập vào các thông tin hay là dữ liệu nội bộ này. Cách đây một vài tuần mình đã làm một cái video để có thể giới thiệu về các thành phần cơ bản và quan trọng nhất của một hệ thống rác điển hình cũng như là cách thức mà chúng vận hành. Nếu các bạn chưa xem video này, các bạn có thể xem lại trên YouTube. Ở đây thì mình sẽ tóm tắt nhanh để cho các bạn dễ theo dõi. Đầu tiên thì cái nguồn dữ liệu nội bộ, cái nguồn dữ liệu riêng của chúng ta sẽ được trang kinh, tức là chúng ta sẽ chia nhỏ chúng thành những cái đoạn trăng có kích thước nhỏ hơn. Sau đó thì các cái trang này sẽ được đi qua một cáiing model để chúng ta có thể số hóa chúng thành các cáiing vector có độ dài cố định. Các em vector này sẽ được lưu trữ trong một vector database để có thể tiện cho quá trình tìm kiếm và truy xuất sau này. Toàn bộ quá trình vừa rồi sẽ được thực hiện offline trước khi người dùng bắt đầu sử dụng hệ thống. Sau này khi mà

1:32 người dùng sử dụng hệ thống thông qua việc đặt câu hỏi thì câu hỏi của người dùng cũng sẽ được cho qua ing model để có thể mã hóa thành một vectơ. Tương tự như cách mà chúng ta đã mã hóa các cái trang tài liệu. Sau đó thì vecơ này sẽ được so sánh với tất cả các cáiing vector đã được lưu trữ trong veector database từ trước để tìm xem đâu là những eding vector có cái sự tương đồng nhất với vecơ của cái câu hỏi. Khi mà kết hợp tất cả các cáiing vector tương đồng nhất này, chúng ta được một thứ gọi là context hay là ngữ cảnh. Câu hỏi của người dùng cộng với ngữ cảnh sẽ được kết hợp với nhau để tạo ra một cái prom. Cái prom này sẽ được đưa vào trong mô hình hôn ngữ lớn để có thể tạo ra cái output đầu ra. Và cái output đầu ra này sẽ được trả lại cho người dùng. Đó chính là luồng hoạt động cơ bản của một RC chatb điển hình. Ok, đấy là tóm tắt nhanh về lý thuyết. Bây giờ chúng ta sẽ cùng nhau bắt đầu thực hành. Chúng ta

2:19 sẽ cùng nhau xây dựng một con RC chatbot giúp tìm kiếm cũng như là tra cứu thông tin về các bài báo nghiên cứu khoa học. Từ ví dụ này, sau này các bạn có thể hoàn toàn xây dựng các cái con R chatbot cho những cái mục đích tương tự. Ví dụ như trong ngân hàng các bạn có thể sử dụng R chatbot để có thể tìm kiếm trai cấu thông tin về các cái gói tiết kiệm hay là về thông tin của khách hàng. Hoặ là trong bệnh viện các bạn có thể sử dụng con chbot giúp tra cứu các cái thông tin về các loại thuốc, các cái phương pháp điều trị hoặc là thông tin về bệnh nhân. Hoặc là trong doanh nghiệp các bạn cũng có thể hoàn toàn xây dựng nên các contrast chatbot giúp tra cứu thông tin về các chính sách nội bộ hay là nhân viên của công ty. Framework mà chúng ta sẽ sử dụng trong project này đó chính là lang trên chain. Lang chain là một framework vô cùng phổ biến giúp xây dựng các ứng dụng sử dụng các ngôn ngữ lớn như là chatbot, hỏi ráp tài liệu, AI agent, tóm tắt văn bản cũng như là nhiều workflow AI khác. Ok, giờ chúng ta bắt

3:06 đầu nhé. Điều đầu tiên mà chúng ta cần phải chuẩn bị cho project này không phải là một fit code mà đó là dữ liệu. Chúng ta sẽ cần có một cái bộ dữ liệu riêng để sau này bất kỳ khi nào người dùng hỏi con cháb chúng ta một câu hỏi gì đó thì con chot của chúng ta nó sẽ tìm kiếm thông tin từ nguồn dữ liệu này. Tất nhiên mình hoàn toàn có thể lên trên mạng download một vài những cái file dữ liệu về tập hợp chúng lại và coi chúng như là một cái bộ rượu riêng của mình. Thế tuy nhiên làm như vậy thì nó sẽ không đảm bảo sự khách quan. Tại vì nhỡ đâu sau này khi mà người dùng hỏi cho bóp chúng ta một cái câu hỏi thì thay vì có chá bóp chúng ta nó tìm kiếm từ cái nguồn rượu riêng này nó lại lên trên mạng và tìm trên đấy thì lúc này cái mục đích của chúng ta nó sẽ không đảm bảo nữa. Để đảm bảo được sự khách quan thì bây giờ mình sẽ sử dụng chat GPT để có thể tạo ra những cái file dữ liệu fake,

3:53 những cái file dữ liệu mà hoàn toàn không tồn tại ngoài thực tế. Sau đó thì mình sẽ mô phỏng những cái câu hỏi của người dùng là những cái thông tin mà có liên quan đến những cái file dựa fake này. Và nếu mà con chot chúng ta ấy nó có trả lời được thì chắc chắn là nó đã phải tìm thông tin từ những cái file dữ liệu của chúng ta chứ nó không thể tìm thông tin trên mạng được. Ví dụ bây giờ mình muốn tạo ra một con chatbot để có thể phục vụ tra cứu thông tin về các bài bán nghiên cứu khoa học. Thế thì việc đầu tiên mình sẽ làm đó là mình sẽ sử dụng chatt để có thể tạo ra các cái bài báo nghiên cứu khoa học fake. Bây giờ mình sẽ đặt câu hỏi như sau. generate research paper written in English the topic is up to you.

4:40 Give me output to separate PDF file. Các bạn nhìn nhá. Mình yêu cầu nó là hãy tạo ra hai cái research paper được viết bằng tiếng Anh. Topic thì tùy nó, tùy chat GBT. Và hãy trả lại cho tôi output là hai cái file PDF riêng lẻ. Mình sẽ hỏi này. Sau khi mình đợi một lúc thì chat GPT đã trả lại cho mình kết quả. Nó có diệu qua một chút về hai cái file nó tạo ra. Và ở dưới các bạn thấy là chúng ta có hai cái paper 1 với paper 2 như này. Chúng ta có thể click vào để chúng ta tải chúng về. Sau khi tải về xong thì mình sẽ đặt hai cái file này vào trong một cái folder có tên là papers. Và đây sẽ là cái folder nó đại diện cho cái nguồn dữ liệu riêng của mình. Và con chop bot của chúng ta cái nhiệm vụ nó là gì? Là sau khi mà nó

5:26 nhận câu hỏi từ người dùng thì nó sẽ cần phải tìm kiếm thông tin liên quan từ trong các cái bài báo trong cái folder paper này. Mình sẽ xem qua một chút về nội dung của hai cái bài báo mà chatpt vừa mới tạo ra cho mình. Bài báo đầu tiên thì nó như thế này. Mình xem qua một chút này. Các bạn có thể thấy là tuy là cái nội dung này là nội dung không có thật thế nhưng mà nó được trình bày như thể một bài há nghiên cứu thực sự. Đây là bài báo thứ hai đúng không? Thế các bạn thấy là tí nữa chúng ta sẽ thử sau khi mà chúng ta đã sử dụng chatbot chúng ta sẽ đặt những cái câu hỏi mà có liên quan đến những cái nội dung trong hai cái paper này để xem là chấp chúng ta có trở lời được không. Sau khi đã có được dữ liệu rồi thì việc tiếp theo mà chúng ta cần làm đó là chúng ta sẽ cần phải load được những cái dữ liệu này vào trong chương trình để có thể xử lý tiếp. Trong land trên có một class được gọi là

6:11 directory loader được sử dụng để có thể lỗ dữ liệu từ một thư mục nào đó. Chúng ta có thể kẹp xuống dưới một chút để xem danh sách các tham số. Trong class này thì chúng ta có một vài những cái tham số quan trọng. Đầu tiên là pass. Pass chính là đường dẫn đến thư mục gốc của chúng ta. Cái thư mục mà chứa dữ liệu á. Thăm số thứ hai là Globe. Cái thăm số này dùng để giúp chúng ta có thể chỉ ra cái pattern cái khuôn mẫu của các cái file dữ liệu mà chúng ta muốn đọc. Tí nữa ở cái phần code mình sẽ chỉ cho các bạn rõ hơn. Cái số một chút nữa chúng ta có một cái tham số đó là loader class. Tham số loader class này được dùng để chỉ ra rằng chúng ta sẽ dùng cái gì để chúng ta có thể đọc các cái file dữ liệu. Mặc định ở đây nó dùng cái class có tên là Unstructures file loader. Kéo xuống dưới một chút nữa chúng ta có hai

6:57 tham số. Một tham số có tên là show progress. Bình thường ấy khi mà các bạn load dữ liệu vào bằng cái class này ấy nó sẽ không show ra cái thanh tiến trình. Thanh tiến trình giống như kiểu khi mà các bạn download một cái file về nó lại show như là 25% 50% ấy đúng không? Thế thì khi mà các bạn để cái show progress này bằng true ấ thì nó sẽ có một cái thanh tiến trình để các bạn biết là cái tiến độ mà nó đọc dữ liệu vào như thế nào. Tiếp theo là tham số có tên là use multiading. Đây là tham số để giúp các bạn có thể chỉ ra là các bạn có muốn dùng đa luồng hay không. để các bạn chạy đa luồng, các bạn để true thì cái tốc độ xử lý nó sẽ nhanh hơn nhưng mà nó sẽ chiếm nhiều tài nguyên tính toán của máy hơn. Đây là các thư viện cần thiết mà chúng ta sẽ cần phải cài đặt trước khi chúng ta bắt đầu code. Các bạn có thể cài các cái thư viện này thông qua pip ví dụ như là pip install lang chin

7:42 community hay là pip install lang chin open ai giờ chúng ta sẽ quay trở lại với script chính của chúng ta. Việc đầu tiên chúng ta cần làm đó là import các cái class cần thiết có lệnh như sau. form lang trên community chấm document loader loader của s các bạn nhá import chúng ta sẽ cần hai class một là directory loader và hai là unstructure file loader đây đây là hai class mà chúng ta cần rồi giờ chúng ta sẽ khai báo một cái biến mới có tên là loader bằng reloader Chúng ta sẽ cần phải à chỉ ra một vài những cái tam số cần thiết. Đầu tiên là

8:28 P. PH là cái đường dẫn đến thư mục gốc của chúng ta đó chính là thư mục papers. Đây cái thư mục gốc là thư mục papers nó chứa các cái bài báo ở bên trong của chúng ta. Thế tiếp theo là chúng ta sẽ cần phải có một cái tham số nữa là group. Với mình vừa có nói các bạn là cái group này chúng ta sẽ cần phải chỉ ra cái khuôn mẫu của các cái file mà chúng ta muốn đọc đúng không? Thì chúng ta sẽ làm như này. Đầu tiên các bạn sẽ có hai cái dấu hoa thị như này. X cái dấu xuồng. 1hị.piddf. Cái này để chỉ ra là cái gì? Cái này chỉ [hắng giọng] ra là chúng ta sẽ đọc tất cả những cái file nằm ở trong cái thư mục paper này. Và những cái file đấy nó có cái định dạng là PDF đây. Đúng không các bạn? Nhìn này. Hai cái dấu hoa thị này nó thể hiện nó sẽ đọc từ cái part này đúng không? Và cái dấu hoa thị này có nghĩa là gì? Có nghĩa là bất kỳ một cái tên nào cũng được. File có tên là gì cũng được. Miễn rằng nó kết thúc bằng

9:13 PDF. Đấy thì các bạn thấy chúng ta đây có những cái file PDF này đúng không? Chúng ta cũng có thể chúng ta sẽ sau này khi mà các bạn có nhiều cái file nó có những định dạng khác nữa thì chúng ta có thể chúng ta sẽ ờ bỏ cái đuôi PDF đi. Chúng ta chỉ ghi là như thế này thôi. Hoa thị này hoặc là hoaị chấ hoa thị này đúng không? Tức là gì? Tức là tôi sẽ đọc bất kỳ một cái file nào có bất kỳ một cái tên gì với bất kỳ một cái định dạng gì đó. Thế nhưng mà ở đây trong cái ví dụ này chúng ta sẽ chỉ đọc cái file PDF thôi. Mình sẽ đổi cái này PDF đúng không? Thì đây là cái tham số thứ hai. Tham số thứ ba đó là load loader classes. Chúng ta sử dụng cái unsur file loader mà chúng ta vừa mới import ở trên. Trong l trên thì unsure file loader là một class vô cùng hữu ích giúp chúng ta có thể đọc dữ liệu từ các cái loại file

9:59 khác nhau bao gồm là PDF, Doc, Excel, PowerPoint, HTML hay thậm chí là hình ảnh. Thế thì cái class này giúp chúng ta đọc các cái rượu đấy vào và sau đó nó sẽ chuyển rượ liệu này thành cái dạng mà nó có cấu trúc hơn để sau đó chúng ta có thể xử lý tiếp. Thật ra là trong ví dụ hiện tại vì chúng ta chỉ làm việc với file PDF thôi nên chúng ta có thể dùng một cái class nó cụ thể hơn đó là Unstructure PDF loader. Thế nhưng mà mình đang muốn tạo ra một con chatbot để làm sao sau này khi mà chúng ta cho thêm các loại dữ liệu có nhiều định dạng khác vào chat chúng ta nó vẫn làm việc và chúng ta không cần phải sử đổi code. Sau đó thì mình chọn cái class là unchar floader để nó có khả năng nó làm việc với các loại dữ liệu đa dạng hơn. Tiếp theo là hai tham số show progress. Mình để bằng true chúng ta có thể thấy được cái tiến trình các cái file được xử lý đến đâu rồi. Và cuối cùng là use

10:46 trading. Mình cũng để bằng true luôn chạy đa luồng để xử lý cho nó nhanh. Khai vào xong rồi chúng ta sẽ đọc dữ liệu vào thôi. DO bằng loader.load. Cái dòng này sẽ giúp chúng ta thực sự đọc dữ liệu vào trong bộ nhớ của máy. Và mình sẽ in ra. Thứ nhất là mình sẽ in ra xem là cái đốc này nó là cái gì. Và thứ hai mình sẽ in ra độ dài của nó. Chạy thử nhá. Các bạn nhìn này. Đây chính là cái thanh tiến trình. Đây chính là cái progress 3 chúng ta có được. Nhờ chúng ta để cái tham số là show progress bằng true. Đây các bạn nhìn này. Sau khi xử lý xong các bạn thấy là chúng ta có hai đúng không? Chúng ta có hai cái documents của chúng ta. Mỗi một cái document này nó đại diện cho một cái file chúng ta đọc

11:33 vào đúng không? Thì đây chính là cái rượu chúng ta sau khi chúng ta load vào từ cái thư mục papers này. Hai bài báo tương ứng với hai cái documents. Mình muốn giải thích cho các bạn thêm một chút về document. Trong l trên document là một loại đơn vị dữ liệu chuẩn hóa được sử dụng để có thể lưu trữ văn bản cũng như là các metadata đi kèm. Văn bản thì chính là cái nội dung chính của cái rượu của chúng ta. Thế còn metadata là những cái thông tin phụ đi cùng. Ví dụ như là tên file, nguồn file, URL, tác giả hay là số trang của cái file đó. Nhìn chung thì sau khi mà dữ liệu của chúng ta đã được lưu trữ dưới dạng các document thì sau đó chúng ta sẽ có thể tiếp tục chúng ta xử lý chúng. Việc tiếp theo mà chúng ta cần làm đó là thực hiện trunking. Tức là chúng ta sẽ cần phải chia nhỏ các cái document của chúng ta ra thành các cái đoạn trăng có kích thước nhỏ hơn. Có rất nhiều các kỹ thuật

12:18 trang kinh từ cơ bản đến nâng cao. Các kỹ thuật trang kinh cơ bản nhất thì thường là sẽ dựa vào độ dài. Tức là chúng sẽ chia các cái tài liệu của chúng ta ra thành những cái đoạn con sao cho mà độ dài của mỗi một cái đoạn con này nó không vượt quá một cái số lượng token nào đó mà chúng ta định nghĩa từ trước. Trong lang trên thì có rất nhiều các class được tạo ra nhằm phục vụ mục đích trang kênh này. Như các bạn có thể thấy trên hình đây là một vài những cái class như vậy. Trong tất cả các class này thì có một cái class thường được sử dụng rất là nhiều trong các cái tutorial về R và nó rất là phù hợp với những bạn nào mà mới làm quen với R, mới làm quen với việc xây dựng chatpot. Đó là class recursive character text splitter. Bây giờ chúng ta sẽ đi sâu hơn và tìm hiểu về class này. Như mình vừa nói thì đây là một text spitter rất là phổ biến trong Lange thường được sử dụng để có thể chia tài liệu của chúng ta. ra thành

13:03 những đoạn nhỏ hơn. Rồi sau đó chúng ta sẽ có thể thực hiện cho những cái đoạn nhỏ này. Ý tưởng của text spitter này đó là nó sẽ cắt cái tài liệu chúng ta ra thành những đoạn nhỏ hơn dựa vào những cái ký tự phân tách tự nhiên trước. Thế nếu mà những cái đoạn nhỏ hơn này nó vẫn còn quá dài nó sẽ được tiếp tục cắt sâu hơn nữa. Ví dụ nhá, giả sử các bạn có một cái tài liệu là một đoạn tex rất là dài thì khi mà các bạn sử dụng recursive character text fitter thì đầu tiên nó sẽ chia tài liệu các bạn ra thành các cái đoạn con dựa theo tiêu đề. Thì nếu mà một cái đoạn con này nó vẫn quá dài, nó sẽ chia tiếp theo chương. Nếu mà chia theo chương xong nó vẫn quá dài, nó sẽ chia theo đoạn, theo khổ, theo dòng hoặc thậm chí nó sẽ chia ra từng các cái ký tự. Thì đây chính là cách mà recurs text fitter hoạt động. Quay trở lại với đoạn code của chúng ta. Giờ chúng ta sẽ cùng nhau sử dụng recursive cater text fitter

13:50 để có thể tách các cái tài liệu của chúng ta ra thành những đoạn con có kích thước nhỏ hơn. Chúng ta sẽ cần phải import thư viện trước. form là trên tex spitter import đây đây là câu import của chúng ta thì ở dưới chúng ta sẽ khởi tạo một cái biến mới có tên là text splitter chúng ta sẽ bắt đầu chúng ta sẽ thiết lập một vài những cái tham số cần thiết ở đây. Mình sẽ kéo xuống dưới một chút cho các bạn dễ nhìn. Tham số đầu tiên mình sử dụng đó là trang sa

14:35 mình sẽ để bằng 1200. Nhìn vào cái tên các bạn cũng có thể đoán được là tham số này có tác dụng gì đúng không? Trang size bằng 1200 tức là cái text speer này sẽ chia cái tài liệu chúng ta sẽ thành cái đoạn trăng con sao cho mà độ dài của đoạn trăng không vượt quá 1200 ký tự. Các bạn chú ý nhá. Trang size ở đây là số lượng ký tự chứ không phải là số lượng từ hay là số lượng token đâu nhá. Mỗ một ký tự thì thường nó sẽ là một chữ cái, một chữ số hoặc là các cái ký tự đặc biệt khác như là hỏi chấm chấm thanth than hoặc ké ngoặc đơn. có một trang web rất là hay có tên là Trang W giúp chúng ta có thể cân hóa các cái đoạn trăng khi mà chúng ta thay đổi các cái giá trị trang size khác nhau. Như các bạn có thể nhìn thấy đây là cái nội dung của cái paper đầu tiên mà vừa nãy mình dùng chatbt để nó generate. Và ở trên này thì mình có một cái spitter

15:20 mình đó là recursive character text spitter bằng Python. Ở đây mình có thêm một cái giá trị tham số. Đây chính là trang size của chúng ta. Thế ví dụ đây nó là 300 chẳng hạn thì các bạn có thể thấy là mỗi một cái trăng nó sẽ có những cái màu khác nhau. Ví dụ cái trang đầu tiên nó từ đầu cho đến đây. Cái trăng thứ hai là đoạn tiếp. Và cứ tiếp tục như vậy. Ở đây mình có thể hoàn toàn mình có thể tăng giảm cái giá trị này để các bạn thấy là cái trăng nó sẽ thay đổi như thế nào. Ví dụ đây mình thay đổi thành 500 chẳng hạn đúng không? Thì các bạn thấy là mỗi cái đoạn trăng này nó đã dài hơn rồi. Ho bây giờ mình đổi xuống nó chỉ còn có 100 chẳng hạn thì các bạn thấy là những đoạn trăng nó sẽ ngắn hơn. Nhìn chung nếu mà trăng sai các bạn để bé quá thì mỗi một cái đoạn trăng có thể nó sẽ bị thiếu thông tin. Thì khi mà những đợ trang này nó được truy xuất thì chúng ta sẽ bị thiếu thông tin, thiếu ngữ cảnh. Thế còn nếu mà các bạn để trang size nó lớn quá thì nó có thể nó sẽ chứa nhiều thông tin quá, nó sẽ bị loãng và khi mà chúng ta truy xuất chúng ta sẽ khó có thể có những cái thông tin chi tiết. Sẽ

16:07 không có một con số nào là con số tối ưu cho giá trị trong size này, cho mọi bộ dữ liệu, cho mọi bài toán. Mỗi một khi mà các bạn sẽ được các cái chatbot với các cái bộ dữ liệu với các cái nguồn dữ liệu riêng khác nhau, các bạn sẽ cần phải thực nghiệm, các bạn sẽ phải thử các cái giá trị trong xe khác nhau để tìm ra xem đâu là giá trị mà các bạn thấy là hợp lý nhất. Tam số thứ hai mình sử dụng là trang overlap. Mình sẽ để giá trị bằng 200. Trang overlap có ý nghĩa gì? Đây chính là đoạn trống lấn giữa hai đoạn trăng liên tiếp nhau. Vì sao giữa hai đoạn trăng liên tiếp chúng ta lại cần phải có cái đoạn overlap có đoạn trùm lặp này? Tại vì chúng ta muốn tránh cái việc là có cái ý nào đấy nó quan trọng nhưng mà nó bị ngắt ở giữa hai trăng. Tức là một nửa đầu nó nằm ở trang này, nửa sau nó nằm ở trang kia. Nàm số thứ ba mà mình sẽ sử dụng đó là add index.

16:53 mình sẽ để bằng true thamp số này có ý nghĩa gì? Thap số này sẽ giúp chúng ta lưu lại vị trí bắt đầu của mỗi trăng trong tài liệu gốc. Có nghĩa là bây giờ với mỗi trăng chúng ta sẽ không chỉ có nội dung mà chúng ta còn có thêm metad. Giống như kiểu là cái trăng này nó bắt đầu từ ký tự bao nhiêu. Ví dụ trăng đầu tiên bắt đầu từ ký tự số 0. Trang thứ hai bắt đầu từ ký tự số 950. Trang thứ ba bắt đầu từ ký tự số 2000. Thông tin này sẽ vô cùng hữu ích khi mà chúng ta muốn con chatbot khi mà nó trả lời những cái câu hỏi của người dùng nó sẽ hiển thị cả cái nguồn thông tin mà nó lấy ra nữa. Tức là nó sẽ chỉ ra là những cái thông tin mà tôi trả lời ấy tổng hợp từ những cái nguồn nào, tài liệu nào, cụ thể ở vị trí nào. Tiếp theo một tham số nữa là ship wide space.

17:38 Mình cũng để bằng true cái tham x rất là đơn giản, nó sẽ loại bỏ cái khoảng trắng ở đầu cũng như là cuối của mỗi đoạn trăng. Tiếp theo mình sẽ thêm vào một biến có tên là ma separator. Và nó có giá trị như thế này. Ở phía dưới mình sẽ sử dụng thêm một cái tham số có tên là separator. Và mình sẽ gan cho nó cái giá trị chính bằng cái markdown separators mà mình vừa mới khởi tạo. Mdor sẽ được sử dụng để giúp cho text spitter của chúng ta mà cụ thể đây là recursive cater texter biết xem là đâu là những cái ký tự nó có thể dùng để nó có thể phân đoạn cái tài liệu chúng ta thành cái đoạn nhỏ hơn. Ví dụ dòng đầu tiên này sẽ giúp chúng ta chỉ ra là chúng ta sẽ phân đoạn đầu tiên là dựa vào các cái heading maow. Ví dụ các bạn nào các bạn làm việc những cái file

18:24 maxdown các bạn biết là một dấu thăng thì nó chính là tiêu đề. Hai dấu thăng thì nó là đoạn còn ba dấu thăng nó là đoạn con. bốn dấu, năm dấu, sáu dấu nó cũng tương tự như vậy. Tức là càng nhiều dấu thì cái phần phân chia nó sẽ càng nhỏ hơn. Ký hiệu được sử dụng ở đây nó là regular expression. Nếu mà các bạn nào mà các bạn chưa từng tìm hiểu, các bạn chưa từng biết về cái khái niệm này thì các bạn có thể search Google hoặc các bạn có thể hỏi chat TV thì nó sẽ giải thích các bạn là regular expression là gìy. Thế nhưng mà ở đây các bạn hiểu cái đơn giản đó là đầu tiên nó sẽ dựa xem là có chỗ nào có từ 1 cho đến sáu dấu thăng hay không. Thì đấy là cái ký tự đầu tiên mà texter chúng ta dựa vào để phân đoạn tài liệu chúng ta. Dòng tiếp theo đây là ký hiệu của các cái code block hay là các cái khối code trong markdown. Tức là gì? Tức là trong những cái bài báo, trong những cái tài

19:09 liệu của chúng ta ấy, nếu mà nó có những chỗ nó có cái đoạn code chẳng hạn thì chúng ta sẽ cuống là chúng ta sẽ tách cái đoạn code này ở cái dananh giới của đoạn code đó. Tức là nó sẽ nằm hẳn vào cái trang này hoặc nằm hẳng vào cái trang kia. Tránh cái việc là chúng ta tách một cái đoạn code ở giữa nó sẽ khiến cho là mỗi một cái trang lại có một cái một phần của cái đoạn code đó thì nó sẽ không hoàn chỉnh. Đấy thì đây là cái dòng nó giúp cho cái việc là đưa toàn bộ đã code của chúng ta rơi vào một trong cái trang đó. Các cái dòng ở dưới thì cũng tương tự như vậy. Và các bạn chú ý nhá, cái thứ tự chia nó sẽ là từ trên xuống dưới. Tức là gì? Tức là đầu tiên chia theo tiêu đề, chia theo đoạn, chia theo đoạn con, sau đó chia theo các cái code block rồi chia tiếp theo cho các cái ký tự, các cái tiêu chí ở dưới nữa. Đấy, nó cứ từ trên xuống dưới như vậy. Sau này nếu có thời gian thì mình sẽ làm riêng một cái video để có thể thấy cho các bạn cách chi tiết hơn về

19:55 các cái ký tự mà các bạn nhìn thấy trong cái maor này. Sau khi đã khai báo xong các cái giá trị tham số cần thiết rồi thì chúng ta sẽ bắt đầu tiến hành tranging. Mình sẽ tạo ra một cái biến mới tên là split để lưu trữ kết quả. Texter document. Ok. Và bây giờ mình sẽ chạy thử xem kết quả trông như thế nào nhá. Mình sẽ in ra cái split này. Các bạn nhìn này, cái split của chúng ta ấy nó là một cái list đúng không? Một cái list các bạn thấy nó rất là dài, nó rất là dài như thế này. Để nguyên này nó sẽ hơi khó để theo dõi. Mình chỉ vào một cái trick để các bạn theo dõi nó dễ hơn. Thì trong bython có một cái thư viện có tên là Pretty Print. Thư viện này sẽ giúp các bạn có thể nhìn những cái list

20:42 dài thế này một cách nó dễ dàng hơn. Đầu tiên chúng ta sẽ cần phải import trước for pprint. Import print này. Đấy. Sau chúng ta sẽ à dùng cái câu lệnh preprint thay vì câu lệnh print mặc định của Python mình chạy lại nhá. Các bạn nhìn này. Đây là kết quả mà chúng ta có được. Chúng ta đã tách hai cái tài liệu đầu tiên ra thành rất nhiều những cái trang con. Các bạn có thể nhìn thấy này, ví dụ này, đây là toàn bộ những cái đoạn trăng thuộc về cái tài liệu đầu tiên. Các bạn có thấy không? Mỗi cái đoạn trăng này chúng ta sẽ có những thông tin gì? Chúng ta sẽ có thông tin về metadata. Ví dụ như là nguồn của nó, đường dẫn của nó đúng không? Ví dụ các bạn nhìn này, đúng không? Papers xuống một cái này. Research paper onecuregrap. Đúng không? Đấy. Và chúng ta sẽ có thêm một cái thông tin là gì? Là cái đoạn trang này ấy nó bắt đầu tới ký tự nào.

21:27 Ví dụ cái trang đầu tiên ấy nó bắt đầu từ ký tự số 0 và nó sẽ kết thúc ở ký tự số 96. Tức là nó rất là ngắn thôi, nó chỉ có khoảng gần 100 ký tự. Tại vì sao? Tại vì là các bạn có nhớ là ở phía trước ấy chúng ta nói là chúng ta sẽ phân chia đầu tiên là dựa vào các cái ký tự phân cách đoạn đúng không? Tiêu đề đoạn các thứ. Đấy thì cái đầu tiên của một cái bài báo nó chính là cái tiêu đề. Do đó thì riêng cái tiêu đề này các bạn hiểu không? Đây là chính là cái page content này nó chính là cái nội dung của cái trang đó. Thì các bạn ấy có thể thấy là cái trang đầu tiên ấy nó chỉ đúng cái tiêu đề thôi. Đây các bạn nhìn này. Nó chỉ có đúng cái tiêu đề thôi đúng không? Nó rất là ngắn. Th những cái đạo trang sau nó sẽ dài hơn. Thế đạo trang sau thì các bạn thấy là ví dụ đây trang thứ hai nó bắt đầu từ cái index cái ký tự số 97 nó kết thúc ở 1214 đúng không? Tại vì cái ông sau bắt đầu từ 115 mà. Thế thế thì các bạn thấy là tài liệu chúng ta

22:14 được phân thành những cái trăng con đúng không? Một cái trăng nó sẽ có độ dài tối đa là 1200 ký tự. Thế nhưng mà thường là các cái trang của chúng ta nó sẽ không dài đủ 1200 đâu. Tại vì là nếu mà chúng ta gặp các cái ký tự phân cái tex này ấy thì nó sẽ ngắt cái đoạn trăng ở đấy. Thế và mỗi cái trăng chúng ta sẽ đều có những thông tin là về metadeta, những cái thông tin phụ này đúng không? Và cái nội dung chính của từng cái trăng đó đúng không? Hết cái trăng hết các cái trăng của cái tài liệu đầu tiên chúng ta sẽ có cái trăng của tài liệu số 2 đây. Số 2 nó bắt đầu từ đây này. Đúng không? Rất là nhiều như vậy. Thế và tất nhiên là những cái tài liệu độ nào nó dài nó sẽ có nhiều trăng. Đ nó ngắn nó sẽ có ít trăng. Sau khi đã thực hiện xong bước tranging thì bước tiếp theo chúng ta phải làm đó là chúng ta sẽ cần sử dụng một ing model nào đó để biến tất cả cái trang này thành các vector rồi sau đó

22:59 lưu chữ chúng trong một vector database để sau này phục vụ quá trình tìm kiếm và truy xuất. Đối vớim model chúng ta có rất nhiều sự lựa chọn khác nhau và một trong số những lựa chọn phổ biến nhất đó là chúng ta có thể sử dụng các model của Open AI công ty đứng đằng sau Chat GPT. Đây là hướng dẫn sử dụng model của Open AI. trong lang trên việc đầu tiên các bạn cần làm đó là các bạn sẽ cần phải cài đặt một cái package có tên là land chin open AI cách cài thì cũng rất là đơn giản thôi. Các bạn có thể sử pip đây câu lệnh để các bạn cài đây. Pip cách install cách trừ q cách l trên trừ openi. Sau khi các bạn cài đặt xong rồi, các bạn sẽ phải làm một bước tiếp theo đó là các bạn sẽ cần phải generate ra một cái Open AI API key để các bạn có thể ờ sử dụng các cái model của Open AI

23:45 thông qua lời gọi API. Thế để có được cái key này ấ thì các bạn sẽ cần phải có một cái tài khoản trong cái trang platform.2.com này trước đã. Thì các bạn click vào đây. Sau các bạn có thể các bạn tạo tài khoản. Các bạn có thể tạo cái tài khoản mới hoặc là các bạn có thể đăng nhập luôn bằng cái email Google của các bạn. Ví dụ ở đây mình sẽ tiếp tục với tài khoản Gmail của mình. Mình sẽ click vào option là continue with Google. Ok, đây là bên trong tài khoản của mình. Các bạn nhìn thấy ở phía bên trái này các bạn sẽ có một cái option đó là API key. Các bạn click vào đó. Ở đây là danh sách các cái API key mà mình đã từng generate trước đây. Thế bây giờ mình sẽ tạo ra một cái API key mới để có thể sử dụng cho cái project này.

24:32 Mình sẽ click vào cái nút create new secret key ở góc trên bên phải. Ở đây tên thì các bạn gõ gì cũng được. Ví dụ đây mình dùng một cái tên đó là chatbot project thì các bạn cứ để default project là được rồi. Sau đó các bạn sẽ click vào create secret key. Các bạn nhìn nhá. Sau đó thì sẽ có một cái key nó được generate ra như này. Và các bạn chú ý là các bạn sẽ click vào cái nút copy này. Ok. Và các bạn chú ý này, sau khi mà các bạn click vào cái nút ăn này ấy thì các bạn sẽ không bao giờ các bạn có thể nhìn lại được full cái key này nữa. Thế nên là các bạn đừng quên cái việc là click vào nút copy nhá. Tại vì nếu các bạn quên các bạn ấn vào đăng rồi ấy các bạn sẽ không có cách nào các bạn có thể lấy lại được cái key này đâu. Các bạn sẽ phải tạo ra một key mới. Sau đó mình sẽ quay lại project chính

25:19 của mình. Mình sẽ tạo ra một cái file mới. Cái file này sẽ có tên là chnv. Thật ra thì cái file nó sẽ không có tên các bạn ạ. Nó chỉ có mỗi cái phần mở rộng là NV thôi. NV là vi tắt của environment, tức là môi trường đấy. Ok. Thế bây giờ mình sẽ thêm vào một cái biến có tên là Open the AI API key như thế này bằng. Sau đó mình sẽ paste cái secret key mà mình vừa mới tạo ra. Đây các bạn nhìn này. Nó sẽ paste như này. Và các bạn chú ý nhá các bạn đừng bao giờ share cái API key này cho người khác nhá. Tại vì các bạn mà share cho người khác ấy thì người ta có thể sử dụng và nó sẽ bị trừ thẳng vào tài khoản của các bạn ấy. Tất nhiên là sau khi record xong cái view này mình cũng sẽ phải xóa key này đi để tránh nó bị lộ ra ngoài. Ở đây có một điểm mà các bạn nên chú ý đó là không phải chúng ta cứ generate ra một cái open AI API key mới là chúng ta đã

26:06 có thể sử dụng ngay các cái mô hình của Open AI được đâu và chúng ta sẽ cần phải nạp tiền vào cho tài khoản của chúng ta trước. Sau này mỗi khi mà chúng ta sử dụng các cái API code, các cái lời gọi API của Open AI thì chúng ta sẽ đều phải trả một số tiền. Ví dụ chúng ta sử dụng các cái edic model của Open AI để có thể các cái trang hoặc chúng ta sử dụng cái mô hình m ngữ lớn của Open AI để trả lời câu hỏi chẳng hạn thì mỗi một cái lời gọi TPI này sẽ đều phải tốn một số tiền. Số tiền này thật ra cũng không quá lớn. Ví dụ là chúng ta sử dụng các cái Ming order thì nó tốn cũng rất là ít thôi. Và khi mà chúng ta sử dụng cái mô hình ngôn ngữ lớn thì cái số tiền nó sẽ được tính dựa vào độ dài của câu hỏi cộng với độ dài của câu trả lời. Không quá tốn nhưng mà dù sao cũng không phải được miễn phí hoàn toàn. Sau này trong một video khác mình sẽ hướng dẫn các bạn cách để có thể

26:51 tự host các cáiing model cũng như là các nguồn ngó lớn trên chính máy của các bạn thông qua các cái công cụ ví dụ như là Oama hay là LM Studio. Thế nhưng trong video này thì cho đơn giản chúng ta sẽ sử dụng các cái mô hình có sẵn của Open AI thông qua lời gọi API. Để có thể nạp tiền vào tài khoản thì chúng ta sẽ trở lại trang chủ của tài khoản chúng ta. Các bạn click vào home này. Sau các bạn sẽ nhìn thấy là gì? Là ở phía bên phải chúng ta có một cái ô có cái dòng chữ là credit balance. Đây là số tiền đang có trong tài khoản. Như các bạn có thể thấy trong tài khoản của mình hiện nay là không có một xu nào cả đúng không? Thì các bạn click tiếp vào cái nút là add credit. Rồi các bạn thấy không? Thế bây gi tiếp vào cái nút là add to credit balance. Ở đây thì các bạn sẽ ghi số tiền các bạn muốn làm. Ví dụ ở đây mình làm 10 đô chẳng hạn. Sau các bạn sẽ chọn tiếp cái

27:36 phương thức thanh toán. Phương thức thanh toán thì có hai phương thức đó là các bạn có thể chạp bằng thẻ Visa hoặc là thẻ Master. Thì ví dụ đây là mình đã có sẵn một cái thẻ mình đã để ở đây sẵn rồi đúng không? Các bạn có thể các bạn add thêm cái phương thức thanh toán mới. Click vào đây các bạn chọn là các bạn chả bằng cái gì chẳng hạn. Ví dụ như vậy. Thế thì ở đây thì mình sẽ dùng luôn cái thẻ mà mình đã có sẵn rồi. Mình sẽ click tiếp vào continue. Sau đó thì mình sẽ click tiếp vào confirm payment. Rồi sau đó nó sẽ gửi cái mạng code và điện thoại của mình. Mình confirm thế là xong. Thanh toán xong x rồi chúng ta sẽ quay lại với đạo code của chúng ta. Thì đầu tiên chúng ta sẽ cần phải thêm cái dòng import thư viện form l trên open ai import open ai headings. Ok. Và ở dưới thì chúng ta sẽ à xóa mấy cái dòng green này đi. Chúng ta sẽ thêm một cái dòng nữa là

28:23 bằng openedings như thế này. Chúng ta sẽ cần phải chỉ ra một vài những cái tham số cần thiết. Open AI họ có offer một vài các cái ing model cho người dùng lựa chọn. Trong đó thì có hai cáiing model phổ biến nhất. Một cái có tên là text em to small và một cái là text em to large. Nhìn qua cái tên các bạn biết là cái đầu tiên nó sẽ nhỏ và nó sẽ rẻ hơn cái thứ hai đúng không? Thì các bạn nhìn qua một chút nhá. Mặc định ấy nếu mà chúng ta không có thay đổi cái gì thì cái mô hình đầu tiên cái text embedding small ấy nó sẽ embet các cái tài liệu chúng ta và nó sẽ tạo ra cái output là những cái vecor có độ dài là 1536 phần tử. Thế còn cái mô hình thứ hai text and meding t slash ấy thì mặc định địch thì cái output đồ ra nó sẽ là một cái vecor có độ dài là 3072 phần tử. Tất nhiên là chúng ta cũng

29:10 có thể có một cái option là chúng ta sẽ thu nhỏ cái kích thước của vector đô ra này. Thế nhưng mà ở trong cái view này để cho đơn giản chúng ta sẽ không đả động gì chúng ta sẽ chỉ sử dụng cái kích thước mặc định mà thôi. Nhìn chung thì cái mô hình lớn nó sẽ tốt hơn mô hình nhỏ nhưng mà cái giá vẻ trả đó là cái chi phí sử dụng nó cũng đắt hơn. Quay lại đạo cod của chúng ta mình sẽ chỉ ra là mình sẽ sử dụng cái model lớn text em large. Quay trở lại một chút với cái tài liệu hướng dẫn của Open AI. Các bạn sẽ thấy là ở trong cái bảng này này có cái cột cuối cùng đó là max input. Max input của cả ba cái mô hình mà Open AI offer dành cho model ấy nó đều có cái giá trị là 8192 token. Có nghĩa là gì? Có nghĩa là nếu mà cái tài liệu đầu vào mà các bạn muốn thực hiện bing ấy nó có độ dài quá 8192 token ấy thì nó sẽ bị cắt bớt đi để cho nó fit với cái kích thước này.

29:56 Thế do đó thì để cái quá trình nó hiệu quả các bạn nên chú ý làm sao để cho cái input của bạn ấy nó có độ dài không quá cái con số này. Trong trường hợp của chúng ta thì chúng ta an toàn chắc chắn là không phải lo. Tại vì sao? Tại vì các bạn nhớ là khi chúng ta thực hiện trang king ấy, chúng ta có cái tham số là trang size là 1200 ký tự. Mà các bạn biết là một cái token ấy nó sẽ được tạo ra từ nhiều ký tự đúng không? Tức là nếu mà cái trang size của chúng ta là 1200 là tối đa thì chắc chắn là cái số lượng token của nó nó sẽ phải nhỏ hơn 1200 rất là nhiều. Do đó thì chắc chắn nó không thể nào có chuyện là nó vượt quá 8192 được. Qua đây chúng ta cũng có thể thấy là do là các cái ing model ấy nó luôn có cái kích thước tối đa cho input vào. Thế nên là người ta sẽ không bao giờ người ta có thể nguyên một tài liệu rất là dài mà ta sẽ phải thể hiện trang king để chia nhỏ nó thành những cái tài liệu con. Cái về trcking này ngoài việc là

30:42 giúp cho cái quá trình truy suất sau này trở nên hiệu quả hơn thì nó còn giúp cho cái việc là chúng ta tránh mất mát thông tin khi mà chúng ta cảm cái tài đợi lớn. Quay trở lại với đoạn code của chúng ta. Có một cái này nữa mình quên mình chưa chỉ các bạn đó là để cho cái chương trình chúng ta ấy nó có thể sử dụng được cái Open AI api key mà chúng ta vừa mới khai báo trong cái file môi trường này. Chúng ta sẽ cần phải có thêm một cái dòng này. Đầu tiên các bạn sẽ cần form dot environment import not do environment này. Sau đây các bạn sẽ cần phải có một cái dòng này ở ngay đầu. Ok, sau cái dòng này rồi ấ thì chương trình ra nó sẽ nhận diện được cái Openi AI API key và chúng ta khai báo trong cái file environment t trước. Bây giờ mình sẽ test nhanh cho các bạn cách sử dụng eding model của Open AI. Để cho đơn

31:28 giản thì mình sẽ chỉ cop mỗi cái dòng cuối cùng này thôi. Mình sẽ cop nó và mình sẽ paste nó vào trong một cái script mới đặt tên là example. Mình thiếu m một cái dòng import thì mình sẽ copy những dòng này import thư viện để sử dụng opening model cũng như là import cái hàm để có thể load được những cái biến môi trường. Mình sẽ paste vào đây. Ok. Rồi sau đó mình sẽ sử dụng cáiing model này để mình có thể một cái đoạn texting. Đó chúng ta sẽ dùng một cái method có tên là query. Ok query thì mình sẽ emb một cái đoạn text ví dụ như là today is a beautiful

32:14 day. Ok và mình sẽ in ra cái kết quả cho các bạn xem nhá. Print vector này. Ok, mình sẽ chạy đoạn script này. Các bạn nhìn này, đây chính là cái vecơ kết quả của chúng ta. Đấy, và bây giờ mình sẽ có thể im ra một cái dòng nữa để chúng ta có thể xem là cái độ dài của vectơ này là bao nhiêu phần tử. Để thêm một cái dòng nữa là pin lens của vector. Mình chạy lại đoạn script này nhá. Đây như các bạn có thể thấy cái vecơ output của chúng ta là một vectơ có 3072 phần tử. Nó giống y hệt như những gì chúng ta vừa nhìn thấy trong cái tài liệu giới thiệu của Open AI. Thế bây giờ nếu mà mình đổi cái mô hình của mình, mình không dùng cái mô hình lớn nữa mà mình dùng mô hình nhỏ. Mình sẽ chạy lại đoạn script này. Đây các bạn thấy không? Chúng ta được

32:59 một cái vecơ khác có kích thước nhỏ hơn là 1536 phần tử. Vừa rồi là ví dụ chúng ta sử dụng eding model của Open AI để có thể embed một cái đoạn tex đồ vào. Tất nhiên trong trường hợp của chúng ta chúng ta sẽ cần sử dụng eding model để có thể tất cả các cái trang chứ không phải chỉ một cái đoạn tex riêng lẻ. Cái thứ nhất. Cái thứ hai là sau khi chúng ta xong tất cả các cái trang này rồi, chúng ta sẽ cần phải lưu chữ chúng trong một cái vector database. Cũng giống như với model thì đối với vector database chúng ta có rất nhiều các cái sự lựa chọn khác nhau, cả miễn phí, cả thu phí. Thông thường khi mà dữ liệu của chúng ta chưa có quá lớn ấy thì các bạn hoàn toàn có thể sử dụng các cái vector database miễn phí. Rồi sau này khi mà các bạn triển khai chatbot trong môi trường thực tế khi mà cái lư dữ liệu nó rất là lớn rồi, các bạn có thể cân nhắc sử dụng các cái vector database thu phí sau. Một trong số những sự lựa chọn phổ biến nhất

33:45 dành cho factor database miễn phí đó là face của meta. Face là viết tắt của Facebook AI Similarity Search. P cũng đã được thích hợp vào trong L trên rồi nên là để sử dụng thì cũng rất là đơn giản thôi. Đầu tiên chúng ta sẽ cần phải có một cái câu lệnh import như này. Form l trên community ch store import face. Sau đấy thì ở dưới chúng ta sẽ tạo ra một cái biến mới tên là vector store page trên này và mình sẽ sử dụng một cái method, một cái phương thức có tên là form document.

34:31 Ok. Và sau đó mình sẽ chỉ ra một vài những cái tham số cần thiết. Trước tiên chúng ta sẽ cần phải chỉ ra là chúng ta sẽ sử dụng cái vector database này để lưu trữ cái gì. Tất nhiên là chúng ta muốn lưu trữ các cái vector đúng không? Thế nhưng mà hiện tại chúng ta vẫn chưa chính thức có cái ing vector nào cả. Tại vì các bạn nhìn thấy ở trên này chúng ta mới chỉ thực hiện trang king này đúng không? Chúng ta khai báo cái ading model của chúng ta nhưng mà chúng ta chưa thực hiện đúng không? Thì đầu tiên các bạn sẽ phải chỉ ra là tôi muốn cái gì thì mình sẽ chỉ ra thông qua một cái tham số là document split này đúng không? Tôi sẽ embed các cái trang của tôi. Sau đó các bạn sẽ phải chỉ ra tiếp là tôi sẽ trúng bằng cái mô hình gì. Cái mô hình của mình sẽ chính là cái mô hình ing model của Open như thế này đúng không? Mình sẽ chỉ

35:16 thông qua một cái tham số có tên làding như thế này. Thì đây là hai cái tham số đầu tiên, hai tham số quan trọng nhất. Tiếp theo chúng ta sẽ cần phải chỉ ra đó là sau này khi mà chúng ta thực hiện so sánh giữa các cái em vector của các cái trang này với em vector của câu truy vấn của người dùng thì chúng ta sẽ so sánh sự tương đồng dựa chúng dựa theo cái phương pháp hay là dựa theo cái magic gì. Thông thường thì ở đây chúng ta sẽ sử dụng cosizity. Thì để có thể chỉ ra cái magic này chúng ta sẽ cần thêm một cái dòng import ở trên. Đây chúng ta sẽ có thêm dòng đó là form community. R store ch import distance

36:02 strategy. Ok. Và sau đó thì ở phía dưới chúng ta sẽ thêm một cái tham số nữa đó là distance strategy bằng à distance ở trên chấm à cze như thế này. Đây chúng bạn đã chỉ ra là gì? Tôi sẽ so sánh cái sự tương đồng giữa các cái vecor thông qua CI Simulity. Các bạn chú ý là ở đây vector store về mặt bản chất nó là một cái vector database nó lưu trữ các cái mding của các cái trang tài liệu của chúng ta. Tiếp theo chúng ta sẽ cần có thêm một cái thành phần được gọi là

36:47 receiver. Receiver có tác dụng gì? Receiver nó có tác dụng là nó sẽ nhận vào cái câu hỏi của người dùng. Sau đó nó sẽ tìm xem là trong cái vector database của chúng ta đâu là những cái trang tài liệu nó có liên quan nhất đến câu hỏi này. Rồi sau đó nó sẽ tổng hợp cái câu hỏi cũng như là các cái trang tài liệu liên quan này vào trong pro để có thể đưa vào cho mọi hình ngôn ngữ lớn. Để làm được điều đó thì bây giờ mình sẽ khởi tạo thêm một cái biến mới có tên là receiver. Receiviver bằng vector store chs receiver. Mình sẽ ờ thiết lập hai giá trị tham số có tên là search si và search keyword arguments. Ở đây thì cái search size của mình nó có cái giá trị là simulity score too. Thế còn cái search keyword argument

37:33 của mình nó sẽ là một cái dictionary. Nó có hai cái item hai cái phần tử. Phần tử đầu tiên là K mình thiết lập giá trị bằng 5. Phần tử thứ hai đó là score vle mình thết lập giá trị bằng 0,2. Những cái giá trị này nó có ý nghĩa gì? Dòng đầu tiên search 2 bằng simulity score thessal để chỉ ra rằng là mình sẽ chỉ lấy lại những cái trang tài liệu mà có cái điểm simulity, có cái điểm tương đồng với cái câu hỏi của người dùng vượt quá một cái ngưỡng nào đấy mà mình chỉ định. Cái ngưỡng đấy bằng bao nhiêu thì nó bằng 0,2 như mình thiết lập ở đây. Và mình sẽ chỉ lấy tối đa là trăng tài liệu mà thôi. Tức là kể cả có trường hợp mà chúng ta có 7, có 8 hay là có nhiều hơn những cái trang tài liệu mà có cái điểm simulity với cái câu hỏi của người dùng vượt qua cái ngưỡng này thì mình cũng sẽ chỉ lấy năm cái có cái điểm cao nhất mà

38:18 thôi. Và các bạn chú ý nhá, mình nhắc lại đó là để có thể đánh giá được xem là cái sự tương đồng giữa câu hỏi của người dùng với cả một cái trang tử liệu nào đó thì người ta cũng sẽ sử dụng đúng cái eding model mà vừa nãy chúng ta dùng để có thể các cái trang tài liệu. Thì bây giờ người ta sẽ dùng đúng cái mô hình này để có thể câu hỏi người dùng. Sau đó thì bây giờ cái việc là so sánh sự tương đồng giữa câu hỏi người dùng với cả một cái trang tài liệu sẽ được chuyển thành bài toán là tính toán ciz simity giữa hai vecơ. Việc tiếp theo mà chúng ta cần làm đó là chúng ta sẽ cần phải thiết kế một cái prom cho con chop của chúng ta. Trong Chrome này chúng ta sẽ cần phải chỉ ra được ba điều. Điều đầu tiên là vai trò của con chatbot này là gì? Con chatbot này nó sẽ đóng vai trò như một trợ lý cá nhân hay là một giảng viên hay là một nhà tư vấn. Ở ngay trong prom này chúng ta cũng có thể đồng thời chỉ ra

39:03 cái phong cách con chatbot nó sẽ trả lời câu hỏi của người dùng. Ví dụ chúng ta có thể định nghĩa con chatbot chúng ta nó sẽ mang phong cách là nghiêm túc hay là vui vẻ hay là hài hước. Điều thứ hai mà chúng ta cần phải chỉ ra trong Chrome đó là câu hỏi gốc của người dùng. Và điều thứ ba, điều cuối cùng là chúng ta sẽ cần phải chỉ ra cho con chatbot là nó sẽ cần phải tìm kiếm thông tin từ đâu để có thể trả lời câu hỏi. Các bạn nhìn nhá, đây là cái template mình thiết kế cho cái prom dành cho con chatbot của mình. Ở ngay dòng đầu tiên mình sẽ chỉ ra vai trò, nhiệm vụ cũng như là phong cách của con chatbot mà mình đang muốn hướng đến. Con chatbot của mình là một trợ lý nghiêm ngặc, nó sẽ tập trung vào các cái trích dẫn dành cho các cái nguồn dữ liệu riêng. Các nguồn dữ liệu riêng ở đây trong trường hợp của mình nó chính là cái nguồn về các cái bài bán nghiên cứu khoa học. Mình đặt ra bốn quy tắc mà con chat bot của mình nó cần tuân theo.

39:48 Quy tắc đầu tiên đó là chỉ sử dụng cái ngữ cảnh được cung cấp để có thể trả lời câu hỏi. Cái ngữ cảnh cung cấp này nó chính là những cái trang tài liệu có liên quan đến câu hỏi của người dùng. Quy tắc thứ hai đó là nếu mà không thể nào có được một cái câu trả lời rõ ràng dựa trên cái ngữ cảnh được cung cấp thì có chá boss này nó hãy đơn giản trả lời là tôi không biết. Quy tắc thứ ba đó là không sử dụng các cái kiến thức bên ngoài, không đoán hoặc là không search trên mạng để tìm thông tin. Quy tắc số ba này củng cố làm mạnh hơn cho quy tắc đầu tiên đó là gì? đó chúng ta muốn có chop chúng ta nó sẽ chỉ sử dụng những cái thông tin những cái dữ liệu từ cái nguồn tài liệu riêng của chúng ta để trả lời câu hỏi mà thôi chứ không sử dụng bất kỳ một cái nguồn tài liệu nguyên hay là không sử dụng bất kỳ một cái kiến thức nào ở bên ngoài. Quy tắc cuối cùng là nếu có thể thì hãy trích dẫn cái nguồn mà con chatbot đã sử dụng để có thể đưa ra câu trả lời. Cái quy tắc cuối

40:35 cùng này giúp chúng ta có thể kiểm tra xem là những cái thông tin mà con chó bot nó đưa ra ấy nó có thực sự có chính xác hay không. Và tất nhiên tất cả những cái nguồn này nó sẽ đều nằm trong những cái dữ liệu riêng của chúng ta. Cuối cùng hai thứ rất quan trọng mà chúng ta cũng cần phải chỉ ra cho con chatbot đó là ngữ cảnh và câu hỏi. Câu hỏi thì dễ hiểu rồi. Câu hỏi chính là cái câu hỏi của người dùng đưa ra. Thế còn ngữ cảnh là cái gì? Ngữ cảnh chính là nội dung của các cái trăng mà có liên quan nhất đến cái câu hỏi này và chúng ta truy xuất được dựa vào receiver ở phía trên. Sau khi thiết kế xong template thì mình sẽ cần phải tạo ra một cái prom template này. Chúng ta sẽ cần phải có thêm một dòng import. form trên corps import chat

41:21 template sau thì ở phía dưới chúng ta sẽ khởi tạo thêm một cái biến nữa mình đặt tên là chat chrome template này mình sẽ dùng cái method có tên là form template và mình sẽ truyền vào đúng cái template mà mình vừa mới thiết kế ở phía trên. Ok, vậy là xong rồi. Chúng ta đã tạo ra được cái prom template mà chúng ta định nghĩa ở vừa rồi. Chúng ta vẫn còn thiếu một thành phần rất quan trọng đó là một mô hình hối ngữ lớn để nó có thể trả lời câu hỏi của người dùng dựa vào cái pro mà chúng ta cung cấp. Các mô hình hố ngữ lớn nổi thứ nhất thì đó chính là các cái mô hình chat GBT của Open AI. Và do ở phía trên thì mình cũng đã sử dụng cáiing model của Open AI rồi nên là bây giờ mình cũng sẽ tiếp tục sử dụng một cái mô hình ngôn ngữ lớn cũng của Open AI. Chúng ta lại tiếp tục phải import tiếp. Vừa rồi chúng ta đã import cáiing

42:09 model của Open AI rồi thì bây giờ mình sẽ import tiếp một cái gọi là chat Open AI. Ok. Và sau chúng ta sẽ kẹp xuống dưới. Mình sẽ khởi tạo một cái mô hình ngôn ngữ lớn LN bằng chat Open AI. Mình sẽ cần phải chỉ ra một vài những cái tham số cần thiết. Đầu tiên thì các bạn đều biết là Open AI có rất nhiều các phiên bản khác nhau dành cho các mô hình ngôn ngữ lớn. Tất nhiên là với mỗi phiên bản thì chúng ta sẽ có cái giá thành sử dụng khác nhau và các bạn có thể thấy ở đây là cái bảng giá khi mà chúng ta sử dụng các cái phiên bản khác nhau của mô hình GPT. Và cái bảng giá này là tính dựa trên cứ mỗi 1 triệu token. Các bạn cứ dùng 1 triệu token thì các bạn sẽ phải trả bao nhiêu. Ví dụ cho project của chúng ta thì mình sẽ sử dụng mô hình là GPT5 mini. Thì mình sẽ quay lại với cái đoạn squ của mình. Mình sẽ chỉ ra ở

42:54 đây model bằng GPT 5 mini thế này. Ok. Mình chỉ ra là mình sử dụng mô hình gì rồi. Mình sẽ chỉ ra một cái tham số nữa tên là temperature. Mình sẽ thiết lập nó giá trị bằng 0. Temperature ở đây có ý nghĩa là gì? Temperature thể hiện mức độ ngẫu nhiên trong câu trả lời của mô hình. Temperature mà càng cao thì cái câu trả lời của mô hình nó sẽ càng có tính sáng tạo. Trong khi temperature nó càng thấp thì cái câu trả lời của mô hình nó sẽ càng ổn định. Thông thường thì temperature đối với các cái mô hình của Open AI nó sẽ có giá trị là từ 0 cho đến 2. Không có nghĩa là rất là ổn định. trong G2 nghĩ là rất là sáng tạo. Thông thường thì đối với các cái chatbot phục vụ mục đích là tìm cái thông tin hay là tra cứu tài liệu thì người ta thường hay để temperature bằng 0. Thế còn đối với những con chatbot phục vụ tư vấn hay là

43:40 sáng tạo nội dung thì người ta sẽ để temperature có cái giá trị lớn hơn. Ok, đến bước này chúng ta đã có các thành phần thiết để có thể xây dựng một con chatbot rồi. Việc kế tiếp mà chúng ta cần làm đó chúng ta sẽ cần phải kết nối các thành phần này lại với nhau. Để có thể tạo thành một cái pip hoàn chỉnh thì chúng ta sẽ cần có thêm hai dòng import nữa. Nội dung của hai dòng này nó như sau. Tạm thời các bạn cứ viết nguyên như thế này, tí nữa mình sẽ giải thích ý nghĩa của từng dòng là gì. Tiếp theo mình sẽ kéo xuống dưới cùng. Bây giờ mình sẽ tạo ra một cái biến có tên là RP chain. Và nó có cái cú pháp như thế này. Rapchain ở đây chính là một cái pipeline mà chúng ta kết nối các cái thành phần mà chúng ta đã định nghĩa ở phía trên lại và với nhau. Rap chain ở đây đại diện cho toàn bộ quy trình và con chatbot của chúng ta nó sẽ hoạt động từ nhận câu hỏi từ người dùng. Lấy ngữ cảnh liên quan từ receiver, nhét

44:27 cái ngữ cảnh liên quan này cùng với câu hỏi vào trong prom gửi cái prom này cho mô hình ngôn ngữ lớn rồi cuối cùng sẽ lấy ra cái output mà mô hình ngôn ngữ lớn nó tạo ra để trả lại cho người dùng. Các bạn chú ý là ở đây chúng ta có sử dụng các cái ký hiệu dấu gạch dọc này nó có nghĩa là nó sẽ kết nối các cái thành phần lại và với nhau. Thì ví dụ các bạn thấy là cái rock trên chúng ta nó có bốn thành phần đúng không? thì ba cái dấu gách giọng này nó sẽ kết nối chúng lại với nhau. Kết nối ở đây có ý nghĩa đó là output của cái bước trước nó sẽ là input của bước sau. Thì các bạn thấy tức là cái output của bước đầu tiên này nó sẽ là input của bước thứ hai. Và tương tự như vậy, output của bước thứ hai sẽ là input của bước thứ ba và output của bước thứ ba sẽ là input của bước cuối cùng. Thế bây giờ mình sẽ giải thích ý nghĩa chi tiết của từng bước một. Bước đầu tiên, cái dòng đầu tiên này, đúng không? Cái bước này nó có ý nghĩa là gì? Bước

45:13 này nó có ý nghĩa là nó sẽ tạo ra cái input cho chúng ta. Cái bước này nó chỉ ra rằng là cái trường context, cái trường cự cảnh sẽ được tạo ra bằng receiver ở phía trên của chúng ta. Thế còn trường question sẽ được giữ nguyên với cái input gốc ban đầu. Khi mà người dùng đặt ra một câu hỏi thì câu hỏi đó sẽ được đưa vào trong receiver. Receiver sẽ tìm các cái trang tài liệu liên quan trong vectơ database và sau đó thì kết quả sẽ được trả về và gắn vào cho context. Thế còn đối với cái câu hỏi thì cái câu hỏi này chúng ta sẽ sử dụng nguyên cái câu hỏi đó. chúng ta sẽ không có thay đổi, chúng ta sẽ không có biến tấu gì cái câu hỏi này, câu hỏi người dùng đặt ra như nào thì nó sẽ đưa nguyên vào cái phần question này. Đấy chính là cái ý nghĩa của runable pass through. Hai cái input vừa rồi sẽ được gửi đến cái bước thứ hai là prome. Thì các bạn nhớ là vẫy chúng ta định nghĩa prom này

45:59 đúng không các bạn? Nhìn chúng ta định nghĩa prom là nó dựa vào một cái template. Cái template này chúng ta có hai cái biến chúng ta truyền vào đó là context với cả question đúng không? Thì context với cả question nó chính là được lấy ra từ cái bước một này đúng không? Thì ở đây chúng ta sẽ thiết kế cái prom chúng ta đúng không? Dựa vào cái context với cả cái question vừa được truyền vào. Và sau đó thì cái kết quả đấy sẽ được gửi tiếp đến cái mô hình ngôn ngữ lớn của chúng ta. Nhìn chung thì với cách mà chúng ta định nghĩa prom ở phía trên á thì cái mô hình ngôn ngữ lớn này nó sẽ tìm cách trả lời câu hỏi của người dùng dựa vào cái context cái ngữ cảnh mà cái receiver nó lấy ra. Kết quả mà mô hình ngôn ngữ lớn này nó trả về thông thường nó sẽ là một cái object có cấu trúc khá là phức tạp. Thế nhưng mà bây giờ chúng ta chỉ muốn in ra cái câu trả lời của mô hình này thì chúng ta phải làm thế nào? Thì bây giờ mình sẽ gắn thêm cái bước cuối cùng là như thế này. Thì cái bước cuối cùng này ấ nó sẽ trả về cái câu trả lời của m

46:46 ngôn ngữ lớn dưới đạn text dạ văn bản để cho chúng ta có thể dễ dàng hiển thị ra ngoài màn hình. Cái tên này các bạn có thể hiểu một cách đơn giản đó chính là viết tắt của string output. Đến đây thì con chatbox của chúng ta nó đã hoàn thiện rồi. Chúng ta đã có thể thử test xem là nó trả lời các cái câu hỏi của người dùng như thế nào. Quay trở lại với script của chúng ta. Bây giờ mình sẽ thêm một dòng để có thể nhận vào input là câu hỏi của người dùng. Question input. Đây dòng này chính là dòng để chúng ta có thể nhận vào câu hỏi của người dùng. Tiếp theo chúng ta sẽ đưa câu hỏi này vào trong con chatbot của chúng ta mà cụ thể là chúng ta sẽ đưa nó vào trong cái rock train chúng ta vừa mới định nghĩa ở phía trên. Answer bằng ra chin chin inbox.

47:32 Input đầu vào chính là question của chúng ta và mình sẽ in ra câu trả lời. Ok, bây giờ mình sẽ chạy thử đoạn script này nhá. Nên đặt câu hỏi gì bây giờ thì mình sẽ nhìn lại qua một chút về hai cái bài báo mà lúc đầu chatt nó generate ra cho chúng ta và chúng ta sử dụng nó để làm cái nguồn dữ liệu riêng. Thì mình thấy là trong cái bài thứ hai nó có một cái khái niệm gọi là HVIT leave. Thì bây giờ mình sẽ thử hỏi cái con chop boss của mình để xem là nó giải thích ý nghĩa của cái thuật ngữ này như thế nào. Mình sẽ đặt câu hỏi là what is h? Các bạn chú ý này, cái thuật ngữ này tên đầy đủ nó là h leave. Nhưng mình sẽ thử là khi mình đặt câu hỏi mình viết nó thiếu để xem nó có chatb của mình nó có hiểu hay không. Mình hỏi này.

48:19 Và đây như các bạn có thể thấy đây chính là câu trả lời của con chat của chúng ta. Nó rất là dài như này. Thì bây giễ theo dõi thì mình sẽ copy paste cái đoạn text này vào Google Doc các bạn nhá. Đây là toàn bộ nội dung của câu trả lời mà con chatbot nó trả về cho mình. Thì các bạn thấy không? Nó mô tả cái khái niệm HVIT le này. Các bạn thấy không? Trong cái câu hỏi ấ mình chỉ đặt câu hỏi là HVIT thôi. Nhưng mà mô hình nó cũng hiểu được là mình đang hỏi về một cái khái niệm là HVIT Leave được tìm thấy trong cái bài báo thứ hai của chúng ta. Và các bạn thấy đ là gì? là ở cuối của cái câu trả lời này chúng ta có một cái phần liên quan đến cái phần trích dẫn đúng không? Tức là cái con chot chúng ta ấy nó sau khi trả lời xong ấy nó cũng sẽ chỉ cho chúng ta biết là cái thông tin mà nó lấy ra để nó trả câu hỏi này lấy được từ cái nguồn nào. Nguồn là trang bao nhiêu này đúng không? Đây là những

49:04 cái trang mà nó lấy ra từ cái vector database của chúng ta. Vì sao nó lại trả lời thêm cái phần trích dẫn này? Tại vì là lúc mà chúng ta thiết kế cái template cho prom ấy, chúng ta đã chỉ ra là gì? Là nếu có thể thì hãy trích dẫn cái nguồn. Nhìn qua một chút về nội dung của câu trả lời này thì cái câu đầu tiên nó thể hiện là gì? Nó thể hiện là HVT le kiến trúc vision transformer được thiết kế để có thể nhận diện à bệnh trên các cái lá của cái lúa đúng không? Trên các cái thiết bị mà có điện năng thấp. Quay trở lại với cái bài báo gốc của chúng ta. Bài báo số hai thì các bạn thấy là ngay ở cái câu đầu tiên trong cái phần abstract này nó thể hiện khá là đúng với cái mục đích của cái kiến trúc này đúng không? Mình sẽ kéo xuống dưới một chút để xem là trong nội dung này nó có cái gì nó đáng chú ý hay không. Mình thấy là ở bắt đầu của cái trang thứ

49:49 hai nó có một cái câu đấy là cái kiến trúc được đề xuất này, cái kiến trúc HVT le này nó bao gồm bốn bước. Thì bây gi của mình để xem là chó mình nó có trả lời được câu hỏi có liên quan đến các cái bước này hay không. Mình sẽ đặt câu hỏi là let's describe HVIT leave workflow. Ok. Enter. Và đây là câu trả lời. Tương tự như vừa rồi mình cũng sẽ copy câu trả lời này. Mình sẽ copy paste nó vào trong ờ Google Docs để xem cho nó dễ. Đây là câu trả lời của con chatbot của mình. Các bạn thấy không? Nó cũng chỉ ra được rằng là gì? là cái workflow nó bao gồm có bốn stage bốn bước đúng không? Và đây là cái mô tả của từng bước một. Tất

50:37 nhiên là chúng ta cũng sẽ cần phải xem lại với cái tài liệu gốc để xem là câu trả lời nó có chính xác hay không. Nhưng mà nhìn qua thì mình thấy cũng có vẻ khá là ok đúng không? Và các bạn thấy là cũng giống như câu hỏi đầu tiên thì ở cuối của câu trả lời này nó cũng chỉ ra những cái nguồn mà cái con chop boss chúng ta nó đã dựa vào để nó có thể trả lời câu hỏi. Vậy là trong video này chúng ta đã cùng nhau thực hành xây dựng một chatbot giúp tìm kiếm cũng như là tra cứu thông tin về các bài bán nghiên cứu khoa học. Từ đây các bạn hoàn toàn có thể mở rộng để có thể xây dựng các cái chatbot dành cho các bài toán tương tự. Mình hy vọng là những chia sẻ của mình trong video này hữu ích với các bạn. Mình rất cảm ơn các bạn đã dành thời gian đ của mình. Mình sẽ hẹn các bạn những video sau. Nếu các bạn đang quan tâm đang tìm hiểu về các cái khoa học online về AI, data science machine learning thì các bạn có thể ở lại để nghe tiếp phần này. Đầu tiên là khóa Python và AI cơ bản được thiết kế để

51:23 hướng đến những bạn trái ngành, những bạn chưa thường tiếp xúc với lập trình hay là IT bao giờ. Trong khóa học này, các bạn sẽ được dạy những cái kiến thức cơ bản về lập trình Python. Các bạn cũng sẽ được làm quen với những cái thư viện Python hay được sử dụng trong lĩnh vực dat machining. Đồng thời các bạn cũng sẽ được chia sẻ về những cái ứng dụng của AI trong những cái lĩnh vực trong cuộc sống thực tế. Khoa học thứ hai mà bọn mình sẽ khai giảng trong thời gian tới là khoa học chủ chốt mà bọn mình mở nhiều lớp nhất từ trước cho đến giờ. Đó là khóa data và machine learning nâng cao. Khóa này hướng đến các bạn đang học hoặc đang làm cho liên công nghệ thông tin hoặc những bạn đã có kinh nghiệm về lập trình rồi. Khóa học này sẽ cung cấp cho các bạn toàn bộ những kiến thức các bạn cần biết về data science và machine learning. Ngoài ra trong khóa học này chúng ta cũng sẽ tìm hiểu về hai cái nhánh ứng dụng chính của AI đó là xử lý

52:08 ngôn ngữ tự nhiên và thị giác máy tính. Trong khóa học này các bạn sẽ được làm việc với private dataset mà mình lấy ra từ công ty cũ của mình là về lĩnh vực tuyển dụng để các bạn có thể thấy được sự khác biệt giữa public dataset mà các bạn có thể dễ dàng download trên mạng với những private dataset mà các bạn sẽ chỉ có thể được tiếp xúc khi các bạn sau này các bạn đi làm ở các công ty. Khoa học tiếp theo là khóa deep learning for computer vision cơ bản. Khóa học này hướng đến những bạn đã có kiến thức cơ bản về machining và các bạn muốn tiếp tục tìm hiểu lên về deep learning. Deep learning for computer vision cũng là cái hướng đi mà mình chọn trong quá trình học thạc sĩ tại đạp KOMIC. Và đây cũng là cái nhánh mà mình làm việc trong suốt hơn 4 năm qua. Trong form này chúng ta sẽ cùng nhau tìm hiểu về những cái kiến thức cơ bản nhất mà các bạn cần biết về deep learning bao gồm là new network,

52:55 convolution new network và những cái layer đứng sau những cái kiến trúc này. Chúng ta cũng sẽ cùng nhau tìm hiểu về những cái mô hình CNN phổ biến nhất từ trước cho đến nay cũng như là bài toán image classification. bài toán có thể nói là cơ bản nhất trong mảng thị giáp máy tính. Khoa học tiếp theo là khóa deep learning for computer vision nâng cao. Khoa học này hướng đến những bạn đã hoàn thành khóa cơ bản và các bạn muốn tiếp tục tìm hiểu về cái topic nâng cao như là object detection, image segmentation, gun hay là OC. Ngoài ra trong khóa học này chúng ta cũng sẽ cùng nhau tìm hiểu và học cách sử dụng Docker. Công cụ không thể thiếu nếu các bạn muốn đi làm sau này không những trong mảng AI mà trong bất kỳ một cái nhánh con nào khác của công nghệ âm tin. Và cuối cùng để bổ trợ cho những bạn nào muốn theo đuổi mảng AI data machining

53:41 nhưng còn bị yếu về kiến thức toán thì mình sẽ tiếp tục khai giảng khóa học toán dành cho AI. Trong khóa này các bạn sẽ được học về bốn cái mảng toán chính cần thiết dành cho bất kỳ ai muốn theo đuổi AI, dat machining bao gồm là xác suất, thống kê, đại số tuyến tính và giải thích. Trong quá trình học thay vì chỉ học những kiến thức lý thuyết cũng như là làm những cái bài tập khô khan thì mình cũng sẽ nói cho các bạn biết là những kiến thức này sau này các bạn sẽ được áp dụng như thế nào trong quá trình học hay là làm về AI datation machine learning. Nếu các bạn quan tâm hay có bất kỳ một thắc mắc gì về bất kỳ một cái khoa học nào của mình các bạn có thể liên lạc với mình thông qua số Zalo như các bạn có thể nhìn trên hình. Yeah.

Share

YouTube Video Summaries