1. การแนบแนวราบ
1.1. แนวราบคืออะไร
ในเขตของ machine learning โดยเฉพาะการแก้ปัญหาในการประมวลผลภาษาธรรมชาติ (NLP) การแนบคือเทคนิคในการแปลงข้อมูลข้อความเป็นเวกเตอร์ตัวเลข ในภาษามนุษย์ ความหมายของคำและวลีถูกกำหนดโดยบริบทและการใช้งาน จุดมุ่งหมายของการแนบคือการจับสาระของหน่วยภาษาวิชาการเหล่านี้ เพื่อให้คอมพิวเตอร์เข้าใจและประมวลผลได้
ความคิดหลักของการแนบคือการแมปคำที่มีความหมายคล้ายกันไปยังจุดที่ใกล้เคียงในพื้นที่ทางคณิตศาสตร์ โดยแทนคำเป็นจุดในพื้นที่มิติสูง ๆ ตามวิธีนี้ คำที่มีความหมายใกล้เคียง (เช่น "กษัตริย์" และ "ราชินี") จะอยู่ใกล้กันในพื้นที่ การแนบโดยทั่วไปประกอบด้วยอาร์เรย์พลอตที่ลอยน้ำ ทำให้ส่วนที่แตกต่างกันมาก (เช่น "สุนัข" และ "สัตว์เลี้ยง") มีการแสดงออกที่คล้ายกัน
คำแนะนำ: เป็นผู้พัฒนาแอปพลิเคชัน คุณสามารถเข้าใจได้ง่ายว่าสำหรับประโยคข้อความสองประโยคที่มีความหมายคล้ายกัน ความคล้ายคลึงของเวกเตอร์แนบของข้อความนั้นเป็นอยู่ในระดับสูง
1.2. การประยุกต์ใช้ของการแนบแนวราบ
การแนบได้ถูกนำไปใช้ในสถานการณ์ต่าง ๆ นี่คือบางบทใช้หลัก:
- การค้นหา: การใช้คุณลักษณะการแนบเพื่อจัดอันดับผลการค้นหาตามความเกี่ยวข้องกับข้อความคิวรี่
- การจัดกลุ่ม: การแนบสามารถช่วยในการระบุและจัดหมวดหมู่ส่วนข้อความที่มีความคล้ายคลึงตามทางหมาย
- ระบบแนะนำ: การแนบสามารถช่วยค้นพบและแนะนำสิ่งของอื่นที่คล้ายกันกับสิ่งที่ทราบ
- การตรวจพบความผิดปกติ: การแนบสามารถถูกใช้ในการระบุจุดข้อมูลที่แตกต่างอย่างมีนัยสำคัญจากชุดข้อมูลหลัก
- การวัดความหลากหลาย: การแนบยังสามารถใช้วิเคราะห์การกระจายความคล้ายคลึงระหว่างข้อความที่แตกต่างกัน
- การจำแนก: การเปรียบเทียบข้อความกับชุดข้อมูลสัญลักษณ์ที่ทราบเพื่อแยกประเภทในหมวดหมู่ที่คล้ายมากที่สุด
2. การแนบแนวราบของ OpenAI
2.1. ภาพรวมของโมเดลการแนบแนวราบ OpenAI
OpenAI ให้บริการโมเดลการแนบรุ่นที่สาม โดยรวมถึง text-embedding-3-small
และ text-embedding-3-large
โมเดลเหล่านี้ถูกสร้างขึ้นด้วยเทคโนโลยีการเรียนรู้ลึกที่เป็นเอกลักษณ์ของ OpenAI มีเป้าหมายที่จะให้ประสิทธิภาพในการใช้หลายภาษาพร้อมทั้งพยายามลดต้นทุนด้วย
โมเดลเหล่านี้มีลักษณะเฉพาะเมื่อประมวลผลการแนบ ตัวอย่างเช่น text-embedding-3-small
มอบเวกเตอร์แนบ 1536 มิติ ในขณะที่ text-embedding-3-large
มอบเวกเตอร์แนบ 3072 มิติเพื่อครอบคลุมคุณสมบัติข้อความที่ซับซ้อนมากขึ้น โดยการปรับพารามิเตอร์ มิติของการแนบสามารถควบคุมเพื่อตอบสนองความต้องการเฉพาะของสถานการณ์การประยุกต์
2.2. การเลือกและการใช้โมเดล
การเลือกโมเดลการแนบที่เหมาะสมขึ้นอยู่กับความต้องการเฉพาะของในการประยุกต์ ตามนี้เป็นวิธีเลือกในสถานการณ์แอพพลิเคชันต่าง ๆ :
-
ในสถานการณ์ที่เน้นประสิทธิภาพ : หากคุณต้องการจับความหมายรายละเอียดมากขึ้น เช่นระบบแนะนำรายละเอียดหยาดหยาดหรือการจำแนกข้อความที่มีประสิทธิภาพสูง โดยทั่วไปแนะนำให้ใช้
text-embedding-3-large
แม้ว่าจะมีค่าใช้จ่ายสูงกว่าโมเดลที่มีขนาดเล็กกว่า แต่สามารถมอบการแสดงออกที่หลากหลายของคุณสมบัติข้อความได้อย่างดี -
ในแอพพลิเคชันที่ต้องการใช้ต้นทุน: สำหรับแอพพลิเคชันที่ต้องการประมวลข้อมูลปริมาณมาก แต่ไม่มีความต้องการประสิทธิภาพ โดยเฉพาะการสำรวจข้อมูลเบื้องต้นหรือฉบับทดลองอย่างรวดเร็ว
text-embedding-3-small
เป็นทางเลือกที่สมเหตุสมผลกว่า มันคงความสามารถสูงต่อการแสดงออก ในขณะที่ลดต้นทุนอย่างมีนัยสำคัญ -
สถานการณ์ที่ใช้หลายภาษา: โมเดลการแนบเหล่านี้มีประสิทธิภาพการใช้หลายภาษาสูง นำไปใช้ในสถานการณ์การเกาะภาษาหลาย ๆ สถานที่ทำให้เป็นทางเลือกที่เหมาะสมสำหรับแอพพลิเคชันที่เป็นกรณีการต่างประเทศหรือการประยุกต์ทั่วโลก
การเลือกโมเดลการแนบที่เหมาะสมจะขึ้นอยู่กับความต้องการเฉพาะ ความซับซ้อนของข้อมูล และจุดคงที่ที่ต้องการระหว่างประสิทธิภาพและต้นทุน
3. วิธีการใช้การแนบแนวราบ
3.1 การใช้ curl
เรียกใช้ Embeddings API
curl
เป็นเครื่องมือคำสั่งที่ใช้กันอย่างแพร่หลายสำหรับการส่งคำขอ HTTP ตัวอย่างต่อไปนี้แสดงวิธีใช้ curl
เพื่อรับ Representation ของข้อความ:
curl https://api.openai.com/v1/embeddings \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"input": "Machine learning is a branch of artificial intelligence.",
"model": "text-embedding-3-small"
}'
ในคำสั่งด้านบน เราใช้ตัวแปร $OPENAI_API_KEY
เพื่อเก็บคีย์ API ของผู้ใช้ ซึ่งควรถูกแทนที่ด้วยคีย์ที่ถูกต้องเพื่อใช้งานจริง
หลังจากสั่งคำสั่งนี้ OpenAI Embeddings API จะส่งคำตอบกลับมาโดยมี representation ของข้อความ ต่อไปนี้คือตัวอย่างของผลลัพธ์การเรียกใช้ API :
{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": [ // นี่คือเวกเตอร์คุณลักษณะ
-0.006929283495992422,
-0.005336422007530928,
... // ตัวเลขที่เหลือถูกข้ามไปเพื่อแสดงผล
-4.547132266452536e-05,
-0.024047505110502243
]
}
],
"model": "text-embedding-3-small",
"usage": {
"prompt_tokens": 5,
"total_tokens": 5
}
}
3.2 ใช้ Python Client เรียกใช้ Embeddings API
นอกจากการใช้ curl
ในการเรียกใช้ API โดยตรงจาก Command line คุณยังสามารถใช้ Python client ได้ ซึ่งต้องการการติดตั้ง official openai
library ก่อน ต่อไปนี้คือตัวอย่างการใช้ Python เพื่อรับ embedding ของข้อความ:
import openai
openai.api_key = 'YOUR_OPENAI_API_KEY' # แทนที่ด้วย OpenAI API key ของคุณ
response = openai.Embedding.create(
input="Artificial intelligence is changing the world.",
model="text-embedding-3-small"
)
embedding_vector = response['data'][0]['embedding']
print(embedding_vector)
โดยการรันสคริปต์ Python นี้ คุณจะได้เวกเตอร์ embedding ที่คล้ายกับในการใช้ curl
เวกเตอร์นี้เป็น list ของจำนวนทศนิยม ที่แทนการแทรงของข้อความของเราในช่อง embedding
ผลลัพธ์การเรียกใช้คือดังนี้:
[-0.0032198824, 0.0022555287, ..., 0.0015886585, -0.0021505365]
3.2 การดำเนินการกับเวกเตอร์ที่ฝัง
OpenAI ให้บริการ model การคำนวณเวกเตอร์ข้อความ หากคุณต้องการใช้ Embeddings ในการปฏิบัติฟังก์ชันเช่นการค้นหาความคล้ายคลึงข้อความ คุณต้องเรียนรู้เกี่ยวกับฐานข้อมูลเวกเตอร์ เช่น Qdrant, Chroma, และ Milvus.
กรุณาอ้างถึงสอนการใช้งานของฐานข้อมูลเวกเตอร์ต่อไปนี้: