เครื่องมือฝังข้อความช่วยให้ฝังข้อความลงในเวกเตอร์ฟีเจอร์ที่มีมิติสูงได้ ที่แสดงความหมายในเชิงอรรถศาสตร์ ซึ่งสามารถนำไปเปรียบเทียบกับฟีเจอร์ เวกเตอร์ของข้อความอื่นๆ เพื่อประเมินความคล้ายคลึงกันทางอรรถศาสตร์
ตรงข้ามกับ การค้นหาข้อความ ตัวฝังข้อความช่วยให้คำนวณความคล้ายคลึงกันระหว่างข้อความได้ทันที แทนการค้นหาผ่านดัชนีที่กำหนดไว้ล่วงหน้าที่สร้างจากคลังข้อมูล
ใช้ API ของไลบรารีงาน TextEmbedder
เพื่อทำให้เครื่องมือฝังข้อความที่กำหนดเองใช้งานได้ใน
แอปบนอุปกรณ์เคลื่อนที่ของคุณ
ฟีเจอร์สำคัญของ TextEmbedder API
การประมวลผลข้อความที่ป้อน ซึ่งรวมถึงรูปแบบในกราฟหรือนอกกราฟ ข้อความ หรือ ประโยคสั้นๆ การแปลงข้อมูลเป็นโทเค็นในข้อความที่ป้อน
ฟังก์ชันยูทิลิตีในตัวเพื่อคำนวณ ความคล้ายคลึงกันของโคไซน์ระหว่าง เวกเตอร์ของจุดสนใจ
โมเดลเครื่องมือฝังข้อความที่รองรับ
รุ่นต่อไปนี้ได้รับการรับประกันว่าใช้งานร่วมกับ TextEmbedder
ได้
API
โมเดล TFLite สำหรับ Universal Sentence Encoder จาก TensorFlow Hub
โมเดลที่กำหนดเองซึ่งเป็นไปตาม ข้อกำหนดความเข้ากันได้กับโมเดล
เรียกใช้การอนุมานใน 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());
โปรดดู
ซอร์สโค้ด
เพื่อดูตัวเลือกเพิ่มเติมในการกำหนดค่า TextEmbedder
เรียกใช้การอนุมานใน Python
ขั้นตอนที่ 1: ติดตั้งแพ็กเกจ Pypi Support ของ TensorFlow Lite
คุณสามารถติดตั้งแพ็กเกจ Pypi สนับสนุน TensorFlow Lite โดยใช้สิ่งต่อไปนี้ คำสั่ง:
pip install tflite-support
ขั้นตอนที่ 2: การใช้โมเดล
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)
โปรดดู
ซอร์สโค้ด
เพื่อดูตัวเลือกเพิ่มเติมในการกำหนดค่า TextEmbedder
ตัวอย่างผลการแข่ง
ความคล้ายคลึงของโคไซน์ระหว่างเวกเตอร์ของจุดสนใจที่ได้รับการปรับให้เป็นมาตรฐานจะแสดงคะแนนระหว่าง -1 และ 1. ยิ่งสูงยิ่งดี กล่าวคือ ความคล้ายคลึงกันของโคไซน์ของ 1 หมายความว่าเวกเตอร์ 2 เวกเตอร์ เหมือนกัน
Cosine similarity: 0.954312
ลองใช้ เครื่องมือสาธิต CLI สำหรับ TextEmbedder กับโมเดลและข้อมูลทดสอบของคุณเอง
ข้อกำหนดความเข้ากันได้กับรุ่น
TextEmbedder
API คาดว่าจะมีโมเดล TFLite ที่มีการบังคับ
ข้อมูลเมตาของโมเดล TFLite
รูปแบบที่รองรับมี 3 ประเภทหลักๆ ดังนี้
โมเดลที่ใช้ BERT (โปรดดู ซอร์สโค้ด เพื่อดูรายละเอียดเพิ่มเติม)
Tensor อินพุต 3 ตัวเท่านั้น (kTfLiteString)
- Tensor รหัสที่มีชื่อข้อมูลเมตา "id"
- Tensor มาสก์ ที่มีชื่อข้อมูลเมตา "mask"
- Tensor รหัสกลุ่มที่มีชื่อข้อมูลเมตา "segment_ids"
Tensor เอาต์พุต 1 รายการเท่านั้น (kTfLiteUInt8/kTfLiteFloat32)
- ที่มีคอมโพเนนต์
N
ตามมิติข้อมูลN
ของ เวกเตอร์ฟีเจอร์ที่แสดงผลสำหรับเลเยอร์เอาต์พุตนี้ - มิติข้อมูล 2 หรือ 4 รายการ นั่นคือ
[1 x N]
หรือ[1 x 1 x 1 x N]
- ที่มีคอมโพเนนต์
info_process_units สำหรับโทเค็นคำ/คำโปรยประโยค
โมเดลที่ใช้โปรแกรมเปลี่ยนไฟล์สากล (โปรดดู ซอร์สโค้ด เพื่อดูรายละเอียดเพิ่มเติม)
Tensor อินพุต 3 ตัวเท่านั้น (kTfLiteString)
- tensor ข้อความค้นหาที่มีชื่อข้อมูลเมตา "inp_text"
- Tensor บริบทการตอบกลับที่มีชื่อข้อมูลเมตา "res_context"
- Tensor ข้อความตอบกลับที่มีชื่อข้อมูลเมตา "res_text"
Tensor เอาต์พุต 2 รายการเท่านั้น (kTfLiteUInt8/kTfLiteFloat32)
- tensor การเข้ารหัสการค้นหาที่มีชื่อข้อมูลเมตา "query_encoding"
- tensor การเข้ารหัสการตอบกลับที่มีชื่อข้อมูลเมตา "response_encoding"
- ทั้ง 2 รายการที่มีคอมโพเนนต์
N
สอดคล้องกับมิติข้อมูลN
ของมิติข้อมูล เวกเตอร์ฟีเจอร์ที่แสดงผลสำหรับเลเยอร์เอาต์พุตนี้ - ทั้ง 2 แบบที่มีมิติข้อมูล 2 หรือ 4 รายการ นั่นคือ
[1 x N]
หรือ[1 x 1 x 1 x N]
โมเดลเครื่องมือฝังข้อความใดๆ ที่มี:
- Tensor ข้อความอินพุต (kTfLiteString)
tensor ที่ฝังเอาต์พุตอย่างน้อย 1 รายการ (kTfLiteUInt8/kTfLiteFloat32)
- ที่มีคอมโพเนนต์
N
ตามมิติข้อมูลN
ของ เวกเตอร์ฟีเจอร์ที่แสดงผลสำหรับเลเยอร์เอาต์พุตนี้ - มิติข้อมูล 2 หรือ 4 รายการ นั่นคือ
[1 x N]
หรือ[1 x 1 x 1 x N]
- ที่มีคอมโพเนนต์