1. Giới thiệu về Embeddings

1.1. Embeddings là gì

Embeddings, trong lĩnh vực học máy, đặc biệt là trong việc giải quyết các vấn đề xử lý ngôn ngữ tự nhiên (NLP), là một kỹ thuật chuyển đổi dữ liệu văn bản thành vectơ số. Trong ngôn ngữ của con người, ý nghĩa của các từ và cụm từ được xác định bởi ngữ cảnh và cách sử dụng của chúng. Mục tiêu của embeddings là bắt lấy ngữ nghĩa của những đơn vị ngôn ngữ này, giúp cho máy tính có thể hiểu và xử lý chúng.

Ý tưởng cốt lõi của embeddings là ánh xạ những từ có ý nghĩa tương tự gần nhau trong một không gian toán học, biểu diễn các từ dưới dạng các điểm trong một không gian nhiều chiều. Như vậy, những từ có ý nghĩa gần nhau (ví dụ: "vua" và "hoàng hậu") sẽ gần nhau trong không gian. Embeddings thường được tạo thành từ các mảng số dấu chấm động, cho phép ngay cả các đoạn văn văn bản rất khác nhau (như "chó" và "loài chó") cũng có các biểu diễn embeddings tương tự.

Mẹo: Là một nhà phát triển ứng dụng, bạn có thể đơn giản hiểu rằng đối với hai câu văn với ý nghĩa tương tự, sự tương đồng véc-tơ embedding của chúng là cao.

1.2. Ứng dụng của Embeddings

Embeddings được sử dụng rộng rãi trong các kịch bản khác nhau, dưới đây là một số trường hợp sử dụng chính:

  1. Tìm kiếm: Sử dụng các đặc trưng embedding để xếp hạng kết quả tìm kiếm dựa trên sự liên quan với văn bản truy vấn.
  2. Nhóm chú: Embeddings có thể giúp xác định và phân loại các đoạn văn văn bản có ý nghĩa tương tự.
  3. Hệ thống Gợi ý: Đề xuất các mục dựa trên sự tương tự có thể giúp tìm và đề xuất các mục khác tương tự với những mục đã biết.
  4. Phát hiện Khoảng lạc: Embeddings có thể được sử dụng để xác định các điểm dữ liệu khác biệt đáng kể so với tập dữ liệu chính.
  5. Đo lường đa dạng: Embeddings cũng có thể được sử dụng để phân tích phân phối tương tự giữa các văn bản khác nhau.
  6. Phân loại: So sánh văn bản với một tập con embedding nhãn đã biết để phân loại nó vào nhóm tương tự nhất.

2. Giới thiệu về Embeddings của OpenAI

2.1. Tổng quan về Mô hình Embeddings của OpenAI

OpenAI cung cấp các mô hình embedding thế hệ thứ ba, bao gồm text-embedding-3-smalltext-embedding-3-large. Các mô hình này được xây dựng trên công nghệ học sâu độc đáo của OpenAI, nhằm cung cấp hiệu suất đa ngôn ngữ cao trong khi cũng cố gắng giảm thiểu chi phí.

Những mô hình này có đặc điểm độc đáo trong việc xử lý embeddings. Ví dụ, text-embedding-3-small cung cấp vectơ embedding 1536 chiều, trong khi text-embedding-3-large cung cấp vectơ embedding 3072 chiều để bao quát các đặc trưng văn bản phức tạp hơn. Bằng cách điều chỉnh các tham số, số chiều của embeddings có thể được điều khiển để đáp ứng các nhu cầu cụ thể của các kịch bản ứng dụng.

2.2. Lựa chọn và Sử dụng Mô hình

