Kỹ thuật Prompt Engineering với Meta Llama 3 cho các trường hợp sử dụng Text-to-SQL trên AWS

Giới thiệu

Sự phát triển nhanh chóng của trí tuệ nhân tạo (AI) tạo sinh đã thúc đẩy nhiều khách hàng AWS tìm kiếm cách tận dụng các mô hình nền tảng (FM) và công nghệ có sẵn công khai. Điều này bao gồm Meta Llama 3, mô hình ngôn ngữ lớn (LLM) có sẵn công khai của Meta. Sự hợp tác giữa Meta và Amazon thể hiện sự đổi mới tập thể trong lĩnh vực AI tạo sinh, và cả hai đang cùng nhau nỗ lực để mở rộng ranh giới của những gì có thể.

Bài viết này cung cấp cái nhìn tổng quan về các mô hình Meta Llama 3 có sẵn trên AWS tại thời điểm viết bài, đồng thời chia sẻ các phương pháp hay nhất về phát triển các trường hợp sử dụng Text-to-SQL bằng cách sử dụng mô hình Meta Llama 3. Tất cả mã được sử dụng trong bài viết này đều có sẵn công khai trong kho lưu trữ Github kèm theo.

Meta Llama 3: Nền tảng

Meta Llama 3, kế thừa Meta Llama 2, vẫn duy trì dung lượng 70 tỷ tham số nhưng đạt được hiệu suất vượt trội nhờ các kỹ thuật huấn luyện nâng cao thay vì chỉ đơn thuần tăng kích thước mô hình. Cách tiếp cận này nhấn mạnh chiến lược của Meta trong việc tối ưu hóa việc sử dụng dữ liệu và phương pháp luận để thúc đẩy khả năng AI. Bản phát hành bao gồm các mô hình mới dựa trên kiến trúc của Meta Llama 2, có sẵn ở các biến thể 8 tỷ và 70 tỷ tham số, mỗi biến thể cung cấp phiên bản cơ bản và phiên bản hướng dẫn. Sự phân khúc này cho phép Meta cung cấp các giải pháp linh hoạt phù hợp với các nhu cầu ứng dụng và phần cứng khác nhau.

Một nâng cấp đáng kể trong Meta Llama 3 là việc áp dụng bộ mã hóa với từ vựng 128.256 token, nâng cao hiệu quả mã hóa văn bản cho các tác vụ đa ngôn ngữ. Mô hình 8 tỷ tham số tích hợp grouped-query attention (GQA) để cải thiện việc xử lý các chuỗi dữ liệu dài hơn, nâng cao hiệu suất ứng dụng trong thế giới thực. Quá trình huấn luyện liên quan đến bộ dữ liệu hơn 15 nghìn tỷ token trên hai cụm GPU, nhiều hơn đáng kể so với Meta Llama 2. Meta Llama 3 Instruct, được tối ưu hóa cho các ứng dụng hội thoại, đã trải qua quá trình tinh chỉnh với hơn 10 triệu mẫu được chú thích thủ công bằng cách sử dụng các kỹ thuật tiên tiến như proximal policy optimization và supervised fine-tuning. Các mô hình Meta Llama 3 được cấp phép cho phép phân phối lại, tinh chỉnh và tạo tác phẩm phái sinh, giờ đây yêu cầu ghi công rõ ràng. Bản cập nhật cấp phép này phản ánh cam kết của Meta trong việc thúc đẩy sự đổi mới và hợp tác trong phát triển AI với tính minh bạch và trách nhiệm giải trình.

Phương pháp hay nhất về Prompt Engineering cho Meta Llama 3

Dưới đây là các phương pháp hay nhất về prompt engineering cho Meta Llama 3:

  • Sử dụng mô hình cơ bản: Mô hình cơ bản cung cấp:
    • Tính linh hoạt không cần prompt: Các mô hình cơ bản trong Meta Llama 3 vượt trội trong việc tiếp tục chuỗi và xử lý các tác vụ zero-shot hoặc few-shot mà không yêu cầu định dạng prompt cụ thể. Chúng đóng vai trò là công cụ linh hoạt phù hợp với nhiều ứng dụng và cung cấp nền tảng vững chắc cho việc tinh chỉnh thêm.
  • Phiên bản hướng dẫn: Phiên bản hướng dẫn cung cấp:
    • Hội thoại có cấu trúc: Phiên bản hướng dẫn của Meta Llama 3 sử dụng định dạng prompt có cấu trúc được thiết kế cho các hệ thống hội thoại. Định dạng này duy trì các tương tác mạch lạc bằng cách hướng dẫn phản hồi của hệ thống dựa trên đầu vào của người dùng và các prompt được xác định trước.
  • Phân tích cú pháp Text-to-SQL: Đối với các tác vụ như phân tích cú pháp Text-to-SQL, lưu ý những điều sau:
    • Thiết kế prompt hiệu quả: Các kỹ sư nên thiết kế các prompt phản ánh chính xác các truy vấn của người dùng để chuyển đổi nhu cầu SQL. Khả năng của Meta Llama 3 nâng cao độ chính xác và hiệu quả trong việc hiểu và tạo các truy vấn SQL từ đầu vào ngôn ngữ tự nhiên.
  • Phương pháp hay nhất về phát triển: Ghi nhớ những điều sau:
    • Tinh chỉnh lặp lại: Việc tinh chỉnh liên tục các cấu trúc prompt dựa trên dữ liệu thực tế cải thiện hiệu suất mô hình và tính nhất quán trên các ứng dụng khác nhau.
    • Xác thực và kiểm tra: Việc kiểm tra và xác thực kỹ lưỡng đảm bảo rằng các mô hình được thiết kế prompt hoạt động đáng tin cậy và chính xác trong các tình huống đa dạng, nâng cao hiệu quả ứng dụng tổng thể.

Bằng cách triển khai các phương pháp này, các kỹ sư có thể tối ưu hóa việc sử dụng các mô hình Meta Llama 3 cho các tác vụ khác nhau, từ suy luận chung đến các ứng dụng xử lý ngôn ngữ tự nhiên (NLP) chuyên biệt như phân tích cú pháp Text-to-SQL, sử dụng hiệu quả các khả năng của mô hình.

Tổng quan giải pháp

Nhu cầu sử dụng LLM để cải thiện truy vấn Text-to-SQL ngày càng trở nên quan trọng vì nó cho phép người dùng không chuyên về kỹ thuật truy cập và truy vấn cơ sở dữ liệu bằng ngôn ngữ tự nhiên. Điều này dân chủ hóa quyền truy cập vào AI tạo sinh và cải thiện hiệu quả trong việc viết các truy vấn phức tạp mà không cần phải học SQL hoặc hiểu các lược đồ cơ sở dữ liệu phức tạp. Ví dụ: nếu bạn là khách hàng tài chính và bạn có cơ sở dữ liệu MySQL về dữ liệu khách hàng trải dài trên nhiều bảng, bạn có thể sử dụng mô hình Meta Llama 3 để xây dựng truy vấn SQL từ ngôn ngữ tự nhiên. Các trường hợp sử dụng bổ sung bao gồm:

  • Cải thiện độ chính xác: LLM có thể tạo truy vấn SQL nắm bắt chính xác hơn ý định đằng sau các truy vấn ngôn ngữ tự nhiên, nhờ khả năng hiểu ngôn ngữ tiên tiến của chúng. Điều này làm giảm nhu cầu diễn đạt lại hoặc tinh chỉnh truy vấn của bạn.
  • Xử lý độ phức tạp: LLM có thể xử lý các truy vấn phức tạp liên quan đến nhiều bảng (điều mà chúng tôi trình bày trong bài viết này), các phép nối, bộ lọc và phép gộp, điều này sẽ là thách thức đối với các hệ thống Text-to-SQL dựa trên quy tắc hoặc truyền thống. Điều này mở rộng phạm vi truy vấn có thể được xử lý bằng ngôn ngữ tự nhiên.
  • Kết hợp ngữ cảnh: LLM có thể sử dụng thông tin ngữ cảnh như lược đồ cơ sở dữ liệu, mô tả bảng và mối quan hệ để tạo truy vấn SQL chính xác và phù hợp hơn. Điều này giúp thu hẹp khoảng cách giữa ngôn ngữ tự nhiên mơ hồ và cú pháp SQL chính xác.
  • Khả năng mở rộng: Sau khi được huấn luyện, LLM có thể khái quát hóa sang các cơ sở dữ liệu và lược đồ mới mà không cần huấn luyện lại hoặc viết quy tắc mở rộng, giúp chúng có khả năng mở rộng hơn so với các phương pháp truyền thống.

Đối với giải pháp, chúng tôi làm theo mô hình Retrieval Augmented Generation (RAG) để tạo SQL từ truy vấn ngôn ngữ tự nhiên bằng cách sử dụng mô hình Meta Llama 3 70B trên Amazon SageMaker JumpStart, một trung tâm cung cấp quyền truy cập vào các mô hình và giải pháp được đào tạo trước. SageMaker JumpStart cung cấp một cách liền mạch và dễ dàng để triển khai và thử nghiệm với các LLM tiên tiến nhất như Meta Llama 3, mà không cần thiết lập cơ sở hạ tầng phức tạp hoặc mã triển khai. Chỉ với một vài cú nhấp chuột, bạn có thể có các mô hình Meta Llama 3 hoạt động trong môi trường AWS an toàn dưới sự kiểm soát đám mây ảo riêng (VPC) của bạn, duy trì bảo mật dữ liệu. SageMaker JumpStart cung cấp quyền truy cập vào một loạt các kích thước mô hình Meta Llama 3 (8B và 70B tham số). Tính linh hoạt này cho phép bạn chọn kích thước mô hình phù hợp dựa trên các yêu cầu cụ thể của bạn. Bạn cũng có thể huấn luyện và tinh chỉnh gia tăng các mô hình này trước khi triển khai.

Giải pháp cũng bao gồm một mô hình nhúng được lưu trữ trên SageMaker JumpStart và các cơ sở dữ liệu vectơ có sẵn công khai như ChromaDB để lưu trữ các nhúng.

ChromaDB và các công cụ vectơ khác

Trong lĩnh vực ứng dụng Text-to-SQL, ChromaDB là một cơ sở dữ liệu vectơ nhúng mạnh mẽ, có sẵn công khai, được thiết kế để sắp xếp hợp lý việc lưu trữ, truy xuất và thao tác dữ liệu vectơ có chiều cao. Tích hợp liền mạch với quy trình làm việc của học máy (ML) và NLP, ChromaDB cung cấp giải pháp mạnh mẽ cho các ứng dụng như tìm kiếm ngữ nghĩa, hệ thống đề xuất và phân tích dựa trên sự tương đồng. ChromaDB cung cấp một số tính năng đáng chú ý:

  • Lưu trữ vectơ hiệu quả: ChromaDB sử dụng các kỹ thuật lập chỉ mục tiên tiến để lưu trữ và truy xuất hiệu quả dữ liệu vectơ có chiều cao, cho phép tìm kiếm sự tương đồng nhanh chóng và truy vấn láng giềng gần nhất.
  • Mô hình hóa dữ liệu linh hoạt: Bạn có thể xác định các bộ sưu tập tùy chỉnh và lược đồ siêu dữ liệu phù hợp với các trường hợp sử dụng cụ thể của bạn, cho phép mô hình hóa dữ liệu linh hoạt.
  • Tích hợp liền mạch: ChromaDB có thể được nhúng liền mạch vào các ứng dụng và quy trình làm việc hiện có, cung cấp giải pháp nhẹ và hiệu quả cho quản lý dữ liệu vectơ.

Tại sao nên chọn ChromaDB cho các trường hợp sử dụng Text-to-SQL?

  • Lưu trữ vectơ hiệu quả cho nhúng văn bản: Việc lưu trữ và truy xuất hiệu quả các nhúng vectơ có chiều cao của ChromaDB là rất quan trọng đối với các tác vụ Text-to-SQL. Nó cho phép tìm kiếm sự tương đồng nhanh chóng và truy vấn láng giềng gần nhất trên các nhúng văn bản, tạo điều kiện cho việc ánh xạ chính xác các truy vấn ngôn ngữ tự nhiên với các câu lệnh SQL.
  • Tích hợp liền mạch với LLM: ChromaDB có thể được tích hợp nhanh chóng với LLM, cho phép các kiến trúc RAG. Điều này cho phép LLM sử dụng ngữ cảnh có liên quan, chẳng hạn như chỉ cung cấp các lược đồ bảng có liên quan cần thiết để thực hiện truy vấn.
  • Tùy chỉnh và hỗ trợ cộng đồng: ChromaDB cung cấp tính linh hoạt và tùy chỉnh với một cộng đồng tích cực gồm các nhà phát triển và người dùng đóng góp vào sự phát triển của nó, cung cấp hỗ trợ và chia sẻ các phương pháp hay nhất. Điều này cung cấp một bối cảnh hợp tác và hỗ trợ cho các ứng dụng Text-to-SQL.
  • Hiệu quả về chi phí: ChromaDB loại bỏ nhu cầu về phí cấp phép đắt đỏ, khiến nó trở thành lựa chọn hiệu quả về chi phí cho các tổ chức thuộc mọi quy mô.

Bằng cách sử dụng các công cụ cơ sở dữ liệu vectơ như ChromaDB, bạn có được tính linh hoạt hơn cho các trường hợp sử dụng cụ thể của mình và có thể xây dựng các hệ thống Text-to-SQL mạnh mẽ và hiệu quả cho các ứng dụng AI tạo sinh.

Kiến trúc giải pháp

Luồng quy trình bao gồm các bước sau:

  1. Người dùng gửi truy vấn văn bản chỉ định dữ liệu họ muốn trả về từ cơ sở dữ liệu.
  2. Lược đồ cơ sở dữ liệu, cấu trúc bảng và siêu dữ liệu liên quan của chúng được xử lý thông qua mô hình nhúng được lưu trữ trên SageMaker JumpStart để tạo nhúng.
  3. Các nhúng này, cùng với thông tin ngữ cảnh bổ sung về mối quan hệ bảng, được lưu trữ trong ChromaDB để cho phép tìm kiếm ngữ nghĩa, cho phép hệ thống nhanh chóng truy xuất lược đồ có liên quan và ngữ cảnh bảng khi xử lý truy vấn của người dùng.
  4. Truy vấn được gửi đến ChromaDB để được chuyển đổi thành nhúng vectơ bằng cách sử dụng mô hình nhúng văn bản được lưu trữ trên SageMaker JumpStart. Các nhúng được tạo ra được sử dụng để thực hiện tìm kiếm ngữ nghĩa trên ChromaDB.
  5. Theo mô hình RAG, ChromaDB xuất ra các lược đồ bảng có liên quan và ngữ cảnh bảng liên quan đến truy vấn. Chỉ ngữ cảnh có liên quan được gửi đến mô hình Meta Llama 3 70B. Prompt được tăng cường được tạo bằng cách sử dụng thông tin này từ ChromaDB cũng như truy vấn của người dùng.
  6. Prompt được tăng cường được gửi đến mô hình Meta Llama 3 70B được lưu trữ trên SageMaker JumpStart để tạo truy vấn SQL.
  7. Sau khi truy vấn SQL được tạo, bạn có thể chạy truy vấn SQL trên Amazon Relational Database Service (Amazon RDS) for MySQL, một dịch vụ cơ sở dữ liệu đám mây được quản lý hoàn toàn cho phép bạn nhanh chóng vận hành và mở rộng quy mô các cơ sở dữ liệu quan hệ của mình như MySQL.
  8. Từ đó, đầu ra được gửi lại cho mô hình Meta Llama 3 70B được lưu trữ trên SageMaker JumpStart để cung cấp phản hồi cho người dùng.
  9. Phản hồi được gửi lại cho người dùng.

Tùy thuộc vào nơi dữ liệu của bạn tồn tại, bạn có thể triển khai mô hình này với các hệ thống quản lý cơ sở dữ liệu quan hệ khác như PostgreSQL hoặc các loại cơ sở dữ liệu thay thế, tùy thuộc vào cơ sở hạ tầng dữ liệu hiện có và các yêu cầu cụ thể của bạn.

Điều kiện tiên quyết

Hoàn thành các bước tiên quyết sau:

  1. Có tài khoản AWS.
  2. Cài đặt AWS Command Line Interface (AWS CLI) và thiết lập Amazon SDK for Python (Boto3).
  3. Yêu cầu quyền truy cập mô hình trên bảng điều khiển Amazon Bedrock để truy cập các mô hình Meta Llama 3.
  4. Có quyền truy cập để sử dụng sổ ghi chép Jupyter (cho dù cục bộ hay trên Amazon SageMaker Studio).
  5. Cài đặt các gói và phụ thuộc cho LangChain, Amazon Bedrock SDK (Boto3) và ChromaDB.

Triển khai môi trường Text-to-SQL vào tài khoản AWS của bạn

Để triển khai tài nguyên của bạn, hãy sử dụng mẫu AWS CloudFormation được cung cấp, đây là công cụ để triển khai cơ sở hạ tầng dưới dạng mã. Các Khu vực AWS được hỗ trợ là US East (Bắc Virginia) và US West (Oregon). Hoàn thành các bước sau để khởi chạy ngăn xếp:

  1. Trên bảng điều khiển AWS CloudFormation, tạo ngăn xếp mới.
  2. Đối với Nguồn mẫu, chọn Tải lên tệp mẫu, sau đó tải lên tệp yaml để triển khai môi trường Text-to-SQL.
  3. Chọn Tiếp theo.
  4. Đặt tên cho ngăn xếp là text2sql.
  5. Giữ nguyên các cài đặt còn lại làm mặc định và chọn Gửi.

Ngăn xếp mẫu sẽ mất 10 phút để triển khai. Khi hoàn tất, trạng thái ngăn xếp sẽ hiển thị là CREATE_COMPLETE.

  1. Khi ngăn xếp hoàn tất, điều hướng đến ngăn xếp Đầu ra.
  2. Chọn liên kết SagemakerNotebookURL để mở sổ ghi chép SageMaker trong một tab riêng.
  3. Trong sổ ghi chép SageMaker, điều hướng đến thư mục Meta-Llama-on-AWS/blob/text2sql-blog/RAG-recipes và mở llama3-chromadb-text2sql.ipynb.
  4. Nếu sổ ghi chép yêu cầu bạn đặt kernel, hãy chọn kernel condapytorchp310, sau đó chọn Đặt kernel.

Triển khai giải pháp

Bạn có thể sử dụng sổ ghi chép Jupyter sau, bao gồm tất cả các đoạn mã được cung cấp trong phần này, để xây dựng giải pháp. Trong giải pháp này, bạn có thể chọn dịch vụ nào (SageMaker Jumpstart hoặc Amazon Bedrock) để sử dụng làm dịch vụ mô hình lưu trữ bằng cách sử dụng askforservice() trong sổ ghi chép. Amazon Bedrock là một dịch vụ được quản lý hoàn toàn cung cấp lựa chọn các FM hiệu suất cao. Chúng tôi cung cấp cho bạn lựa chọn giữa các giải pháp để nhóm của bạn có thể đánh giá xem SageMaker JumpStart được ưu tiên hơn hay nhóm của bạn muốn giảm chi phí vận hành với API Amazon Bedrock thân thiện với người dùng. Bạn có thể chọn sử dụng SageMaker JumpStart để lưu trữ mô hình nhúng mà bạn chọn hoặc Amazon Bedrock để lưu trữ mô hình Amazon Titan Embeddings (amazon.titan-embed-text-v2:0).

Bây giờ sổ ghi chép đã sẵn sàng để sử dụng, hãy làm theo hướng dẫn trong sổ ghi chép. Với các bước này, bạn tạo trình kết nối RDS for MySQL, đưa bộ dữ liệu vào cơ sở dữ liệu RDS, đưa lược đồ bảng vào ChromaDB và tạo truy vấn Text-to-SQL để chạy prompt của bạn và phân tích dữ liệu nằm trong Amazon RDS.

  1. Tạo điểm cuối SageMaker với mô hình BGE Large En v1.5 Embedding từ Hugging Face: [Đoạn mã Python]
  2. Tạo bộ sưu tập trong ChromaDB cho framework RAG: [Đoạn mã Python]
  3. Xây dựng tài liệu với lược đồ bảng và các câu hỏi mẫu để nâng cao độ chính xác của bộ truy xuất: [Đoạn mã Python]
  4. Thêm tài liệu vào ChromaDB: [Đoạn mã Python]
  5. Xây dựng prompt (finalquestion) bằng cách kết hợp đầu vào của người dùng bằng ngôn ngữ tự nhiên (userquery), siêu dữ liệu có liên quan từ kho vectơ (vectorsearchmatch) và hướng dẫn (details): [Đoạn mã Python]
  6. Gửi câu hỏi đến ChromaDB và truy xuất SQL lược đồ bảng: [Đoạn mã Python]
  7. Gọi Meta Llama 3 trên SageMaker và yêu cầu nó tạo truy vấn SQL. Hàm getllmsql_analysis sẽ chạy và chuyển kết quả truy vấn SQL đến Meta Llama 3 để cung cấp phân tích toàn diện về dữ liệu: [Đoạn mã Python]

