1. การแนบแนวราบ

1.1. แนวราบคืออะไร

ในเขตของ machine learning โดยเฉพาะการแก้ปัญหาในการประมวลผลภาษาธรรมชาติ (NLP) การแนบคือเทคนิคในการแปลงข้อมูลข้อความเป็นเวกเตอร์ตัวเลข ในภาษามนุษย์ ความหมายของคำและวลีถูกกำหนดโดยบริบทและการใช้งาน จุดมุ่งหมายของการแนบคือการจับสาระของหน่วยภาษาวิชาการเหล่านี้ เพื่อให้คอมพิวเตอร์เข้าใจและประมวลผลได้

ความคิดหลักของการแนบคือการแมปคำที่มีความหมายคล้ายกันไปยังจุดที่ใกล้เคียงในพื้นที่ทางคณิตศาสตร์ โดยแทนคำเป็นจุดในพื้นที่มิติสูง ๆ ตามวิธีนี้ คำที่มีความหมายใกล้เคียง (เช่น "กษัตริย์" และ "ราชินี") จะอยู่ใกล้กันในพื้นที่ การแนบโดยทั่วไปประกอบด้วยอาร์เรย์พลอตที่ลอยน้ำ ทำให้ส่วนที่แตกต่างกันมาก (เช่น "สุนัข" และ "สัตว์เลี้ยง") มีการแสดงออกที่คล้ายกัน

คำแนะนำ: เป็นผู้พัฒนาแอปพลิเคชัน คุณสามารถเข้าใจได้ง่ายว่าสำหรับประโยคข้อความสองประโยคที่มีความหมายคล้ายกัน ความคล้ายคลึงของเวกเตอร์แนบของข้อความนั้นเป็นอยู่ในระดับสูง

1.2. การประยุกต์ใช้ของการแนบแนวราบ

การแนบได้ถูกนำไปใช้ในสถานการณ์ต่าง ๆ นี่คือบางบทใช้หลัก:

  1. การค้นหา: การใช้คุณลักษณะการแนบเพื่อจัดอันดับผลการค้นหาตามความเกี่ยวข้องกับข้อความคิวรี่
  2. การจัดกลุ่ม: การแนบสามารถช่วยในการระบุและจัดหมวดหมู่ส่วนข้อความที่มีความคล้ายคลึงตามทางหมาย
  3. ระบบแนะนำ: การแนบสามารถช่วยค้นพบและแนะนำสิ่งของอื่นที่คล้ายกันกับสิ่งที่ทราบ
  4. การตรวจพบความผิดปกติ: การแนบสามารถถูกใช้ในการระบุจุดข้อมูลที่แตกต่างอย่างมีนัยสำคัญจากชุดข้อมูลหลัก
  5. การวัดความหลากหลาย: การแนบยังสามารถใช้วิเคราะห์การกระจายความคล้ายคลึงระหว่างข้อความที่แตกต่างกัน
  6. การจำแนก: การเปรียบเทียบข้อความกับชุดข้อมูลสัญลักษณ์ที่ทราบเพื่อแยกประเภทในหมวดหมู่ที่คล้ายมากที่สุด

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. การเลือกและการใช้โมเดล

การเลือกโมเดลการแนบที่เหมาะสมขึ้นอยู่กับความต้องการเฉพาะของในการประยุกต์ ตามนี้เป็นวิธีเลือกในสถานการณ์แอพพลิเคชันต่าง ๆ :

  1. ในสถานการณ์ที่เน้นประสิทธิภาพ : หากคุณต้องการจับความหมายรายละเอียดมากขึ้น เช่นระบบแนะนำรายละเอียดหยาดหยาดหรือการจำแนกข้อความที่มีประสิทธิภาพสูง โดยทั่วไปแนะนำให้ใช้ text-embedding-3-large แม้ว่าจะมีค่าใช้จ่ายสูงกว่าโมเดลที่มีขนาดเล็กกว่า แต่สามารถมอบการแสดงออกที่หลากหลายของคุณสมบัติข้อความได้อย่างดี

  2. ในแอพพลิเคชันที่ต้องการใช้ต้นทุน: สำหรับแอพพลิเคชันที่ต้องการประมวลข้อมูลปริมาณมาก แต่ไม่มีความต้องการประสิทธิภาพ โดยเฉพาะการสำรวจข้อมูลเบื้องต้นหรือฉบับทดลองอย่างรวดเร็ว text-embedding-3-small เป็นทางเลือกที่สมเหตุสมผลกว่า มันคงความสามารถสูงต่อการแสดงออก ในขณะที่ลดต้นทุนอย่างมีนัยสำคัญ

  3. สถานการณ์ที่ใช้หลายภาษา: โมเดลการแนบเหล่านี้มีประสิทธิภาพการใช้หลายภาษาสูง นำไปใช้ในสถานการณ์การเกาะภาษาหลาย ๆ สถานที่ทำให้เป็นทางเลือกที่เหมาะสมสำหรับแอพพลิเคชันที่เป็นกรณีการต่างประเทศหรือการประยุกต์ทั่วโลก

การเลือกโมเดลการแนบที่เหมาะสมจะขึ้นอยู่กับความต้องการเฉพาะ ความซับซ้อนของข้อมูล และจุดคงที่ที่ต้องการระหว่างประสิทธิภาพและต้นทุน

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.

กรุณาอ้างถึงสอนการใช้งานของฐานข้อมูลเวกเตอร์ต่อไปนี้: