Xây dựng Hệ thống tìm kiếm chất lượng cao của Google cùng Vertex AI

1. Trước khi bắt đầu

Dưới đây là một vài đ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 (mô hình ngôn ngữ lớn)
  • Hiểu biết cơ bản về hệ thống RAG

Kiến thức bạn sẽ học được

  • Cách xây dựng một công cụ tìm kiếm có 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 Nhân viên hỗ trợ cho Vertex AI
  • Cách tận dụng CloudRun để triển khai ứng dụng

Bạn cần

  • Tài khoản Google Cloud
  • Một dự án trên Google Cloud
  • 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 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ể được thực hiện bằng kỹ thuật có tên là Truy xuất dữ liệu tăng cường (RAG). Đây là một kỹ thuật quan trọng trong AI hiện đại.

RAG hoạt động bằng cách trước tiên truy xuất các đoạn văn có liên quan từ kho nội dung tài liệu. Quá trình 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á, tương đồng về mặt ngữ nghĩa và 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 tình trạng ảo tưởng. Ảo giác là một thuật ngữ dùng để mô tả việc tạo văn bản mà các bằng chứng trong tập sao tài liệu không chứng minh được. Đ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 có 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, bao gồm 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.
  • Bot trò chuyện sử dụng RAG để tạo câu trả lời cho các câu hỏi của người dùng, giàu thông tin và hấp dẫn.
  • Hệ thống giải đáp câu hỏi sử dụng RAG để tạo câu trả lời chính xác và đầy đủ cho các 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 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à cung cấp nhiề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 tập sao lục được cung cấp 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. Ngoài hệ thống RAG sẵn có, bạn có thể bắt đầu nhanh chóng, còn Google Cloud cũng cung cấp các API riêng biệt cho mọi quy trình để xây dựng hệ thống RAG DIY của riêng bạn, giúp tinh chỉnh hệ thống RAG sao 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 đang hoạt động có thể giúp trả lời câu hỏi của bạn dựa trên thông tin thực tế, có căn cứ và trích dẫn bằng các nguồn 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 kiến 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ùng 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 máy chủ để triển khai các ứng dụng dưới dạng vùng chứa trên Google Cloud.

2d055ded874603a6.pngS

Cách hoạt động của ứng dụng

  • Tải dữ liệu của bạn lên: Người dùng có thể tải tập hợp dữ liệu của riêng họ lên, chẳng hạn như tệp PDF để nhập dữ liệu.
  • Đặt câu hỏi trên 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 được 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 thực tế/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

  1. 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.
  2. 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.
  3. Bạn 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 dịch vụ này, hãy nhấp vào Kích hoạt Cloud Shell ở đầu bảng điều khiển Google Cloud.

1829c3759227c19b.png.

  1. 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
  1. 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
  1. 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 dự án:
gcloud config set project <YOUR_PROJECT_ID>
  1. Đảm bảo rằng các API sau đã được bật:
  • Cloud Run
  • Vertex AI
  • Cloud Storage

Lựa chọn thay thế cho việc sử dụng lệnh gcloud là thông qua bảng điều khiển bằng đường liên kết này. Hã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 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ả đề xuất. 21d2bc910e71f7ec.png.
  • Nhấp vào Tạo bộ chứa

adf5c0382f6c3540.png

  • 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 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)

731aead7d8497725.pngS

  • Nhấp vào Tạo bộ chứa

f7ac409ed9c4af21.png

4. Bước 2: Tạo một Vertex AI Datastore

  • 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, "Agent Builder"

c4a67b92bb7900e3.png

  • Trên trang Agent Builder, hãy nhấp vào "Data Stores" (Cửa hàng dữ liệu) như trong thanh điều hướng bên trái

f86f67d344d398fb.png

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

e64e771f33543f46.png

  • 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

3a8d22888e7eedc2.png.

  • 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 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

13876b5d12dbe1fb.png.

  • 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

618b7a456fbffad4.pngS