Việc chọn mô hình embedding phù hợp phụ thuộc vào yêu cầu cụ thể của ứng dụng. Dưới đây là cách lựa chọn trong các kịch bản ứng dụng khác nhau:

  1. Trong các kịch bản tập trung vào hiệu suất: Nếu bạn cần bắt lấy thông tin ngữ nghĩa chi tiết hơn, chẳng hạn như trong các hệ thống gợi ý cấp phân loại văn bản cao hoặc phân loại văn bản chính xác cao, thì thường khuyến nghị sử dụng text-embedding-3-large. Mặc dù nó đắt đỏ hơn so với các mô hình nhỏ hơn, nhưng nó có thể cung cấp một biểu diễn phong phú hơn về đặc trưng văn bản.

  2. Trong các ứng dụng nhạy cảm với chi phí: Đối với các ứng dụng đòi hỏi xử lý lượng dữ liệu lớn nhưng không có yêu cầu đặc biệt về độ chính xác, chẳng hạn như khám phá dữ liệu ban đầu hoặc xây dựng nguyên mẫu nhanh chóng, text-embedding-3-small là sự lựa chọn kinh tế hơn. Nó duy trì hiệu suất tương đối cao trong khi giảm thiểu chi phí đáng kể.

  3. Môi trường đa ngôn ngữ: Những mô hình embedding này có hiệu suất đa ngôn ngữ cao, làm cho chúng đặc biệt hữu ích trong các kịch bản vượt ngôn ngữ hoặc đa ngôn ngữ, là sự lựa chọn lý tưởng cho các ứng dụng toàn cầu.

Việc chọn mô hình embedding phù hợp sẽ phụ thuộc vào yêu cầu cụ thể, độ phức tạp của dữ liệu và sự cân nhắc mong muốn giữa hiệu suất và chi phí.

3. Cách Sử dụng Embeddings

3.1 Sử dụng curl để Gọi API Embeddings

curl là một công cụ dòng lệnh thông dụng để gửi các yêu cầu HTTP. Ví dụ dưới đây cho thấy cách sử dụng curl để lấy biểu diễn nhúng của văn bản:

curl https://api.openai.com/v1/embeddings \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $OPENAI_API_KEY" \
    -d '{
        "input": "Học máy là một nhánh của trí tuệ nhân tạo.",
        "model": "text-embedding-3-small"
    }'

Trong lệnh trên, biến $OPENAI_API_KEY chứa khóa API OpenAI của người dùng, nó sẽ được thay thế bằng một khóa hợp lệ để sử dụng thực tế.

Sau khi thực hiện lệnh này, OpenAI Embeddings API sẽ trả về một phản hồi chứa biểu diễn nhúng của văn bản. Dưới đây là một ví dụ về kết quả gọi API:

{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "index": 0,
      "embedding": [  // Đây là vector đặc trưng
        -0.006929283495992422,
        -0.005336422007530928,
        ...  // Các số còn lại đã bị loại bỏ để hiển thị
        -4.547132266452536e-05,
        -0.024047505110502243
      ]
    }
  ],
  "model": "text-embedding-3-small",
  "usage": {
    "prompt_tokens": 5,
    "total_tokens": 5
  }
}

3.2 Sử Dụng Python Client để Gọi API Embeddings

Ngoài việc sử dụng curl để gọi trực tiếp API từ dòng lệnh, bạn cũng có thể sử dụng một client Python. Điều này đòi hỏi cài đặt thư viện chính thức openai trước. Dưới đây là một ví dụ về cách lấy nhúng văn bản bằng Python:

import openai

openai.api_key = 'KHÓA_API_OPENAI_CỦA_BẠN'  # Thay thế bằng khóa API OpenAI của bạn

response = openai.Embedding.create(
  input="Trí tuệ nhân tạo đang thay đổi thế giới.",
  model="text-embedding-3-small"
)

vector_nhúng = response['data'][0]['embedding']
print(vector_nhúng)

Bằng cách chạy đoạn mã Python này, bạn sẽ nhận được một vector nhúng tương tự như khi sử dụng curl. Vector này là một danh sách các số thực, đại diện cho biểu diễn số của văn bản đầu vào trong không gian nhúng.

Kết quả gọi là như sau:

[-0.0032198824, 0.0022555287, ..., 0.0015886585, -0.0021505365]

3.2 Vận Hành Vector Nhúng

OpenAI chỉ cung cấp mô hình tính toán vector hóa văn bản Embeddings. Nếu bạn muốn sử dụng Embeddings để thực hiện các chức năng như tìm kiếm đồng nghĩa văn bản, bạn cần tìm hiểu về cơ sở dữ liệu vector, như Qdrant, Chroma, và Milvus.

Vui lòng tham khảo các hướng dẫn cơ sở dữ liệu vector sau: