1. Trước khi bắt đầu
Sau đây là một số điều cần lưu ý trước khi tiếp tục lớp học lập trình này.
Điều kiện tiên quyết
- Hiểu biết cơ bản về LLM
- Hiểu biết cơ bản về hệ thống RAG
Kiến thức bạn sẽ học được
- Cách tạo một công cụ tìm kiếm chất lượng cao của Google có thể trả lời các câu hỏi của bạn dựa trên dữ liệu bạn tải lên
- Cách tạo Datastore Vertex AI
- Cách tạo các tác nhân Vertex AI
- Cách tận dụng Cloud Run để triển khai ứng dụng
Bạn cần có
- Tài khoản Google Cloud
- Một dự án trên Google Cloud
- Một IDE có thiết bị đầu cuối
Giới thiệu
Google Tìm kiếm là một công cụ mạnh mẽ sử dụng chỉ mục khổng lồ gồm các trang web và nội dung khác để cung cấp kết quả phù hợp cho các cụm từ tìm kiếm của người dùng. Điều này có được nhờ một kỹ thuật có tên là Tạo sinh tăng cường truy xuất (RAG), đây là một kỹ thuật quan trọng trong AI hiện đại.
RAG hoạt động bằng cách truy xuất các đoạn văn bản liên quan từ một kho tài liệu. Chúng tôi thực hiện việc này bằng nhiều phương pháp, chẳng hạn như so khớp từ khoá, so khớp ngữ nghĩa và học máy. Sau khi được truy xuất, các đoạn văn bản liên quan sẽ được dùng để tạo bản tóm tắt hoặc câu trả lời cho cụm từ tìm kiếm của người dùng.
Lợi ích chính của RAG là giúp các mô hình ngôn ngữ tránh tạo ra thông tin sai lệch. Ảo giác là một thuật ngữ dùng để mô tả việc tạo ra văn bản không được chứng minh bằng bằng chứng trong kho tài liệu. Điều này có thể xảy ra khi các mô hình ngôn ngữ không thể phân biệt thông tin liên quan và không liên quan.
RAG giúp tránh hiện tượng ảo giác bằng cách đảm bảo rằng văn bản được tạo luôn dựa trên bằng chứng từ kho tài liệu. Điều này giúp Google Tìm kiếm trở thành một nguồn thông tin đáng tin cậy hơn.
RAG là một kỹ thuật mạnh mẽ đang được sử dụng trong nhiều ứng dụng, bao gồm cả công cụ tìm kiếm, chatbot và hệ thống trả lời câu hỏi. Có khả năng là học sâu sẽ đóng vai trò ngày càng quan trọng trong AI trong những năm tới.
Sau đây là một số ví dụ về cách sử dụng RAG trong thực tế:
- Nhiều hệ thống tìm kiếm sử dụng RAG để tạo kết quả tìm kiếm phù hợp với cụm từ tìm kiếm của người dùng.
- Chatbot sử dụng RAG để tạo ra những câu trả lời vừa có thông tin vừa hấp dẫn cho các câu hỏi của người dùng.
- Hệ thống trả lời câu hỏi sử dụng RAG để tạo câu trả lời chính xác và toàn diện cho câu hỏi của người dùng.
RAG là một kỹ thuật linh hoạt có thể được dùng để tạo văn bản trong nhiều miền và ứng dụng. Đây là một công cụ mạnh mẽ giúp AI trở nên thông minh và giàu thông tin hơn.
Trong lớp học lập trình này, chúng ta sẽ xây dựng một hệ thống RAG có thể giúp trả lời các câu hỏi của bạn bằng tập hợp văn bản được cung cấp do bạn tải lên. Nền tảng RAG có sẵn được gọi là Vertex AI Search/Agent Builder giúp bạn đẩy nhanh quá trình xây dựng hệ thống RAG, nhờ đó bạn không phải tốn công sức thu thập tài liệu, phân tích cú pháp, phân đoạn, tạo các mục nhúng, mở rộng truy vấn, truy xuất và xếp hạng ứng viên theo cách thủ công. Mặc dù hệ thống RAG có sẵn giúp bạn bắt đầu nhanh chóng, nhưng Google Cloud cũng cung cấp các API riêng biệt cho từng quy trình để xây dựng hệ thống RAG của riêng bạn. Điều này giúp tinh chỉnh hệ thống RAG cho phù hợp với yêu cầu kinh doanh của bạn.
Sản phẩm bạn sẽ tạo ra
Khi kết thúc lớp học lập trình này, bạn sẽ triển khai được một hệ thống RAG hoạt động, có thể giúp trả lời các câu hỏi của bạn bằng thông tin thực tế, có căn cứ và trích dẫn bằng các tài liệu tham khảo phù hợp.
Bạn cũng sẽ hiểu rõ hơn về cách sử dụng Vertex AI Search API để xây dựng cấu trúc RAG này trên Google Cloud. Ngoài ra, bạn cũng sẽ tìm hiểu cách triển khai ứng dụng kiến trúc RAG này (với giao diện người dùng và phần phụ trợ) trên Cloud Run. Đây là một nền tảng không máy chủ để triển khai các ứng dụng dưới dạng vùng chứa trên Google Cloud.

Cách hoạt động của ứng dụng
- Tải dữ liệu lên: Người dùng có thể tải kho dữ liệu của riêng mình lên, tức là tệp PDF làm dữ liệu đầu vào.
- Đặt câu hỏi trong thanh tìm kiếm: Người dùng có thể đặt câu hỏi trong thanh tìm kiếm dựa trên tập hợp dữ liệu đã tải lên.
- Truy xuất câu trả lời: Người dùng có thể truy xuất kết quả tìm kiếm/đề xuất và kiểm tra tính xác thực/căn cứ của câu trả lời được truy xuất dựa trên mức độ liên quan của cụm từ tìm kiếm.
2. Thiết lập môi trường
- Trong Google Cloud Console, trên trang chọn dự án, hãy chọn hoặc tạo một dự án trên Google Cloud.
- Đảm bảo bạn đã bật tính năng thanh toán cho dự án trên Google Cloud của mình. Tìm hiểu cách kiểm tra xem tính năng thanh toán có được bật trên một dự án hay không.
- Bạn sẽ sử dụng Cloud Shell, một môi trường dòng lệnh chạy trong Google Cloud. Để truy cập vào Cloud Shell, hãy nhấp vào Activate Cloud Shell (Kích hoạt Cloud Shell) ở đầu bảng điều khiển Cloud.

- Sau khi kết nối với Cloud Shell, bạn có thể kiểm tra để đảm bảo rằng bạn đã được xác thực và dự án được đặt thành mã dự án của bạn bằng lệnh sau:
gcloud auth list
- Chạy lệnh sau trong Cloud Shell để xác nhận rằng lệnh gcloud biết về dự án của bạn.
gcloud config list project
- Nếu bạn chưa đặt dự án, hãy dùng lệnh sau để đặt:
gcloud config set project <YOUR_PROJECT_ID>
- Đảm bảo rằng bạn đã bật các API sau:
- Cloud Run
- Vertex AI
- Cloud Storage
Ngoài việc sử dụng lệnh gcloud, bạn có thể truy cập vào bảng điều khiển bằng cách sử dụng đường liên kết này. Tham khảo tài liệu để biết các lệnh và cách sử dụng gcloud.
3. Bước 1: Tạo vùng lưu trữ GCP
- Chuyển đến bảng điều khiển rồi nhập Cloud Storage vào thanh tìm kiếm.
- Chọn Cloud Storage trong số các kết quả được đề xuất.

- Nhấp vào Create Bucket (Tạo vùng lưu trữ)

- Đặt một tên riêng biệt trên toàn cầu cho bộ chứa
- Nhấp vào Tiếp tục
- Trong phần Loại vị trí, hãy chọn Nhiều khu vực
- Trong trình đơn thả xuống, hãy nhớ chọn mục
us (multiple regions in United States)

