Tác vụ Trình nhúng văn bản của MediaPipe cho phép bạn tạo một biểu diễn bằng số của dữ liệu văn bản để nắm bắt ý nghĩa ngữ nghĩa của dữ liệu đó. Hướng dẫn này cho bạn biết cách sử dụng Text Embedder cho các ứng dụng web và JavaScript.
Để biết thêm thông tin về các chức năng, mô hình và lựa chọn cấu hình của tác vụ này, hãy xem phần Tổng quan.
Ví dụ về mã
Mã mẫu cho Text Embedder cung cấp một cách triển khai hoàn chỉnh của tác vụ này bằng JavaScript để bạn tham khảo. Đoạn mã này giúp bạn kiểm thử tác vụ này và bắt đầu xây dựng ứng dụng nhúng văn bản của riêng mình. Bạn có thể xem, chạy và chỉnh sửa ví dụ về Text Embedder chỉ bằng trình duyệt web.
Thiết lập
Phần này mô tả các bước chính để thiết lập môi trường phát triển và dự án mã của bạn, đặc biệt là để sử dụng Text Embedder. Để biết thông tin chung về cách thiết lập môi trường phát triển để sử dụng các tác vụ MediaPipe, bao gồm cả các yêu cầu về phiên bản nền tảng, hãy xem Hướng dẫn thiết lập cho Web.
Gói JavaScript
Bạn có thể dùng mã Text Embedder thông qua gói @mediapipe/tasks-text. Bạn có thể tìm và tải các thư viện này xuống từ các đường liên kết được cung cấp trong Hướng dẫn thiết lập nền tảng.
Bạn có thể cài đặt các gói cần thiết bằng mã sau để dàn dựng cục bộ bằng lệnh sau:
npm install @mediapipe/tasks-text
Nếu muốn triển khai cho một máy chủ, bạn có thể sử dụng dịch vụ mạng phân phối nội dung (CDN), chẳng hạn như jsDelivr, để thêm mã trực tiếp vào trang HTML của mình, như sau:
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/index.js"
crossorigin="anonymous"></script>
</head>
Mô hình
Tác vụ MediaPipe Text Embedder yêu cầu một mô hình đã được huấn luyện và tương thích với tác vụ này. Để biết thêm thông tin về các mô hình được huấn luyện hiện có cho Text Embedder, hãy xem mục Mô hình trong phần tổng quan về tác vụ.
Chọn và tải một mô hình xuống, sau đó lưu trữ mô hình đó trong thư mục dự án của bạn:
<dev-project-root>/app/shared/models
Tạo việc cần làm
Sử dụng một trong các hàm Text Embedder createFrom...() để chuẩn bị tác vụ chạy suy luận. Bạn có thể sử dụng hàm createFromModelPath() với đường dẫn tương đối hoặc tuyệt đối đến tệp mô hình đã huấn luyện. Ví dụ về mã bên dưới minh hoạ cách sử dụng hàm createFromOptions(). Để biết thêm thông tin về các lựa chọn cấu hình hiện có, hãy xem phần Lựa chọn cấu hình.
Đoạn mã sau đây minh hoạ cách tạo và định cấu hình tác vụ này:
async function createEmbedder() {
const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
textEmbedder = await TextEmbedder.createFromOptions(
textFiles,
{
baseOptions: {
modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_embedder/universal_sentence_encoder.tflite`
},
quantize: true
}
);
}
createEmbedder();
Các lựa chọn về cấu hình
Tác vụ này có các lựa chọn cấu hình sau đây cho các ứng dụng Web và JavaScript:
| Tên tuỳ chọn | Mô tả | Phạm vi giá trị | Giá trị mặc định |
|---|---|---|---|
l2Normalize |
Có chuẩn hoá vectơ đối tượng được trả về bằng chuẩn L2 hay không. Chỉ sử dụng lựa chọn này nếu mô hình chưa chứa L2_NORMALIZATION TFLite Op gốc. Trong hầu hết các trường hợp, đây là trường hợp đã xảy ra và do đó, việc chuẩn hoá L2 đạt được thông qua suy luận TFLite mà không cần lựa chọn này. | Boolean |
False |
quantize |
Liệu vectơ nhúng được trả về có nên được lượng tử hoá thành byte thông qua phương pháp lượng tử hoá vô hướng hay không. Các mục nhúng được giả định ngầm là chuẩn đơn vị và do đó, mọi phương diện đều được đảm bảo có giá trị trong khoảng [-1.0, 1.0]. Sử dụng lựa chọn l2Normalize nếu không phải như vậy. | Boolean |
False |
Chuẩn bị dữ liệu
Text Embedder hoạt động với dữ liệu văn bản (string). Tác vụ này xử lý quá trình tiền xử lý thông tin đầu vào, bao gồm cả việc tách từ và tiền xử lý Tensor. Tất cả quá trình tiền xử lý đều được xử lý trong hàm embed. Bạn không cần phải xử lý trước văn bản đầu vào.
const inputText = "The input text to be embedded.";
Chạy tác vụ
Text Embedder sử dụng hàm embed để kích hoạt suy luận. Đối với tính năng nhúng văn bản, điều này có nghĩa là trả về các vectơ nhúng cho văn bản đầu vào.
Đoạn mã sau đây minh hoạ cách thực thi quy trình xử lý bằng mô hình tác vụ.
// Wait to run the function until inner text is set
const embeddingResult = textEmbedder.embed(
inputText
);
Xử lý và hiển thị kết quả
Text Embedder xuất ra một TextEmbedderResult chứa danh sách các mục nhúng (dấu phẩy động hoặc được định lượng vô hướng) cho văn bản đầu vào.
Sau đây là ví dụ về dữ liệu đầu ra của tác vụ này:
TextEmbedderResult:
Embedding #0 (sole embedding head):
float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
head_index: 0
Bạn có thể so sánh mức độ tương đồng về ngữ nghĩa của hai vectơ nhúng bằng hàm TextEmbedder.cosineSimilarity. Hãy xem ví dụ về mã sau đây.
// Compute cosine similarity.
const similarity = TextEmbedder.cosineSimilarity(
embeddingResult.embeddings[0],
otherEmbeddingResult.embeddings[0]);
Mã ví dụ về Text Embedder minh hoạ cách hiển thị kết quả của trình nhúng văn bản được trả về từ tác vụ, hãy xem ví dụ để biết thông tin chi tiết.