Tích hợp trình nhúng văn bản.

Trình nhúng văn bản cho phép nhúng văn bản vào vectơ đối tượng nhiều chiều thể hiện ý nghĩa ngữ nghĩa, có thể được so sánh với đối tượng tương ứng vectơ của các văn bản khác để đánh giá sự tương đồng về mặt ngữ nghĩa.

Trái ngược với tìm kiếm văn bản, công cụ nhúng văn bản cho phép tính toán sự tương đồng giữa các văn bản một cách nhanh chóng thay vì tìm kiếm thông qua chỉ mục được xác định trước được tạo từ một tập sao lục.

Sử dụng API TextEmbedder của Thư viện tác vụ để triển khai trình nhúng văn bản tuỳ chỉnh vào ứng dụng dành cho thiết bị di động của bạn.

Các tính năng chính của TextNhúng API

  • Xử lý văn bản đầu vào, bao gồm cả trong biểu đồ hoặc ngoài biểu đồ Từ vựng hoặc Đoạn câu mã hoá kỹ thuật số trên văn bản đầu vào.

  • Hàm hiệu dụng tích hợp sẵn để tính toán tính đồng dạng cosin giữa vectơ đặc trưng.

Các mô hình trình nhúng văn bản được hỗ trợ

Các mô hình sau đây được đảm bảo tương thích với TextEmbedder API.

Chạy dự đoán trong C++

// Initialization.
TextEmbedderOptions options:
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<TextEmbedder> text_embedder = TextEmbedder::CreateFromOptions(options).value();

// Run inference with your two inputs, `input_text1` and `input_text2`.
const EmbeddingResult result_1 = text_embedder->Embed(input_text1);
const EmbeddingResult result_2 = text_embedder->Embed(input_text2);

// Compute cosine similarity.
double similarity = TextEmbedder::CosineSimilarity(
    result_1.embeddings[0].feature_vector()
    result_2.embeddings[0].feature_vector());

Xem mã nguồn để có thêm lựa chọn để định cấu hình TextEmbedder.

Chạy suy luận trong Python

Bước 1: Cài đặt gói TensorFlow Lite Support Pypi.

Bạn có thể cài đặt gói TensorFlow Lite Support Pypi bằng cách dùng như sau :

pip install tflite-support

Bước 2: Sử dụng mô hình

from tflite_support.task import text

# Initialization.
text_embedder = text.TextEmbedder.create_from_file(model_path)

# Run inference on two texts.
result_1 = text_embedder.embed(text_1)
result_2 = text_embedder.embed(text_2)

# Compute cosine similarity.
feature_vector_1 = result_1.embeddings[0].feature_vector
feature_vector_2 = result_2.embeddings[0].feature_vector
similarity = text_embedder.cosine_similarity(
    result_1.embeddings[0].feature_vector, result_2.embeddings[0].feature_vector)

Xem mã nguồn để có thêm lựa chọn để định cấu hình TextEmbedder.

Kết quả mẫu

Sự tương đồng về cosin giữa các vectơ đặc trưng được chuẩn hoá trả về điểm trong khoảng -1 và 1. Càng cao càng tốt, tức là độ đồng dạng cosin bằng 1 có nghĩa là hai vectơ đó .

Cosine similarity: 0.954312

Thử mẹo đơn giản Công cụ minh hoạ CLI cho TextNhúng thông qua mô hình và dữ liệu thử nghiệm của riêng bạn.

Yêu cầu về khả năng tương thích với mô hình

API TextEmbedder yêu cầu một mô hình TFLite với Siêu dữ liệu mô hình TFLite.

Có 3 loại mô hình chính được hỗ trợ:

  • Các mô hình dựa trên BERT (xem mã nguồn để biết thêm chi tiết):

    • Chính xác 3 tensor đầu vào (kTfLiteString)

      • tensor mã nhận dạng, với tên siêu dữ liệu là "ids",
      • Mask tensor, với tên siêu dữ liệu là "mask".
      • Tensor ID phân đoạn, với tên siêu dữ liệu là "segment_ids"
    • Chính xác một tensor đầu ra (kTfLiteUInt8/kTfLiteFloat32)

      • với các thành phần N tương ứng với kích thước N của trả về vectơ đối tượng cho lớp đầu ra này.
      • 2 hoặc 4 phương diện, tức là [1 x N] hoặc [1 x 1 x 1 x N].
    • Input_process_units cho bộ mã hoá văn bản/bản văn bản

  • Các mô hình dựa trên bộ mã hoá câu toàn cầu (xem mã nguồn để biết thêm chi tiết):

    • Chính xác 3 tensor đầu vào (kTfLiteString)

      • Tensor văn bản truy vấn, với tên siêu dữ liệu "inp_text".
      • Tensor ngữ cảnh phản hồi, với tên siêu dữ liệu "res_context".
      • Tensor văn bản phản hồi, với tên siêu dữ liệu "res_text".
    • Chính xác 2 tensor đầu ra (kTfLiteUInt8/kTfLiteFloat32)

      • Tensor mã hoá truy vấn, với tên siêu dữ liệu là "query_encryption".
      • Tensor mã hoá phản hồi, với tên siêu dữ liệu là "response_ encrypted".
      • Cả hai đều có thành phần N tương ứng với kích thước N của trả về vectơ đối tượng cho lớp đầu ra này.
      • Cả hai đều có 2 hoặc 4 phương diện, tức là [1 x N] hoặc [1 x 1 x 1 x N].
  • Mọi mô hình nhúng văn bản có:

    • Một tensor văn bản nhập (kTfLiteString)
    • Ít nhất một tensor nhúng đầu ra (kTfLiteUInt8/kTfLiteFloat32)

      • với các thành phần N tương ứng với kích thước N của trả về vectơ đối tượng cho lớp đầu ra này.
      • 2 hoặc 4 phương diện, tức là [1 x N] hoặc [1 x 1 x 1 x N].