Mặc dù Meta Llama 3 không hỗ trợ gọi hàm nguyên bản, bạn có thể mô phỏng quy trình làm việc của tác nhân. Trong phương pháp này, truy vấn được tạo trước, sau đó chạy và kết quả được gửi lại cho Meta Llama 3 để giải thích.

Chạy truy vấn

Đối với truy vấn đầu tiên của chúng tôi, chúng tôi cung cấp đầu vào "Có bao nhiêu nhà sản xuất máy bay duy nhất được đại diện trong cơ sở dữ liệu?" Sau đây là lược đồ bảng được truy xuất từ ChromaDB: [Đoạn mã Python] Sau đây là truy vấn được tạo: [Đoạn mã SQL] Sau đây là phân tích dữ liệu được tạo từ truy vấn SQL trước đó: [Đoạn mã Python]

Đối với truy vấn thứ hai của chúng tôi, chúng tôi hỏi "Tìm ID máy bay và nhà sản xuất cho các máy bay đã bay đến New York." Sau đây là các lược đồ bảng được truy xuất từ ChromaDB: [Đoạn mã Python] Sau đây là truy vấn được tạo của chúng tôi: [Đoạn mã Python] Sau đây là phân tích dữ liệu được tạo từ truy vấn SQL trước đó: [Đoạn mã Python]

Dọn dẹp

Để tránh phát sinh phí sử dụng AWS tiếp tục, hãy xóa tất cả các tài nguyên bạn đã tạo như một phần của bài đăng này. Đảm bảo bạn xóa các điểm cuối SageMaker mà bạn đã tạo trong ứng dụng trước khi xóa ngăn xếp CloudFormation.

Kết luận

Trong bài đăng này, chúng tôi đã khám phá giải pháp sử dụng công cụ vectơ ChromaDB và Meta Llama 3, FM có sẵn công khai được lưu trữ trên SageMaker JumpStart, cho trường hợp sử dụng Text-to-SQL. Chúng tôi đã chia sẻ lịch sử ngắn gọn về Meta Llama 3, các phương pháp hay nhất để thiết kế prompt với các mô hình Meta Llama 3 và mô hình kiến trúc sử dụng few-shot prompting và RAG để trích xuất các lược đồ có liên quan được lưu trữ dưới dạng vectơ trong ChromaDB. Cuối cùng, chúng tôi đã cung cấp giải pháp với các mẫu mã giúp bạn linh hoạt lựa chọn SageMaker Jumpstart hoặc Amazon Bedrock để có trải nghiệm được quản lý nhiều hơn để lưu trữ Meta Llama 3 70B, Meta Llama 3 8B và các mô hình nhúng.

Việc sử dụng các FM và dịch vụ có sẵn công khai cùng với các dịch vụ của AWS giúp thúc đẩy tính linh hoạt hơn và cung cấp khả năng kiểm soát nhiều hơn đối với các công cụ đang được sử dụng. Chúng tôi khuyên bạn nên theo dõi kho lưu trữ SageMaker JumpStart GitHub để biết hướng dẫn bắt đầu và ví dụ. Mã giải pháp cũng có sẵn trong kho lưu trữ Github sau.

Chúng tôi mong nhận được phản hồi và ý tưởng của bạn về cách bạn áp dụng các phép tính này cho nhu cầu kinh doanh của mình.

Blog post image

0 comments Blogger 0 Facebook

Đăng nhận xét

 
Agent.ai.vn © 2024 - Nắm bắt tương lai
Top