RAG วัดผลยังไง
![RAG วัดผลยังไง](/content/images/size/w2000/2024/04/Frame-9--1-.png)
าพูดถึง RAG หรือ Retrieval-Augmented Generation หลายคนอาจจะงงว่ามันคืออะไร แต่ถ้าเราลองศึกษาดูให้ดีแล้ว จะพบว่า RAG นั้นเป็นวิธีการที่น่าสนใจมากๆ เลยทีเดียว
![](https://txt.lukkiddd.com/content/images/size/w1200/2024/04/Frame-3.png)
การที่เราจะรู้ว่า RAG ของเราทำงานได้ดีแค่ไหน เราจำเป็นต้องมีเครื่องมือในการวัดผล ซึ่งในบทความนี้ ผมจะมาแนะนำ Metrics, Aspect และ Tools ต่างๆ ที่จะช่วยให้เราสามารถประเมิน RAG ได้อย่างมีประสิทธิภาพ
เรามาเริ่มกันเลยดีกว่าครับ ว่าเราจะใช้อะไรในการวัดผล RAG บ้าง แล้วมันจะช่วยให้เราพัฒนา RAG ให้ดียิ่งขึ้นได้อย่างไร ถ้าพร้อมแล้ว ไปกันเลยครับ!
Metrics
วิธีการวัดผลว่า RAG ของเราทำงานได้ดีไหม มีอยู่ 3 ตัวหลักๆ ครับ
- Context Relevance - เนื้อหาที่เรา ดึงมา เกี่ยวกับคำถามไหม
- Answer Relevance - คำตอบที่ได้มันเกี่ยวกับคำถามไหม
- Faithfulness - คำตอบที่ตอบมา ได้ใช้ Context ที่ให้รึเปล่า
Aspect
นอกจาก Metrics 3 ตัวนี้แล้ว เราอาจจะคำนึงถึงความสามารถอื่น ๆ อีกเช่น
- Noise Robustness - ความสามารถในการเลือกคำตอบที่ถูกต้อง เมื่อเจอข้อมูลอื่น ๆ ประกอบด้วย
- Refusal ability - ความสามารถในการปฏิเสธที่จะตอบ เมื่อไม่รู้
- Info integration - ความสามารถในการเอาข้อมูลจากหลาย ๆ document มาตอบ
- Counterfactual Robustness - ความสามารถในการตอบว่าข้อมูลที่ได้มา อาจจะผิด
![](https://txt.lukkiddd.com/content/images/2024/03/image-15.png)
Tools ที่ใช้วัด
ถ้าต้องการวัดผลการทำงานของ RAG เราสามารถลองเลือกใช้ tool ต่าง ๆ ที่มีคนทำมาให้แล้วได้เลยครับ ส่วนตัวแล้วเชียร์ Ragas แต่ตัวอื่น ก็น่าสนใจครับ
ขอแวะให้ดูตัวอย่างการใช้ Ragas เร็วๆนิดนึงครับ ต้องเกริ่นก่อนว่าตัว Ragas เนี่ยเป็นการ evaluate โดยให้ LLM อีกตัวเป็นตัววัด วิธีการง่ายมากเลยครับ เริ่มจากเราเตรียมข้อมูล, เลือก metrics แล้วก็สั่งรันเลย จบ! (อ้ออย่าลืมใส่ API KEY นะครับถ้าใช้ OpenAI)
import os
os.environ["OPENAI_API_KEY"] = "your-openai-key"
from datasets import load_dataset
from ragas.metrics import (
answer_relevancy,
faithfulness,
context_recall,
context_precision,
)
from ragas import evaluate
# loading the V2 dataset
amnesty_qa = load_dataset("explodinggradients/amnesty_qa", "english_v2")
result = evaluate(
amnesty_qa["eval"],
metrics=[
context_precision,
faithfulness,
answer_relevancy,
context_recall,
],
)
df = result.to_pandas()
df.head()
แต่ถ้าหากใครไม่มีข้อมูลที่จะใช้ทดสอบ ก็ให้ Ragas ช่วยสร้างขึ้นมาได้ครับ ลองดูทีนี่ ครับ Synthetic testset
อีกตัวที่น่าสนใจคือ Giskard ครับ สามารถ synthesize dataset ได้ แล้วก็พอรันวัดผลแล้ว ยังได้เป็น report ออกมาอีกด้วย
![image](https://docs.giskard.ai/en/latest/_images/rag_report_full.png)
![](https://assets-global.website-files.com/601d6f7d0b9c984f07bf10bc/65ce3fdac41e5e0d9c6a9d31_Screenshot%202024-02-15%20at%2017.39.05.png)
ส่วนวิธีใช้ ใช้ยังไง ก็ 👉 คลิก ไปดูได้เลยคร้าบ หรือจะดู Youtube Video ข้างล่างนี้ก็ได้ฮะ ละเอียดมาก พาทำทีละขั้นเลย
บทความอื่น ๆ ที่น่าสนใจ
ก่อนจะจากกันไป มีบทความที่น่าอ่านต่อ เกี่ยวกับการวัดผล RAG มาแชร์ฮะ ใครอยากอ่านเพิ่ม ก็จิ้มเลยจ้า 👇👇👇
![](https://jxnl.github.io/blog/assets/images/social/writing/posts/levels-of-rag.png)
![](https://opendatascience.com/wp-content/uploads/2024/04/ragtop.png)
สรุป
จริงๆ แล้ว หัวข้อเรื่อง RAG นี่อาจจะฟังดูเป็นเรื่องที่เข้าใจยากนะครับ (ซึ่งก็ยากแหละครับ) แต่เชื่อว่าถ้าใครอ่านจบบทความนี้ จะพอจับใจความสำคัญได้ว่า เราสามารถพิจารณาอะไรได้บ้าง ถ้าต้องการประเมินว่า RAG ของเราเนี่ยทำงานได้ดีแค่ไหน
เรามีทั้ง Metrics หลักๆ ที่เป็นตัวชี้วัดพื้นฐาน และยังมี Aspect อื่นๆ ที่ช่วยให้มองความสามารถของ RAG ได้รอบด้านมากขึ้น งานนี้ไม่ต้องไปนั่งคิดเยอะเลยครับ เพราะยังมี Tools ดีๆ อย่าง Ragas มาช่วยให้เราประเมิน RAG ได้แบบง่ายๆ ด้วยโค้ดไม่กี่บรรทัด
สรุปแล้ว การเลือกใช้ Metrics, Aspect และ Tools ที่เหมาะกับความต้องการ จะทำให้เราสามารถปรับแต่ง และพัฒนา RAG ให้ทำงานได้อย่างมีประสิทธิภาพสูงสุด หวังว่าผู้อ่านจะได้ประโยชน์จากบทความนี้ ไม่มากก็น้อยนะครับ 👋