RAG วัดผลยังไง

RAG วัดผลยังไง

าพูดถึง RAG หรือ Retrieval-Augmented Generation หลายคนอาจจะงงว่ามันคืออะไร แต่ถ้าเราลองศึกษาดูให้ดีแล้ว จะพบว่า RAG นั้นเป็นวิธีการที่น่าสนใจมากๆ เลยทีเดียว

RAG คืออะไร
RAG ย่อมาจาก Retrieval Augmented Generation, พูดง่าย ๆ มันคือการให้ LLM เราทำข้อสอบแบบ Open-book, เปิดหนังสือดูได้ RAG ประกอบด้วย 3 ขั้นตอนหลักๆ ดังนี้ 1. Retrieve - ค้นหาข้อมูลที่เกี่ยวข้องกับคำถามจากฐานข้อมูลหรือ knowledge base 2. Augment -

การที่เราจะรู้ว่า 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 - ความสามารถในการตอบว่าข้อมูลที่ได้มา อาจจะผิด
Benchmarking Large Language Models in Retrieval-Augmented Generation (https://arxiv.org/abs/2309.01431)

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
หน้าตา Report ของ Giskard
Giskard - Open-source Solution for AI Quality
AI testing and debugging solution to detect risks of performance issues, biases, and errors in your model before production. From tabular models to LLMs.

ส่วนวิธีใช้ ใช้ยังไง ก็ 👉 คลิก ไปดูได้เลยคร้าบ หรือจะดู Youtube Video ข้างล่างนี้ก็ได้ฮะ ละเอียดมาก พาทำทีละขั้นเลย

บทความอื่น ๆ ที่น่าสนใจ

ก่อนจะจากกันไป มีบทความที่น่าอ่านต่อ เกี่ยวกับการวัดผล RAG มาแชร์ฮะ ใครอยากอ่านเพิ่ม ก็จิ้มเลยจ้า 👇👇👇

Levels of Complexity: RAG Applications - jxnl.co
Notes about my hobbies and other things I find interesting.
A Practical Guide to RAG Pipeline Evaluation (Part 1: Retrieval)
Retrieval-Augmented Generation, or RAG, has come a long way since the FAIR paper first introduced the concept in 2020. Over the past year, RAG went from being perceived as a hack to now becoming the predominant approach to providing LLMs with relevant and up-to-date information. We have since seen a proliferation of RAG-based…

สรุป

จริงๆ แล้ว หัวข้อเรื่อง RAG นี่อาจจะฟังดูเป็นเรื่องที่เข้าใจยากนะครับ (ซึ่งก็ยากแหละครับ) แต่เชื่อว่าถ้าใครอ่านจบบทความนี้ จะพอจับใจความสำคัญได้ว่า เราสามารถพิจารณาอะไรได้บ้าง ถ้าต้องการประเมินว่า RAG ของเราเนี่ยทำงานได้ดีแค่ไหน

เรามีทั้ง Metrics หลักๆ ที่เป็นตัวชี้วัดพื้นฐาน และยังมี Aspect อื่นๆ ที่ช่วยให้มองความสามารถของ RAG ได้รอบด้านมากขึ้น งานนี้ไม่ต้องไปนั่งคิดเยอะเลยครับ เพราะยังมี Tools ดีๆ อย่าง Ragas มาช่วยให้เราประเมิน RAG ได้แบบง่ายๆ ด้วยโค้ดไม่กี่บรรทัด

สรุปแล้ว การเลือกใช้ Metrics, Aspect และ Tools ที่เหมาะกับความต้องการ จะทำให้เราสามารถปรับแต่ง และพัฒนา RAG ให้ทำงานได้อย่างมีประสิทธิภาพสูงสุด หวังว่าผู้อ่านจะได้ประโยชน์จากบทความนี้ ไม่มากก็น้อยนะครับ 👋