1. Trước khi bắt đầu
Dưới đâ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 của Google có thể trả lời câu hỏi của bạn từ dữ liệu bạn tải lên
- Cách tạo Vertex AI Datastore
- Cách tạo Tác nhân Vertex AI
- Cách tận dụng CloudRun để 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ụ hiệu quả sử dụng một 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ụm từ tìm kiếm của người dùng. Điều này có thể thực hiện được nhờ một kỹ thuật có tên là Tạo dữ liệu tăng cường truy xuất (RAG). Đây là một kỹ thuật chính trong AI hiện đại.
Trước tiên, RAG hoạt động bằng cách truy xuất các đoạn văn bản có liên quan từ một kho tài liệu. Việc này được thực hiện bằng nhiều phương pháp, chẳng hạn như so khớp từ khoá, mức độ tương đồng ngữ nghĩa và công nghệ học máy. Sau khi truy xuất các đoạn văn liên quan, chúng sẽ được dùng để tạo bản tóm tắt hoặc câu trả lời cho truy vấn của người dùng.
Lợi ích chính của RAG là cho phép các mô hình ngôn ngữ tránh được ảo giác. Hallucination (Ảo giác) là thuật ngữ dùng để mô tả việc tạo văn bản không được bằng chứng trong tập hợp tài liệu hỗ trợ. Đ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 giữa thông tin liên quan và không liên quan.
RAG giúp tránh ảo tưởng 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ừ tập sao lục tài liệu. Việc này giúp trang web trở thành một nguồn thông tin uy tín và đá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, trong đó có công cụ tìm kiếm, bot trò chuyện và hệ thống trả lời câu hỏi. AI ngày càng đóng vai trò quan trọng trong những năm tới.
Dưới đâ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 có liên quan đến cụm từ tìm kiếm của người dùng.
- Chatbot sử dụng RAG để tạo câu trả lời cho các câu hỏi của người dùng một cách đầy đủ thông tin và hấp dẫn.
- Các 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ể dùng để tạo văn bản trong nhiều lĩnh vực 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âu hỏi của bạn bằng kho ngữ liệu do bạn tải lên. Nền tảng RAG có sẵn có tên Vertex AI Search/Agent Builder giúp bạn tăng tốc việc xây dựng hệ thống RAG. Nhờ đó, bạn không phải tốn công 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. Mặc dù hệ thống RAG sẵn có 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 tự làm 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 một hệ thống RAG đang 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ơ sở và được 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 API Tìm kiếm Vertex AI để 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 (có giao diện người dùng và phần phụ trợ) trên CloudRun. Đây là một nền tảng không có máy chủ để triển khai ứ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 tập hợp dữ liệu của riêng họ lên (ví dụ: 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 trên 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/ứng cử viên và kiểm tra tính xác thực/cơ sở 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 bộ chọn dự án, hãy chọn hoặc tạo một dự án trên Google Cloud.
- Nhớ bật tính năng thanh toán cho dự án Google Cloud của bạn. 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 Kích hoạt Cloud Shell ở đầu bảng điều khiển Google Cloud.
- Sau khi kết nối với Cloud Shell, bạn cần kiểm tra để chắc chắn rằng mình đã được xác thực và dự án được đặt thành mã dự án bằng lệnh sau đây:
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 dự án của bạn chưa được thiết lập, hãy sử dụng lệnh sau để thiết lập:
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
Bạn có thể sử dụng đường liên kết này để truy cập vào bảng điều khiển thay vì sử dụng lệnh gcloud. 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 bộ chứa GCP
- Chuyển đến bảng điều khiển và nhập Cloud Storage trên thanh tìm kiếm.
- Chọn Cloud Storage trong kết quả được đề xuất.
- Nhấp vào Tạo bộ chứa
- Cung cấp tên riêng biệt trên toàn hệ thống cho bộ chứa
- Nhấp vào Tiếp tục
- Trong mục 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 chế độ
us (multiple regions in United States)
- Nhấp vào Tạo bộ chứa
- Sau khi tạo bộ chứa, hãy tải
alphabet-metadata.json
lên từ kho lưu trữ
4. Bước 2: Tạo Vertex AI Datastore
- Trên thanh tìm kiếm của trang bảng điều khiển, hãy nhập "Trình tạo tác nhân Vertex AI"
- Chọn sản phẩm đầu tiên, "Agent Builder"
- Trên trang Trình tạo tác nhân, hãy nhấp vào "Kho dữ liệu" như hiển thị 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 tuỳ chọn "Thư mục", hãy nhấp vào nút "Duyệt qua"
- Chọn bộ chứa mà bạn đã tạo ở Bước 1
- Trong các lựa chọn bên dưới, hãy nhớ chọn "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 "toàn cầu" làm vị trí của kho dữ liệu của bạn
- Cung cấp tên 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 tuỳ 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 trình phân tích cú pháp 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 nhân viên hỗ trợ
- Sau khi tạo xong kho dữ liệu của bạn, 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 nhân viên hỗ trợ, bot trò chuyện, nội dung đề xuất, v.v.)
- Hãy nhớ 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 cũng như 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ả tính năng Phiên bản doanh nghiệp và 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
- Hãy nhớ chọn khu vực là "toàn cầu"
- Nhấp vào "Tiếp tục"
- Trong 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: Lưu trữ ứng dụng trên Docker
- Mở cửa sổ dòng lệnh trong Google Cloud Console
- 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ữ được 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ợ – Tính năng này sẽ triển khai một API dựa trên python để giúp tạo các điểm cuối ổn định để giao diện người dùng của bạn tương tác.
- Giao diện người dùng – Phần này sẽ chứa một ứng dụng dựa trên phản ứng và sẽ phân phát giao diện người dùng. Tệp 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 vùng chứa Docker
- Trong thư mục gốc của kho lưu trữ, hãy chạy lệnh sau để tạo hình ảnh docker (lưu ý: nhớ sử dụng cờ
- - platform
khi tạo vùng chứa docker trong Macbook sử dụng chip Apple Silicon như M1, M2, v.v. Bạn không cần sử dụng 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 tạo thành công vùng chứa Docker, 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 phiên bản hình ảnh. Hãy nhớ rằng có thể có nhiều phiên bản ứng dụng và do đó có nhiều phiên bản dưới dạng thẻ trong vùng chứa Docker. Đảm bảo luôn sử dụng phiên bản ổn định mới nhất là một phương pháp hay được đề xuất từ góc độ devops.
docker tag your-image-name REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG
- Sau khi gắn thẻ thành công cho hình ảnh vùng chứa docker, bây giờ, chúng tôi sẽ đẩy hình ảnh đó vào Google Artifact Registry (GAR). GAR là một nền tảng hoàn toàn do Google quản lý để giúp quản lý và kiểm soát phiên bản của các vùng chứa docker của bạn. Chạy lệnh sau để đẩ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ổ dòng lệnh. Trên thanh tìm kiếm của bảng điều khiển Google Cloud, hãy tìm Cloud Run
- Nhấp vào sản phẩm Cloud Run được đề xuất
- Nhấp vào "Create Service" (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ừ hình ảnh vùng chứa hiện có"
- Bên dưới, hãy nhấp vào "Chọn"
- Giờ đây, bạn sẽ được nhắc bằng một thanh điều hướng ở bên phải.
- Nhớ kiểm tra xem Artifact Registry có được chọn làm thẻ hay không
- Hãy nhớ kiểm tra xem bạn đã chọn đúng dự án hay chưa
- Nhấp vào mũi tên để mở rộng phần xếp lại trên đường liên kết đến hình ảnh vùng chứa đã triển khai
- Chọn thẻ vùng chứa và mở rộng (luôn chọn thẻ mới nhất được triển khai - với thẻ mới nhất phù hợp, ví dụ: v1, v2, v.v.)
- Nhấp vào hình ảnh vùng chứa hiển thị bên dưới tên thẻ vùng 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 (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 phù 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 được xác thực"
- Trong phần Phân bổ CPU và 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 điều chỉnh quy mô dịch vụ thành 1 (đối với mục đích phát hành chính thức, bạn nên chạy các 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ể để giá trị này là 0 tức là Không có)
- Đặt "Ingress Control" (Kiểm soát 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 cấp phép cho cùng một phiên bản sẽ mất vài phút
- Sau khi triển khai, bạn sẽ thấy URL công khai mà bạn có thể truy cập vào ứng dụng web của mình
8. Cách hoạt động
- 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ụm từ tìm kiếm liên quan đến tài liệu bạn đã tải lên
- Sau khi bạn nhập cụm từ tìm kiếm và nhấp vào biểu tượng Tìm kiếm, công cụ này sẽ hiện tất cả câu trả lời có 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 mã phụ trợ và thêm các cấu hình khác như sau
- Thêm đoạn mã
- 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 (chẳng hạn như phần Tổng quan về AI 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 phương diện và danh mục có thể lọc
9. Dọn dẹp
Để tránh bị tính phí cho tài khoản Google Cloud của bạn đối với các tài nguyên dùng trong lớp học lập trình này, hãy làm theo các bước sau:
- Trong Google Cloud Console, 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ụ mà 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 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 cao cho các truy vấn tìm kiếm của mình trên Google. Lớp học lập trình này chỉ dành cho mục đích minh hoạ. Bạn cần thiết lập thêm các biện pháp bảo mật và giới hạn an toàn cho các trường hợp sử dụng chính thức. Đường liên kết đến kho lưu trữ đầy đủ tại đây. Bằng cách tận dụng Google Cloud và chỉ với 5 bước, chúng tôi có thể tạo một hệ thống RAG toàn diện để 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 những hệ thống RAG như vậy cũng giúp chúng tôi tránh được những sai lầm ảo tưởng và những thông tin không được trích dẫn xuất hiện.
Mặc dù đây chỉ là điểm khởi đầu, nhưng chúng tôi có thể tạo ra những điều kỳ diệu với các API DIY RAG có thể tuỳ chỉnh hoàn toàn. API này cung cấp cho bạn tính minh bạch, sức mạnh và hiệu quả hơn nữa để xử lý hiệu quả mọi phần trong quy trình.