- Nhấp vào Create Bucket (Tạo vùng lưu trữ)

- Sau khi tạo bộ chứa, hãy tải
alphabet-metadata.jsonlên từ kho lưu trữ
4. Bước 2: Tạo một Datastore Vertex AI
- Trên thanh tìm kiếm của trang bảng điều khiển, hãy nhập "Vertex AI Agent Builder"
- Chọn sản phẩm đầu tiên là "Agent Builder"

- Trên trang Agent Builder (Trình tạo tác nhân), hãy nhấp vào "Data Stores" (Kho dữ liệu) như trong thanh điều hướng bên trái

- Nhấp vào "Tạo kho dữ liệu"

- Chọn Cloud Storage làm kho dữ liệu
- Nhấp vào "Chọn" bên dưới biểu tượng Cloud Storage

- Trên thẻ bên dưới lựa chọn "Thư mục", hãy nhấp vào nút "Duyệt qua"
- Chọn nhóm mà bạn đã tạo ở Bước 1
- Trong các lựa chọn bên dưới, hãy nhớ chọn "Linked unstructured documents (JSONL with metadata)" (Tài liệu không có cấu trúc được liên kết (JSONL có siêu dữ liệu))
- Nhấp vào Tiếp tục

- Trên trang Cấu hình, hãy chọn "global" làm vị trí của kho dữ liệu
- Đặt một tên dễ nhận dạng cho kho dữ liệu của bạn
- Nhấp vào Tạo

Brownie:
- Ngay phía trên nút "Tạo", bạn có thể thấy lựa chọn xử lý tài liệu.
- Bạn có thể thử nghiệm với nhiều trình phân tích cú pháp như trình phân tích cú pháp kỹ thuật số, OCR hoặc bố cục
- Bạn cũng có thể bật tính năng phân đoạn nâng cao và cung cấp giới hạn kích thước phân đoạn tuỳ chỉnh của riêng mình

5. Bước 3: Tạo một tác nhân
- Sau khi bạn tạo kho dữ liệu, hãy nhấp vào ứng dụng trong thanh điều hướng ở bên trái rồi chọn "Ứng dụng"
- Nhấp vào nút "Tạo ứng dụng"
- Chọn loại ứng dụng là "Tìm kiếm" (bạn cũng có thể tạo các tác nhân, bot đàm thoại, đề xuất, v.v.)

- Đảm bảo bạn chọn "Chung" trong phần Nội dung. Bạn cũng có thể chọn Nội dung nghe nhìn hoặc Đề xuất dựa trên kho dữ liệu, loại dữ liệu và hệ thống mà bạn muốn xây dựng.
- Đảm bảo bạn đã bật cả phiên bản Enterprise Edition và các tính năng LLM nâng cao
- Cung cấp tên ứng dụng của bạn
- Cung cấp tên công ty của bạn

- Đảm bảo bạn chọn khu vực là "toàn cầu"
- Nhấp vào "Tiếp tục"

- Ở màn hình tiếp theo, hãy chọn kho dữ liệu mà bạn đã tạo ở Bước 2
- Nhấp vào "Tạo"

