จากสมการสู่ระบบจริง — เรียนด้วยการลงมือทำ ทุกอย่างรันได้จริง วัดผลได้จริง
เพราะเราจำ "คำ" ที่เขียนไม่ได้ — จำได้แต่ "ความหมาย"
vector search = ค้นด้วยความหมาย ไม่ใช่ตัวอักษร
"วัด อย่า เดา"
ทุกข้อสรุปวันนี้มีตัวเลขรองรับ ที่เรารันซ้ำเองได้
import chromadb col = chromadb.PersistentClient("./db").get_or_create_collection("brain") col.upsert(ids=["n1"], documents=["ประชุมกับอาจารย์ฝน เรื่อง workshop"]) col.query(query_texts=["นัดหมายกับใครบ้าง"]) # → เจอ!
ยังไม่ต้องอ่าน syntax — ดูแค่บรรทัดสุดท้าย: ถามคนละคำ แต่ระบบเข้าใจว่าเรื่องเดียวกัน
ระบบไม่พัง — แต่มีเรื่องภาษาไทยบางอย่างที่ต้องรู้…
DB แค่หา "ตัวเลขที่ใกล้ที่สุด" · ตัวที่แปลงภาษา→ตัวเลข คือ embedder
ความหมายใกล้กัน = ทิศใกล้กัน · "ประชุม" กับ "นัดหมาย" ชี้ทางเดียวกัน — "กาแฟ" คนละทาง
database ตัวเดิม · โน้ตชุดเดิม · เปลี่ยนอย่างเดียวคือ embedding model
cos(A,B) = A·B / (|A|·|B|)
ANN (เช่น HNSW) = ทางลัดที่ทุกคนเชื่อว่าเร็วกว่าการค้นทุกตัว — แต่ที่ scale เรา…
scale ส่วนตัว (หมื่น-แสน): ค้นตรงๆ = เร็วสุด · ทางลัดคุ้มตอนล้านโน้ตขึ้นไป
ไอเดีย: ให้แต่ละตัวเด่นในเขตของมัน → ครอบทั้ง exact + ความหมาย
เมื่อกี้เห็น 3 ตัวอย่าง — คราวนี้วัดจริงบน "ข้อสอบ" ภาษาไทยที่เราตั้งเอง
Recall@3 = ใน 3 อันดับแรก เจอคำตอบที่ถูกไหม · วัดบนไทยของเราเอง ไม่เชื่อ leaderboard อังกฤษ
2 ตัวเก่งเรื่องเดียวกัน + อีกตัวอ่อน → ตัวอ่อนดึงคะแนนรวมลง · วัด อย่าเดา (nDCG@10 = คะแนนคุณภาพการค้น ยิ่งสูงยิ่งดี)
17 บท · ทุกบทมีปุ่ม Open in Colab + เซลล์วัดผล (self-check ✓)
"วัด อย่าเดา" · second brain เป็นของเรา 100% (local + privacy)