Embeddings จุดเริ่มต้นที่ดีสำหรับนักพัฒนาแอปที่สนใจ AI
(bawolf.substack.com)คู่มือการใช้งาน Embeddings สำหรับนักพัฒนาแอป
- เวกเตอร์ Embeddings มีประสิทธิภาพในการวัดความคล้ายคลึงกันของข้อมูลนำเข้าหลากหลายประเภท จึงเหมาะกับฟีเจอร์ค้นหาและแนะนำ และยังทำงานได้ดีในภาษาอื่นอย่างภาษาฝรั่งเศสหรือภาษาญี่ปุ่นด้วย
- Pgvector เป็นส่วนขยายของ Postgres สำหรับจัดเก็บและคิวรี Embeddings ทำให้สามารถผสานตรรกะ SQL กับการประมวลผล Embeddings ได้อย่างทรงพลังโดยไม่ต้องเพิ่มบริการใหม่
- ต่างจาก LLM การใช้งาน Embeddings ให้ความรู้สึกคล้ายการเขียนโค้ดเชิงกำหนดผลลัพธ์แบบทั่วไป
การพัฒนาโปรเจกต์ค้นหาและแนะนำไอคอน
- หลังตั้งค่า Pgvector แล้ว ได้วางกลยุทธ์ในการเข้ารหัสข้อมูลไอคอนเป็นเวกเตอร์ Embeddings
- ใช้โมเดล
text-embedding-3-smallของ OpenAI - วัดความคล้ายคลึงระหว่างคำค้นกับ Embeddings ของไอคอนแต่ละตัวด้วย cosine similarity
- ผสานตรรกะทางธุรกิจ เช่น การกรองชุดไอคอน เข้ากับการค้นหาแบบ Embeddings
- ยกตัวอย่างอัลกอริทึมจัดอันดับที่ใช้ข้อมูลการคลิกไอคอนสำหรับคำค้นนั้น ๆ
- ใช้การเปรียบเทียบ Embeddings เพื่อแนะนำไอคอนที่คล้ายกับไอคอนที่เลือก
สรุปแนวทางการนำไปใช้
- เลือกใช้ pgvector/Postgres เป็น vector DB โดยก็มีตัวเลือกอื่นอย่าง MongoDB เช่นกัน
- พัฒนาด้วย Typescript และใช้ drizzle-orm โดยมีไลบรารีสำหรับภาษาและเฟรมเวิร์กอื่น ๆ ให้เลือกมากมาย
- แอปโฮสต์อยู่บน Neon และยังสามารถใช้บริการโฮสต์ฐานข้อมูลแบบ managed อย่าง fly.io หรือ Supabase ได้
- ใช้โมเดล Embeddings
text-embedding-3-smallของ OpenAI และสามารถเลือกโมเดลอื่นได้จากลีดเดอร์บอร์ดของ Huggingface - นำคุณสมบัติของไอคอนที่เกี่ยวข้องกับการค้นหาสูงมาแปลงเป็น Embeddings ในรูปแบบคู่ key-value
- ใช้ cosine similarity เป็นฟังก์ชันระยะทาง โดย Pgvector ยังรองรับ l2 distance และ inner product ด้วย
- จำกัดผลการค้นหาไว้ที่ 50 อันดับแรก และหากใช้ช่วงระยะทาง แนะนำให้กำหนดให้กว้างแล้วใช้ร่วมกับ limit
ความเห็นของ GN⁺
- สำหรับโปรเจกต์ส่วนใหญ่ แนวทางเพิ่มความสามารถด้านเวกเตอร์ให้ฐานข้อมูลเดิมด้วยเครื่องมืออย่าง pgvector น่าจะเพียงพอ และการใช้ vector DB แยกต่างหากคงจำเป็นเฉพาะในบริการขนาดใหญ่
- จุดเด่นสำคัญคือสามารถผสานตรรกะทางธุรกิจเข้ากับการค้นหาแบบ Embeddings ได้อย่างเป็นธรรมชาติ และยังใช้พลังของ SQL ได้เต็มที่
- ไอเดียการสะท้อนข้อมูลฟีดแบ็กจากผู้ใช้เข้าไปในอัลกอริทึมจัดอันดับนั้นน่าสนใจ และน่าจะช่วยปรับปรุงความแม่นยำของการค้นหาได้อย่างต่อเนื่อง
- เมื่อเทียบกับ LLM บริการที่อิง Embeddings มีพฤติกรรมที่ชัดเจนกว่าและดีบักได้ง่ายกว่า จึงน่าจะนำไปใช้กับบริการจริงได้สะดวกกว่ามาก
- มีโมเดล Embeddings แบบโอเพนซอร์สหลากหลายที่เปิดเผยอยู่แล้ว ทำให้แม้พัฒนาโมเดลเองได้ยาก ก็ยังนำ Embeddings คุณภาพสูงมาใช้งานได้อย่างไม่ยาก
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
สรุปความคิดเห็นจาก Hacker News
ความสะดวกของการทำ document embedding และ similarity search ด้วยโมเดล RAG
sentence-transformersและfaissก็สามารถทำ document embedding และ similarity search ได้อย่างง่ายดายทำความเข้าใจแนวคิดพื้นฐานของ embedding
การอธิบายกระบวนการสร้าง embedding ยังไม่ละเอียดพอ
They're a bit of a black boxโดยไม่ได้อธิบายรายละเอียดความยากในการจัดการคำพ้องเสียง/หลายความหมาย
ใช้ embedding ได้แม้ไม่มี vector store
@ของ Numpy เพื่อหา inner product ระหว่าง normalized query vector กับ record matrixวิธีรัน logic ของ embedding บนสภาพแวดล้อม local
ความเป็นไปได้ของการใช้ embedding ในงานเขียนเอกสารเทคนิค
วิธีจัดเก็บและใช้งาน embedding
การอธิบายความรู้พื้นฐานยังไม่เพียงพอสำหรับนักพัฒนาที่เพิ่งเริ่มต้นกับ AI