AI ชุดสัมภาษณ์ชุดที่ 11: จะปรับแต่ง RAG อย่างไร?
การปรับแต่ง RAG ไม่ใช่การปรับเปลี่ยนในขั้นตอนเดียว แต่เป็นกระบวนการปรับปรุงทั้งสายโซ่ ด้านล่างนี้我从ด้านการจัดทำดัชนีข้อมูล ด้านการค้นคืน ด้านการสร้าง ด้านการประเมิน สี่มิติ ให้กลยุทธ์การปรับแต่งอย่างเป็นระบบ พร้อมแนบประสบการณ์จริงที่สามารถกล่าวถึงในการสัมภาษณ์
หนึ่ง การปรับแต่งด้านการจัดทำดัชนีข้อมูล (ปรับปรุงคุณภาพ "ฐานความรู้")
นี่คือจุดที่ถูกมองข้ามมากที่สุดแต่ได้ผลเร็วที่สุด
| จุดปรับแต่ง | ลักษณะปัญหา | วิธีดำเนินการ | ตัวชี้วัดผลลัพธ์ |
|---|---|---|---|
| การแยกวิเคราะห์เอกสาร | ตาราง ผังงานใน PDF ถูกมองข้าม หรือตัวอักษรผิดลำดับ สับสน | เปลี่ยนไปใช้ไลบรารีแยกวิเคราะห์ที่ดีกว่า (เช่น unstructured, โหมดคงเค้าโครงของ pypdf); สำหรับตารางใช้ pandas ดึงแล้วแปลงเป็น Markdown |
อัตราการเรียกคืน +5~15% |
| ขนาด chunk ข้อความ | chunk เล็กเกินไปทำให้เสียบริบท (เช่น "รายได้ปีนี้เพิ่มขึ้น" ทำให้ "ปีนี้" หายไป); chunk ใหญ่เกินไปทำให้มีสัญญาณรบกวนในการค้นคืนมาก | ทดลองขนาด chunk ต่างๆ (256/512/768 token), ตั้งค่า overlap 10~20%; สำหรับเอกสารยาว ตัดตามขอบเขตความหมาย (ย่อหน้า/หัวเรื่อง) แทนการตัดแบบความยาวคงที่ | อัตราการตรง / ความเที่ยงตรง |
| การเพิ่มเมทาดาต้า | ค้นคืนย่อหน้าที่เกี่ยวข้องได้ แต่ไม่สามารถ追溯แหล่งที่มาหรือเวลา หรือต้องการกรองตามสาขา | เพิ่มเมทาดาต้าให้แต่ละ chunk: source (ชื่อไฟล์/URL), timestamp, page_num, doc_type ใช้ตัวกรองในการค้นคืน (เช่น doc_type == 'legal') |
ความแม่นยำในการกรอง |
| การเลือกโมเดลฝังตัว | embedding ทั่วไปทำงานได้ไม่ดีในสาขาเฉพาะ (การแพทย์ โค้ด กฎหมาย) | ใช้โมเดลที่ปรับแต่งเฉพาะสาขา (BGE‑large‑zh, GTE‑Qwen2‑7B‑instruct); หรือปรับแต่งโมเดล embedding ของตัวเอง (ใช้ triplet loss) | MRR@10 ในการค้นคืน +10~20% |
สอง การปรับแต่งด้านการค้นคืน (ทำให้ "การเปิดหนังสือ" แม่นยำขึ้น)
การค้นคืนเป็นตัวกำหนดคุณภาพของ "เอกสารอ้างอิง" ที่ป้อนให้ LLM
| จุดปรับแต่ง | ลักษณะปัญหา | วิธีดำเนินการ | ผลลัพธ์ |
|---|---|---|---|
| การค้นคืนแบบผสมผสาน | การค้นคืนเวกเตอร์ไม่สามารถจับคู่คำศัพท์ที่แม่นยำ (เช่น รุ่นสินค้า ABC-123), การค้นคืนคำสำคัญไม่เข้าใจคำพ้องความหมาย |
ใช้ทั้งการค้นคืนเวกเตอร์ (เชิงความหมาย) และ BM25 (คำสำคัญ) โดยการถ่วงน้ำหนัก (เช่น 0.7เวกเตอร์ + 0.3BM25) หรือใช้ rerank ผสาน | อัตราการเรียกคืน +10~25% |
| การจัดลำดับใหม่ (Rerank) | ผลลัพธ์สองสามอันดับแรกจากการค้นคืนเวกเตอร์อาจไม่เกี่ยวข้องมากที่สุด อันดับที่ 10 ดีกว่า | ใช้โมเดล cross‑encoder (เช่น BGE‑reranker-v2, Cohere Rerank) ให้คะแนนชุดตัวเลือก (เช่น 20 อันดับแรก) ใหม่ แล้วเลือก top‑K |
อัตราการตรงเพิ่มขึ้นอย่างมีนัยสำคัญ (โดยเฉพาะ top‑1) |
| การเขียนคำค้นใหม่ | คำถามผู้ใช้คลุมเครือ หรือในการสนทนาหลายรอบมีการอ้างถึงที่ไม่ชัดเจน ("ราคาของมันเท่าไหร่") | ใช้ LLM เขียนคำถามเดิมใหม่ให้เหมาะสมกับการค้นคืนมากขึ้น (เช่น "iPhone 15 ราคาเท่าไหร่"); หรือเติมเต็มโดยใช้ประวัติการสนทนา | อัตราการเรียกคืน +5~15% |
| HyDE | คำถามผู้ใช้สั้นเกินไปหรือเป็นนามธรรม (เช่น "พูดถึงการสังเคราะห์แสง") การค้นคืนโดยตรงได้ผลไม่ดี | ให้ LLM สร้างคำตอบสมมติขึ้นมาก่อน จากนั้นใช้คำตอบนี้ไปค้นคืนเอกสาร | เหมาะสำหรับคำถามปลายเปิด แต่ไม่เหมาะสำหรับคำถามเชิงข้อเท็จจริงที่แม่นยำ |
| การปรับจำนวน Top‑K ในการค้นคืน | K น้อยเกินไปอาจพลาดข้อมูลสำคัญ; K มากเกินไปเพิ่มการใช้ token และสัญญาณรบกวน | ทดลอง K=3/5/10 สังเกตสมดุลระหว่างอัตราการเรียกคืนและความเที่ยงตรงของคำตอบ | trade‑off ระหว่างประสิทธิภาพและผลลัพธ์ |
สาม การปรับแต่งด้านการสร้าง (ให้ LLM ใช้เอกสารอ้างอิงอย่างเหมาะสม)
ถึงแม้การค้นคืนจะแม่นยำ แต่ถ้าคำสั่งไม่ดีหรือโมเดลไม่ดีก็ไม่มีประโยชน์
| จุดปรับแต่ง | ลักษณะปัญหา | วิธีดำเนินการ | ผลลัพธ์ |
|---|---|---|---|
| วิศวกรรมคำสั่ง | LLM ไม่สนใจเนื้อหาที่ค้นคืน หรือสร้างข้อมูลเท็จ | ระบุคำสั่งชัดเจน: "ตอบคำถามตามเอกสารอ้างอิงที่ให้ไว้เท่านั้น หากข้อมูลไม่เพียงพอหรือไม่เกี่ยวข้อง ให้ตอบ 'ไม่มีข้อมูลเพียงพอ'" พร้อมเพิ่ม few‑shot examples แสดงวิธีการอ้างอิงแหล่งที่มา | ความเที่ยงตรง +20~40% |
| การบีบอัดบริบท | เนื้อหาที่ค้นคืนยาวเกินไป (เกินหน้าต่างบริบทของโมเดล) หรือส่วนใหญ่เป็นสัญญาณรบกวน | ใช้ LLMLingua หรือ Selective Context บีบอัด คงประโยคที่เกี่ยวข้องมากที่สุดก่อนส่งให้ LLM |
ลดความเสี่ยงสูญเสียข้อมูล |
| การอัปเกรดโมเดล LLM | โมเดลเล็ก (7B) ไม่สามารถให้เหตุผลซับซ้อน หรือจำบริบทยาวไม่ได้ | เปลี่ยนไปใช้โมเดลที่แข็งแกร่งขึ้น (GPT‑4o, Claude 3.5 Sonnet, Qwen2.5‑72B) | ความแม่นยำในการให้เหตุผลเพิ่มขึ้นอย่างมาก |
| การสตรีมและการอ้างอิง | ผู้ใช้ไม่สามารถตรวจสอบความน่าเชื่อถือของคำตอบ | ให้ LLM ส่งออก [citation:1] ขณะสร้าง ซึ่งตรงกับหมายเลขเอกสารที่ค้นคืน ฝั่งแบ็กเอนด์แนบลิงก์ต้นฉบับ |
ความไว้วางใจของผู้ใช้ + การดีบักได้ |
| การปรับเทียบการปฏิเสธตอบ | โมเดลสร้างข้อมูลเมื่อไม่ควรตอบ หรือตอบว่าไม่รู้เมื่อควรตอบ | ตั้งค่าเกณฑ์ความคล้ายคลึง: ถ้าความคล้ายคลึงโคไซน์ของ top‑1 chunk กับคำถามต่ำกว่า 0.7 ให้บอก LLM ว่า "ข้อมูลไม่เกี่ยวข้อง" | ลดอัตราภาพหลอน |
สี่ ด้านการประเมินและการทำซ้ำ (รู้ว่าควรปรับไปทางไหน)
หากไม่มีการวัด ก็ไม่สามารถปรับปรุงได้
| จุดปรับแต่ง | วิธีดำเนินการ | ตัวชี้วัด |
|---|---|---|
| สร้างชุดประเมิน | เตรียมคำถามจริงจากผู้ใช้ 100~300 ข้อ + คำตอบมาตรฐาน + ID เอกสารที่ถูกต้องสำหรับการค้นคืน | ครอบคลุมระดับความยากและเจตนาต่างๆ |
| การประเมินอัตโนมัติ | ใช้ RAGAS (Faithfulness, Answer Relevance, Context Recall) หรือ TruLens | สามตัวชี้วัดหลัก: ความเที่ยงตรง, ความเกี่ยวข้องของคำตอบ, อัตราการเรียกคืนบริบท |
| การประเมินด้วยมนุษย์ | ทุกสัปดาห์สุ่มตรวจ 20 bad case วิเคราะห์ประเภทข้อผิดพลาด (การค้นคืนล้มเหลว / การสร้างผิดพลาด / ฐานความรู้ขาด) | จัดลำดับความสำคัญในการปรับปรุง |
| การทดสอบ A/B | ในสภาพแวดล้อมการผลิต แบ่งกลุ่มทดสอบกลยุทธ์การค้นคืนต่าง ๆ (เช่น BM25 vs การค้นคืนแบบผสมผสาน) | ตัวชี้วัดออนไลน์: ความพึงพอใจของผู้ใช้, อัตราไม่มีคำตอบ |
ห้า ประสบการณ์จริงที่ควรกล่าวถึงในการสัมภาษณ์ (คะแนนเพิ่ม)
"ในโครงการ RAG ที่ฉันรับผิดชอบ ตอนแรกอัตราการตรงของ baseline อยู่ที่เพียง 67% ฉันทำสามอย่าง:
1. เปลี่ยนการแบ่ง chunk จากความยาวคงที่ 1024 เป็นการตัดแบบ semantic ตามหัวเรื่อง+ย่อหน้า อัตราการตรงเพิ่มเป็น 74%;
2. เพิ่มการค้นคืนแบบผสมผสาน (เวกเตอร์ + BM25) และโมเดล rerank ขนาดเล็ก อัตราการตรงเพิ่มเป็น 83%;
3. ปรับแต่งคำสั่งและบังคับให้แสดง[ไม่พบข้อมูลที่เกี่ยวข้อง]อัตราภาพหลอนลดลงจาก 22% เหลือต่ำกว่า 5%นอกจากนี้ เราสร้างไปป์ไลน์ประเมินอย่างต่อเนื่อง ทุกครั้งที่เปลี่ยนแปลงจะรันคะแนน RAGAS กับคำถาม 200 ข้อ เพื่อให้แน่ใจว่าไม่มีการเสื่อมลง"
สรุปสุดท้าย: แผนที่การปรับแต่ง RAG แบบสมบูรณ์
ชั้นข้อมูล ─→ การทำความสะอาดเอกสาร, การปรับปรุงการแบ่ง chunk, การเพิ่มเมทาดาต้า, embedding เฉพาะสาขา
ชั้นการค้นคืน ─→ การค้นคืนแบบผสมผสาน, rerank, การเขียนคำค้นใหม่, HyDE, การปรับ Top-K
ชั้นการสร้าง ─→ การเสริมคำสั่ง, การกำหนดคำแนะนำ, การบีบอัด, การอ้างอิง, เกณฑ์การปฏิเสธ
ชั้นการประเมิน ─→ ชุดประเมิน, RAGAS, การวิเคราะห์ด้วยมนุษย์, การทดลอง A/B
评论
暂无已展示的评论。
发表评论(匿名)