Brownie:

  • Ngay phía trên nút "Tạo", bạn có thể thấy chế độ xử lý tài liệu.
  • Bạn có thể dùng các trình phân tích cú pháp như kỹ thuật số, công nghệ nhận dạng ký tự quang học (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

38471c1d3411610d.png.

5. Bước 3: Tạo nhân viên hỗ trợ

  • Sau khi tạo 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àm "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.)

ae5294e33f63567c.png

  • 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.
  • Nhớ BẬT cả tính năng Phiên bản dành cho doanh nghiệp và mô hình ngôn ngữ lớn (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

f8a41c9751f7a8d3.png

  • Đảm bảo chọn khu vực là "toàn cầu"
  • Nhấp vào "Tiếp tục" ed17b18e094ba59a.png
  • 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"

bc77006e0025ae9e.png

6. Bước 4: Lưu trữ ứng dụng trên Docker

  • Mở cửa sổ dòng lệnh trong bảng điều khiển Google 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ợ – 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 – Đây là nơi lưu giữ 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 chương trình 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 có liên quan để tạo vùng chứa docker
  • Trong gốc của thư mục kho lưu trữ, hãy chạy lệnh sau để giúp xây dựng hình ảnh docker (lưu ý: đảm bảo sử dụng cờ - - platform khi xây dựng vùng chứa docker trong Macbook sử dụng chip Apple Silicon như M1, M2, v.v. Cờ này không cần thiết nếu bạn đang xây dựng bằng máy Windows hoặc nếu kiến 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 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 phiên bản hình ảnh của mình. Hãy nhớ rằng có thể có nhiều phiên bản của ứng dụng, do đó sẽ có nhiều phiên bản dưới dạng thẻ trong vùng chứa Docker. Từ góc độ nhà phát triển, bạn nên đảm bảo luôn sử dụng phiên bản ổn định mới nhất.

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 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 sẽ đẩy vùng chứa được gắn thẻ ở trên vào GAR. Để biết thêm thông tin, vui lòng 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ỏ thiết bị đầu cuối. 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

592103eb61c16738.pngS

  • 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
  • Nhớ kiểm tra xem dự án có được chọn chính xác hay không
  • Nhấp vào mũi tên để mở rộng đàn phong cầm trên đường liên kết hình ảnh vùng chứa đã triển khai của bạn
  • 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 được hiển thị bên dưới tên thẻ vùng chứa

aac35d55d7dd874e.png

  • Trong phần Đị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 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à Định giá
  • Chọn "CPU chỉ được phân bổ trong quá trình xử lý yêu cầu"
  • Sửa đổi dịch vụ Tự động chuyển tỷ lệ thành 1 (đối với mục đích sản xuất, bạn nên chạy các thực thể tối thiểu để xử lý lưu lượng truy cập hàng ngày, thậm chí bạn có thể để 0 tức là 0)
  • Đặt chế độ "Kiểm soát lưu lượng vào" thành "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 cùng một phiên bản đó sẽ mất vài phút

b8b147265b8d457b.png

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

1dfdb007c52581a1.pngs

8. Cách hoạt động của tính năng này

  • Khi đã ở 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 những 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ể khám phá 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 (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. Điều này sẽ giúp tạo các thuộc tính và danh mục có thể lọc

9. Dọn dẹp

Để tránh bị tính phí vào tài khoản Google Cloud cho những tài nguyên sử dụng trong lớp học lập trình này, hãy làm theo các bước sau:

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến trang Quản lý tài nguyên.
  2. Trong danh sách dự án, hãy chọn dự án mà bạn muốn xoá, sau đó nhấp vào Delete (Xoá).
  3. Trong hộp thoại, hãy nhập mã dự án rồi nhấp vào Tắt để xoá dự án.
  4. 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, 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 bạn trên Google. 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 vệ và bảo vệ cho các trường hợp sử dụng phát hành công khai. Đường liên kết đến kho lưu trữ đầy đủ có ở đâ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 ra một hệ thống RAG toàn diện, có thể cung cấp cho bạn các kết quả chất lượng cao của Google ngay từ đầu sau 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.