6. Bước 4: Docker hoá ứng dụng của bạn
- Mở cửa sổ lệnh trong bảng điều khiển Cloud
- Sao chép kho lưu trữ <sample_repository_link> bằng lệnh sau
git clone https://github.com/kkrishnan90/vertex-ai-search-agent-builder-demo
- Thay đổi thư mục và chuyển đến kho lưu trữ đã sao chép bằng lệnh sau
cd vertex-ai-search-agent-builder-demo
- Cấu trúc thư mục
- Phần phụ trợ – Phần này sẽ lưu trữ một bản triển khai API dựa trên Python, giúp tạo các điểm cuối RESTful để giao diện người dùng tương tác.
- Giao diện người dùng – Thư mục này sẽ chứa một ứng dụng dựa trên React và sẽ phân phát giao diện người dùng. Thao tác này cũng sẽ chứa các lệnh gọi cấp ứng dụng cần thiết đến phần phụ trợ thông qua các điểm cuối còn lại
- Dockerfile – Tệp này sẽ chứa tất cả các lệnh liên quan để tạo một vùng chứa Docker
- Trong thư mục gốc của thư mục kho lưu trữ, hãy chạy lệnh sau để tạo một hình ảnh docker (lưu ý: nhớ sử dụng cờ
- - platformkhi tạo các vùng chứa docker trong Macbook sử dụng chip Apple Silicon như M1, M2, v.v. Bạn không cần cờ này nếu đang tạo bằng máy Windows hoặc nếu cấu trúc CPU của bạn dựa trên Intel)
docker build --platform linux/amd64 -t your-image-name .
- Sau khi quá trình tạo vùng chứa Docker thành công, hãy chạy lệnh sau để gắn thẻ vùng chứa bằng các thẻ phù hợp nhằm đảm bảo bạn cung cấp một phiên bản của hình ảnh. Hãy nhớ rằng có thể có nhiều phiên bản của ứng dụng và do đó có nhiều phiên bản dưới dạng thẻ trong các vùng chứa Docker. Đảm bảo rằng bạn luôn sử dụng phiên bản ổn định mới nhất là một phương pháp hay nên dùng theo quan điểm về DevOps.
docker tag your-image-name REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG
- Sau khi gắn thẻ hình ảnh vùng chứa Docker thành công, giờ đây, chúng ta hãy đẩy hình ảnh đó lên Google Artifact Registry (GAR). GAR là một nền tảng hoàn toàn do Google quản lý để giúp bạn quản lý và kiểm soát phiên bản của các vùng chứa Docker. Chạy lệnh sau đây để đẩy vùng chứa được gắn thẻ ở trên vào GAR. Để biết thêm thông tin, hãy tham khảo đường liên kết sau [ https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling]
docker push REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG
7. Bước 5: Triển khai ứng dụng trên Cloud Run
- Thu nhỏ cửa sổ terminal. Trên thanh tìm kiếm của bảng điều khiển Cloud, hãy tìm Cloud Run
- Nhấp vào sản phẩm Cloud Run được đề xuất

- Nhấp vào "Tạo dịch vụ"
- Trong trang tiếp theo, hãy nhớ chọn "Triển khai một bản sửa đổi từ một hình ảnh vùng chứa hiện có"
- Ở bên dưới, hãy nhấp vào "Chọn"
- Lúc này, bạn sẽ thấy một thanh điều hướng ở bên phải.
- Đảm bảo bạn đã chọn Artifact Registry làm thẻ
- Đảm bảo bạn đã chọn đúng dự án
- Nhấp vào mũi tên để mở rộng danh sách xếp dọc trên đường liên kết của hình ảnh vùng chứa đã triển khai
- Chọn thẻ trong trình chứa và mở rộng (luôn chọn những thẻ mới nhất được triển khai – với thẻ mới nhất phù hợp, tức là v1, v2, v.v.)
- Nhấp vào hình ảnh vùng chứa xuất hiện bên dưới tên thẻ trong trình chứa

- Trong khu vực Định cấu hình
- Cung cấp tên dịch vụ cho ứng dụng Cloud Run của bạn (tên này sẽ là một phần của URL khi bạn triển khai ứng dụng trên Cloud Run)
- Chọn khu vực thích hợp (trong trường hợp này là us-central1 hoặc bất kỳ khu vực nào bạn chọn)
- Trong phần Xác thực
- Đảm bảo bạn đã chọn "Cho phép lệnh gọi chưa xác thực"
- Trong mục Phân bổ CPU và định giá
- Chọn "CPU chỉ được phân bổ trong quá trình xử lý yêu cầu"
- Sửa đổi tính năng Tự động mở rộng quy mô dịch vụ thành 1 (để phục vụ mục đích sản xuất, bạn nên chạy số lượng phiên bản tối thiểu để xử lý lưu lượng truy cập hằng ngày, thậm chí bạn có thể để số lượng này là 0, tức là 0)
- Đặt "Ingress Control" (Quyền kiểm soát lưu lượng truy cập) thành "All" (Tất cả) để cho phép lưu lượng truy cập từ Internet truy cập vào ứng dụng của bạn
- Nhấp vào "Tạo"
- Thao tác này sẽ triển khai một phiên bản Cloud Run và việc cung cấp phiên bản đó có thể mất vài phút

