คู่มือหน้าตั้งค่าการค้นหา

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

💡 ไม่แน่ใจ? ไม่ต้องกังวล — ทุกช่องมีปุ่ม คืนค่า default ให้กลับค่ามาตรฐานได้เสมอ และก่อนปรับจริง ควรลองที่ช่อง ทดสอบค้นหา ดูผลก่อน

กฎ 2 ข้อที่ต้องรู้ก่อนปรับ

✓ ค่าที่มีผล "ทันที"

ค่าจูนการจัดอันดับ, ราคา, และ stopword — กดบันทึกแล้วใช้ได้เลย ลองค้นใหม่ก็เห็นผล

⚠ ค่าที่ต้อง "ประมวลผลใหม่"

เปลี่ยน model/dimension หรือศัพท์กฎหมาย — บันทึกแล้วต้องกดปุ่มประมวลผลดัชนีใหม่ ด้วย มิฉะนั้นข้อมูลเดิมยังไม่เปลี่ยน

ระบบจะขึ้นแบนเนอร์สีเหลืองเตือนเองทุกครั้งที่คุณบันทึกค่าที่ต้องประมวลผลใหม่ — ไม่ต้องจำเอง

1ค่าจูนการจัดอันดับ มีผลทันที

กลุ่มนี้ควบคุมว่าระบบให้คะแนน "ความหมาย" กับ "การจับคำ" อย่างละเท่าไร แล้วรวมกันยังไง — ปรับได้อิสระ ปลอดภัย ลองผิดลองถูกได้

RRF k (ค่ามาตรฐาน 60)

ตัวคุมว่า "อันดับ 1 ควรชนะอันดับรอง ๆ ขาดแค่ไหน"

  • ค่าต่ำ (เช่น 20) → อันดับต้น ๆ ได้เปรียบมาก ผลบนสุดโดดเด่นชัด
  • ค่าสูง (เช่น 100) → คะแนนของทุกอันดับใกล้กัน เกลี่ยความสำคัญมากขึ้น

แนะนำ: ปล่อย 60 ไว้ ถ้าไม่มีเหตุผลเฉพาะ

Candidates ต่อฝั่ง (ค่ามาตรฐาน 50)

แต่ละวิธี (ความหมาย/คำ) จะดึงผลมากี่รายการมาพิจารณา ก่อนรวมคะแนน

  • เพิ่มขึ้น (เช่น 100–150) → มีโอกาสเจอผลที่ดีแต่ซ่อนอยู่ลึกมากขึ้น (recall ดีขึ้น) ช้าลงเล็กน้อย
  • ลดลง → เร็วขึ้นนิด แต่เสี่ยงพลาดผลดี ๆ

แนะนำ: ขึ้นเป็น 100 ได้ถ้ารู้สึกว่าบางเรื่อง "หาไม่เจอทั้งที่ควรมี"

Similarity ขั้นต่ำ (ค่ามาตรฐาน 0 = ปิด)

"ด่านคัดกรอง" — ตัดผลฝั่งความหมายที่เหมือนน้อยเกินไปทิ้งก่อนรวมคะแนน (ค่า 0–0.99)

  • 0 → ไม่ตัดอะไรเลย (รับผลฝั่งความหมายทั้งหมด)
  • 0.3–0.4 → ตัดผลที่เกี่ยวข้องน้อยออก ช่วยลด "ผลขยะ" เมื่อคำค้นกว้าง

⚠ ตั้งสูงไป (เช่น 0.6+) อาจตัดผลดี ๆ ทิ้งด้วย — ค่อย ๆ ขยับทีละ 0.05 แล้วดูผลที่ช่องทดสอบ

น้ำหนักฝั่งความหมาย / ฝั่งคีย์เวิร์ด (ค่ามาตรฐาน 1.0 / 1.0)

บอกว่าตอนรวมคะแนน จะเชื่อ "ความหมาย" หรือ "คำที่ตรง" มากกว่ากัน

  • เพิ่มน้ำหนักความหมาย (เช่น 1.5 / 1.0) → เน้นเข้าใจเจตนา เหมาะกับคำถามเชิงบรรยาย
  • เพิ่มน้ำหนักคีย์เวิร์ด (เช่น 1.0 / 1.5) → เน้นคำตรงตัว เหมาะเมื่อผู้ใช้พิมพ์คำเฉพาะ/เลขมาตรา

แนะนำ: เริ่มที่ 1.0 เท่ากันทั้งคู่ แล้วค่อยเอียงทีละ 0.2 ตามพฤติกรรมผู้ใช้จริง

2Embedding ส่วนใหญ่ต้องประมวลผลใหม่

"Embedding" คือเครื่องมือที่แปลงข้อความเป็นความหมายเชิงตัวเลข — เป็นหัวใจของการค้นด้วยความหมาย

Model ⚠ เปลี่ยนแล้วต้อง Re-embed

  • text-embedding-3-small — เร็ว ประหยัด ($0.02/1M) คุณภาพดีพอสำหรับงานทั่วไป (ค่ามาตรฐาน)
  • text-embedding-3-large — แม่นกว่าเชิงความหมาย โดยเฉพาะภาษาไทย แต่แพงกว่า ~6.5 เท่า ($0.13/1M)

เปลี่ยน model แล้วต้องกด Re-embed ทั้งหมด เพื่อฝังข้อมูลใหม่ให้เข้ากัน มิฉะนั้นคะแนนความหมายจะเพี้ยน

Dimension ⚠ เปลี่ยนแล้วต้อง Re-embed

จำนวน "มิติ" ของความหมาย (256–2000) มาก = ละเอียดกว่าแต่กินพื้นที่/ช้ากว่านิด ค่ามาตรฐาน 1536 เหมาะกับงานส่วนใหญ่

ระบบจะจัดการปรับโครงสร้างฐานข้อมูลและสร้างดัชนีใหม่ให้เองตอน Re-embed — คุณแค่กดปุ่ม

ราคา USD / 1M tokens ✓ มีผลทันที

ใช้คำนวณค่าใช้จ่ายที่แสดงในหน้าสถิติเท่านั้น ไม่กระทบการค้นหา — ตั้งให้ตรงกับราคาจริงของ model ที่เลือก (small = 0.02, large = 0.13)

3พจนานุกรมตัดคำ

ภาษาไทยไม่มีเว้นวรรคระหว่างคำ ระบบจึงต้อง "ตัดคำ" เอง กลุ่มนี้ช่วยให้ตัดคำได้แม่นขึ้นตามศัพท์เฉพาะทาง

ศัพท์กฎหมายเพิ่มเติม ⚠ เปลี่ยนแล้วต้อง Re-tokenize

ใส่ศัพท์เฉพาะที่ระบบมักตัดผิด (บรรทัดละคำ) เช่น "หนังสือรับรองถิ่นกำเนิดสินค้า" เพื่อให้ระบบมองเป็นคำเดียวไม่ตัดแตก

เพิ่ม/ลบแล้วต้องกด Re-tokenize เพื่ออัปเดตดัชนีคำของเอกสารเดิม (ฟรี ไม่เสียเงิน)

Stopword เพิ่มเติม ✓ มีผลทันที

คำที่ไม่ช่วยในการค้น เช่น คำลงท้าย/คำถาม ("ขอ", "หน่อย", "ไหม") — ใส่ไว้เพื่อให้ระบบตัดออกจากคำค้น ผลจะแม่นขึ้น

มีผลเฉพาะฝั่งคำค้นของผู้ใช้ ไม่แตะข้อมูลเอกสาร จึงใช้ได้ทันทีไม่ต้องประมวลผลใหม่

4ประมวลผลดัชนีใหม่

เมื่อคุณเปลี่ยนค่าที่กระทบข้อมูลเดิม (แบนเนอร์เหลืองจะเตือน) ให้มากดปุ่มที่นี่เพื่ออัปเดตเอกสารทั้งหมด

Re-embed ทั้งหมด

ฝังความหมายใหม่ให้ทุกเอกสาร — ใช้เมื่อเปลี่ยน model หรือ dimension

💰 เสียค่า OpenAI (ตามจำนวนเอกสาร)

Re-tokenize ทั้งหมด

ตัดคำเอกสารใหม่ตามพจนานุกรมล่าสุด — ใช้เมื่อเพิ่ม/ลบศัพท์กฎหมาย

✓ ฟรี ไม่เสียเงิน

ขั้นตอนเมื่อกดปุ่ม

  1. ระบบแสดงประมาณการก่อน (จำนวนเอกสาร + ค่าใช้จ่ายโดยประมาณสำหรับ Re-embed)
  2. กด ยืนยัน เริ่มเลย เพื่อเริ่มจริง (หรือ ยกเลิก)
  3. มีแถบความคืบหน้าบอกว่าทำไปกี่ % — รอจนขึ้น "เสร็จแล้ว ✓"

ทำได้ทีละงาน — ถ้ามีงานกำลังรันอยู่ ระบบจะไม่ให้เริ่มซ้ำ ปลอดภัยแม้ปิดหน้าจอไปแล้วเปิดกลับมาดูใหม่

5ทดสอบค้นหา (ดู breakdown)

เครื่องมือสำคัญที่สุดสำหรับการปรับจูน — พิมพ์คำค้นแล้วเห็นเบื้องหลังคะแนนทุกคอลัมน์ เพื่อเข้าใจว่าทำไมผลจึงเรียงแบบนี้

คอลัมน์ความหมาย
RRF รวมคะแนนสุดท้ายที่ใช้เรียงอันดับ (รวมสองฝั่งแล้ว)
vec #อันดับจากฝั่งความหมาย (— = ไม่ติดฝั่งนี้)
scorevecคะแนนส่วนที่มาจากฝั่งความหมาย
kw #อันดับจากฝั่งคำ (— = ไม่ติดฝั่งนี้)
scorekwคะแนนส่วนที่มาจากฝั่งคำ
ความหมาย% ความใกล้เชิงความหมาย (เหมือนป้ายในหน้าค้นหา)
คำที่ตรงคำในคำค้นที่พบจริงในเอกสารนี้

บรรทัดบนสุดยังบอก "ตัดคำ" ว่าระบบแยกคำค้นเป็นอะไร และตัดคำไหนทิ้ง — ช่วยตรวจว่า stopword/ศัพท์กฎหมายที่ตั้งไว้ทำงานถูกไหม

วิธีใช้จูน: ปรับค่าด้านบน → กดบันทึก → ทดสอบด้วยคำค้นจริงที่ผู้ใช้มักถาม → ดูว่าผลที่ควรอยู่บนสุดขึ้นมาไหม → ปรับซ้ำจนพอใจ

6สูตรปรับแต่ง (อยากได้แบบนี้ → ทำแบบนี้)

“ผลขยะ/ไม่เกี่ยวโผล่มาเยอะ”

ขยับ Similarity ขั้นต่ำ ขึ้นทีละ 0.05 (เช่น 0.3) เพื่อตัดผลที่เหมือนน้อยทิ้ง

“บางเรื่องหาไม่เจอทั้งที่ควรมี”

เพิ่ม Candidates ต่อฝั่ง เป็น 100–150 เพื่อดึงผลมาพิจารณามากขึ้น

“ผู้ใช้พิมพ์คำถามยาว ๆ เชิงบรรยาย”

เพิ่ม น้ำหนักฝั่งความหมาย เป็น ~1.3–1.5

“ผู้ใช้ค้นด้วยคำเฉพาะ/เลขมาตรา”

เพิ่ม น้ำหนักฝั่งคีย์เวิร์ด เป็น ~1.3–1.5

“ศัพท์เฉพาะถูกตัดแตกเป็นคำย่อย”

เพิ่มคำนั้นใน ศัพท์กฎหมายเพิ่มเติม → บันทึก → กด Re-tokenize

“อยากได้ความแม่นสูงสุด ไม่กังวลค่าใช้จ่าย”

เปลี่ยน Model เป็น large → ตั้งราคาเป็น 0.13 → บันทึก → กด Re-embed

📌 หลักทอง: ปรับทีละอย่าง แล้ววัดผลที่ช่องทดสอบทุกครั้ง — จะได้รู้ว่าอะไรช่วยจริง ไม่งง

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

ปรับพลาดจะพังไหม?

ไม่พัง — ค่าจูนการจัดอันดับปรับกลับได้ทันทีด้วยปุ่ม คืนค่า default ส่วนที่กระทบข้อมูล (Re-embed/Re-tokenize) ก็แค่กดทำใหม่ ระบบออกแบบให้ทำซ้ำได้เสมอ

บันทึกแล้วทำไมผลค้นยังเหมือนเดิม?

ถ้าเป็นค่าที่ "ต้องประมวลผลใหม่" (มีแบนเนอร์เหลืองเตือน) ต้องกด Re-embed หรือ Re-tokenize ด้วย ผลถึงจะเปลี่ยน ส่วนค่าจูนทั่วไปมีผลทันที ลองค้นใหม่อีกครั้ง

Re-embed เสียเงินเท่าไร?

ระบบจะบอกประมาณการก่อนเสมอเมื่อกดปุ่ม (ทั้ง USD และบาท) คุณดูตัวเลขก่อนแล้วค่อยตัดสินใจยืนยัน — ปกติชุดข้อมูลไม่ใหญ่จะถูกมาก

ต้องใส่ API key ไหม?

ใช่ — ช่อง API key มุมขวาบนต้องตรงกับที่ตั้งไว้ในระบบ จึงจะบันทึกค่า/สั่งประมวลผลได้ (เป็นการป้องกันไม่ให้คนอื่นแก้ค่า) ระบบจำค่าไว้ให้หลังใส่ครั้งแรก

ไปหน้าตั้งค่า → ลองปรับแล้ววัดผลที่ช่องทดสอบได้เลย