0Pricing
AI Agents · บทเรียน

การเลือกเมตริกระยะทาง (cosine, L2, dot)

เรียนรู้ว่าเมื่อใดควรเลือก cosine, L2 (แบบยุคลิด) หรือระยะทางผลคูณจุด และเหตุใดโมเดล Embedding ส่วนใหญ่จึงชอบ cosine

การเลือกเมตริกระยะทาง (cosine, L2, dot) เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

เมตริกทั่วไปสามรายการ

ฐานข้อมูลเวกเตอร์ให้คุณเลือกเมตริกระยะห่างได้ สามรายการที่พบเห็นบ่อยที่สุดมีดังนี้

  • ความคล้ายกันแบบ cosine — มุมระหว่างเวกเตอร์
  • dot product — การฉายเวกเตอร์หนึ่งลงบนอีกเวกเตอร์หนึ่ง
  • Euclidean (L2) — ระยะห่างเป็นเส้นตรง

Cosine

ช่วงค่า: -1 ถึง 1 ค่ายิ่งสูงยิ่งคล้ายกัน

import numpy as np
def cosine(a, b):
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

Dot Product

ช่วงค่า: -อนันต์ ถึง +อนันต์ ค่ายิ่งสูงยิ่งคล้ายกัน

def dot(a, b):
    return np.dot(a, b)

# Equivalent to cosine when both vectors are unit-normalized.

Euclidean (L2)

ช่วงค่า: 0 ถึง +อนันต์ ค่ายิ่งต่ำยิ่งคล้ายกัน

def l2(a, b):
    return np.linalg.norm(np.array(a) - np.array(b))

ควรใช้แบบใด

สำหรับเวกเตอร์ฝังข้อความ แนวทางทั่วไปมีดังนี้

  • OpenAI text-embedding-3 — cosine (เวกเตอร์ถูกทำให้อยู่ในรูปมาตรฐานล่วงหน้าแล้ว)
  • Cohere — cosine
  • Sentence Transformers / BGE — โดยปกติใช้ cosine ควรตรวจสอบการ์ดโมเดล

หากไม่แน่ใจ ให้ใช้ cosine

dot เท่ากับ cosine เมื่อทำให้เป็นนอร์มัลไลซ์

หาก |a| = |b| = 1 ดังนั้น cos(a,b) = a . b dot product เร็วกว่า (ไม่ต้องหาร) ระบบใช้งานจริงจึงมักใช้ dot กับเวกเตอร์ที่ทำให้อยู่ในรูปมาตรฐานล่วงหน้าแล้ว

กรณีที่ใช้ L2

โมเดลวิจัยบางรายการ (Sentence-BERT รุ่นเก่า และเวกเตอร์ฝังรูปภาพ) ได้รับการฝึกด้วยระยะห่าง L2 และทำงานได้ดีกว่าเมื่อใช้วิธีนี้ ควรตรวจสอบการ์ดโมเดล ALWAYS

เหตุใดจึงสำคัญต่อดัชนี

โครงสร้างดัชนี (HNSW, IVF, FAISS) สร้างขึ้นสำหรับเมตริก SPECIFIC การเปลี่ยนเมตริกหลังจากทำดัชนีแล้วมักหมายถึงการสร้างดัชนีใหม่ตั้งแต่ต้น

Setting Metric in Pinecone

from pinecone import ServerlessSpec
pc.create_index(
    name='docs',
    dimension=1536,
    metric='cosine',   # or 'dotproduct' or 'euclidean'
    spec=ServerlessSpec(cloud='aws', region='us-east-1')
)

Setting Metric in Qdrant

from qdrant_client.models import VectorParams, Distance
client.create_collection(
    collection_name='docs',
    vectors_config=VectorParams(size=1536, distance=Distance.COSINE)
)

เมตริกไม่สอดคล้องกันระหว่างระบบ

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

การแสดงความแตกต่างด้วยภาพ

สำหรับเวกเตอร์หน่วยสองตัว

  • cos = 1, L2 = 0 -> เหมือนกันทุกประการ
  • cos = 0.5, L2 ~ 1 -> มีความเกี่ยวข้องกัน
  • cos = 0, L2 ~ sqrt(2) -> ตั้งฉากกัน
  • cos = -1, L2 = 2 -> ตรงข้ามกัน

ทำให้อยู่ในรูปมาตรฐานล่วงหน้าเพียงครั้งเดียว

การทำให้อยู่ในรูปมาตรฐานขณะนำเข้าข้อมูลมีต้นทุนต่ำ (การหารเพียงครั้งเดียว) ช่วยให้เข้ากันได้กับ cosine / dot และหลีกเลี่ยงการทำให้อยู่ในรูปมาตรฐานทุกครั้งที่ query ในภายหลัง

vec = vec / np.linalg.norm(vec)

เมตริกเริ่มต้น

สำหรับเวกเตอร์ฝังข้อความของ OpenAI เมตริกระยะห่างเริ่มต้นคืออะไร

สรุปทบทวน

ใช้ cosine สำหรับข้อความ ทำให้อยู่ในรูปมาตรฐานล่วงหน้าเพียงครั้งเดียว แล้วใช้ dot product เพื่อความเร็ว กำหนดเมตริกตอนสร้างดัชนี เพราะการเปลี่ยนภายหลังหมายถึงการสร้างดัชนีใหม่

คำถามที่พบบ่อย

บทเรียน “การเลือกเมตริกระยะทาง (cosine, L2, dot)” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การเลือกเมตริกระยะทาง (cosine, L2, dot)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การเลือกเมตริกระยะทาง (cosine, L2, dot)”

เรียนรู้ว่าเมื่อใดควรเลือก cosine, L2 (แบบยุคลิด) หรือระยะทางผลคูณจุด และเหตุใดโมเดล Embedding ส่วนใหญ่จึงชอบ cosine คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การเลือกเมตริกระยะทาง (cosine, L2, dot)” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม

ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เปรียบเทียบ Pinecone, Weaviate และ Qdrant
  2. การกรองข้อมูลกำกับสำหรับการค้นหาแบบผสม
  3. การอัปเดตและลบเวกเตอร์
  4. การเลือกเมตริกระยะทาง (cosine, L2, dot)
← กลับไปที่ AI Agents