← 返回列表

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

评论

暂无已展示的评论。

发表评论(匿名)