- Sau khi triển khai, bạn sẽ thấy URL có sẵn công khai mà bạn có thể truy cập vào ứng dụng web của mình

8. Cách thức hoạt động
- Sau khi vào trang chủ của ứng dụng, hãy nhấp vào nút "Tải tài liệu lên"
- Tải tệp PDF lên
- Sau khi quá trình tải lên hoàn tất
- Nhấp vào Thanh tìm kiếm ở đầu trang web
- Bắt đầu tìm kiếm các câu hỏi liên quan đến tài liệu bạn tải lên
- Sau khi bạn nhập câu hỏi và nhấp vào nút Tìm kiếm, hệ thống sẽ cho thấy tất cả câu trả lời liên quan trong tài liệu mà bạn vừa tải lên
- Bạn có thể thử nghiệm bằng cách xem xét mã phụ trợ và thêm các cấu hình khác như sau
- Thêm đoạn thông tin
- Thêm phân đoạn trích xuất
- Thêm câu trả lời
- Điều chỉnh k kết quả hàng đầu để giúp LLM tóm tắt câu trả lời (tương tự như Thông tin tổng quan do AI tạo trên Google Tìm kiếm)
- Là một tiện ích bổ sung, bạn cũng có thể thêm thẻ siêu dữ liệu trong khi tải tài liệu lên. Việc này sẽ giúp tạo các khía cạnh và danh mục có thể lọc
9. Dọn dẹp
Để tránh phát sinh phí cho tài khoản Google Cloud của bạn đối với các tài nguyên được dùng trong lớp học lập trình này, hãy làm theo các bước sau:
- Trong bảng điều khiển Google Cloud, hãy chuyển đến trang Quản lý tài nguyên.
- Trong danh sách dự án, hãy chọn dự án mà bạn muốn xoá, rồi nhấp vào Xoá.
- Trong hộp thoại, hãy nhập mã dự án rồi nhấp vào Tắt để xoá dự án.
- Ngoài ra, bạn có thể chuyển đến Cloud Run trên bảng điều khiển, chọn dịch vụ bạn vừa triển khai rồi xoá.
10. Xin chúc mừng
Xin chúc mừng! Bạn đã xây dựng thành công một hệ thống RAG nhanh chóng và sẵn sàng sử dụng bằng cách sử dụng các mô hình hiện đại do Google cung cấp và để cung cấp kết quả chất lượng của Google cho các cụm từ tìm kiếm của bạn. Lớp học lập trình này chỉ dành cho mục đích minh hoạ, bạn phải thiết lập thêm các biện pháp bảo mật và hướng dẫn để sử dụng trong các trường hợp sử dụng thực tế. Đường liên kết đến kho lưu trữ hoàn chỉnh nằm ở đây. Bằng cách tận dụng Google Cloud và chỉ với 5 bước, chúng ta có thể tạo một hệ thống RAG toàn diện có thể cung cấp cho bạn kết quả chất lượng của Google ngay lập tức trong vài phút. Khi AI tạo sinh và các mô hình ngôn ngữ lớn phát triển, việc xây dựng các hệ thống RAG như vậy cũng giúp chúng tôi tránh được những cạm bẫy của ảo giác và thông tin không được trích dẫn xuất hiện.
Mặc dù đây chỉ là điểm xuất phát, nhưng chúng ta có thể làm được nhiều điều kỳ diệu với các API RAG hoàn toàn có thể tuỳ chỉnh theo cách DIY (tự làm). Các API này mang đến cho bạn sự minh bạch, sức mạnh và hiệu quả cao hơn nữa để xử lý hiệu quả mọi phần của quy trình.