การสร้างระบบถาม–ตอบ RAG ตั้งแต่ต้นจนจบ
โซ่ RetrievalQA พรอมต์แบบกำหนดเอง การระบุแหล่งที่มา และการประเมิน RAG ด้วย RAGAS
การสร้างระบบถาม–ตอบ RAG ตั้งแต่ต้นจนจบ เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
RAG คืออะไร
การสร้างผลลัพธ์เสริมด้วยการดึงข้อมูลช่วยให้ LLM อ้างอิงข้อมูลของคุณเองได้ ในขณะที่มีการส่งคำถาม ระบบจะดึงส่วนย่อยที่เกี่ยวข้องจากที่จัดเก็บเวกเตอร์แล้วแทรกลงในพรอมป์ ทำให้โมเดลตอบจากข้อเท็จจริงแทนการคาดเดา
กระบวนการทำงานของ RAG
คำค้น RAG ทุกคำทำตามสี่ขั้นตอน: (1) ฝังเวกเตอร์คำถาม (2) ดึงข้อมูลส่วนย่อยที่คล้ายกัน (3) ใส่ส่วนย่อยเหล่านั้นลงในพรอมป์ในฐานะบริบท (4) LLM สร้างคำตอบโดยอ้างอิงบริบทดังกล่าว
การแปลงที่จัดเก็บให้เป็นตัวดึงข้อมูล
แปลงที่จัดเก็บเวกเตอร์ให้เป็นตัวดึงข้อมูลด้วย as_retriever พจนานุกรม search_kwargs ใช้ควบคุมการดึงข้อมูล โดยค่าที่สำคัญที่สุดคือ k ซึ่งระบุจำนวนส่วนย่อยที่จะดึงมาต่อหนึ่งคำถาม
retriever = db.as_retriever(
search_kwargs={"k": 4}
)การปรับ search_kwargs
search_kwargs ยังใช้กำหนดค่าเกณฑ์คะแนนหรือตัวเลือก MMR ได้ด้วย เริ่มต้นด้วย k=4 เพิ่มค่าเมื่อคำตอบขาดบริบท และลดค่าลงเพื่อลดค่าใช้จ่ายด้านโทเค็นและลดข้อมูลรบกวน
retriever = db.as_retriever(
search_type="similarity_score_threshold",
search_kwargs={"k": 6, "score_threshold": 0.5}
)เชน RetrievalQA
เชน RetrievalQA เชื่อมการดึงข้อมูลและการสร้างคำตอบเข้าด้วยกัน สร้างเชนด้วย from_chain_type โดยส่งค่า llm และ retriever เข้าไป จากนั้นการเรียกใช้เพียงครั้งเดียวก็สามารถตอบคำถามจากเอกสารของคุณได้
from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI
qa = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4o"),
retriever=retriever
)ประเภทเชน: วิธีรวมบริบท
chain_type ใช้ควบคุมวิธีนำส่วนย่อยที่ดึงมาใส่ในพรอมป์ "stuff" (ค่าเริ่มต้น) จะใส่ส่วนย่อยทั้งหมดไว้ในพรอมป์เดียว เรียบง่ายและเหมาะที่สุดเมื่อข้อมูลพอดีกับหน้าต่างบริบท ส่วนประเภทอื่น เช่น "map_reduce" ใช้จัดการส่วนย่อยขนาดใหญ่จำนวนมาก
qa = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=retriever
)การถามคำถาม
เรียกใช้เชนด้วย invoke โดยส่งคำถามของคุณไว้ใต้คีย์ query เชนจะดึงข้อมูล สร้างพรอมป์ และส่งคืนคำตอบที่อ้างอิงข้อมูล
response = qa.invoke({"query": "What is the refund window?"})
print(response["result"])การส่งคืนเอกสารแหล่งที่มา
ตั้งค่า return_source_documents=True เพื่อรับส่วนย่อยที่ใช้สร้างคำตอบ วิธีนี้ช่วยให้แสดงการอ้างอิงแหล่งที่มา และเปิดโอกาสให้ผู้ใช้ตรวจสอบว่าข้อเท็จจริงแต่ละรายการมาจากที่ใด ซึ่งสำคัญอย่างยิ่งต่อความน่าเชื่อถือ
qa = RetrievalQA.from_chain_type(
llm=llm,
retriever=retriever,
return_source_documents=True
)
resp = qa.invoke({"query": "Refund window?"})
for d in resp["source_documents"]:
print(d.metadata)เหตุใดจึงต้องประเมิน RAG
RAG อาจล้มเหลวได้สองรูปแบบ: การดึงข้อมูลนำส่วนย่อยที่ไม่ถูกต้องมา หรือ การสร้างคำตอบสร้างข้อมูลหลอนขึ้นมาแม้ส่วนย่อยจะดีอยู่แล้ว คุณจึงต้องมีตัวชี้วัดเพื่อทราบว่าควรแก้ไขส่วนใด การตรวจดูคำตอบด้วยตาไม่สามารถรองรับการใช้งานในวงกว้างได้
ตัวชี้วัด RAGAS
RAGAS คือไลบรารีที่ใช้ให้คะแนนคุณภาพของ RAG ตัวชี้วัดสำคัญ ได้แก่ faithfulness (คำตอบได้รับการสนับสนุนจากบริบท) answer_relevancy (คำตอบตอบประเด็นของคำถาม) และ context_precision (ส่วนย่อยที่ดึงมามีความเกี่ยวข้อง)
pip install ragas
from ragas.metrics import faithfulness, answer_relevancy, context_precisionการเรียกใช้การประเมิน
สร้างชุดข้อมูลที่ประกอบด้วยคำถาม คำตอบที่สร้างขึ้น บริบทที่ดึงมา และคำตอบอ้างอิงจริง จากนั้นเรียกใช้ evaluate คะแนนที่ได้จะบอกว่าคุณควรปรับปรุงการแบ่งส่วนย่อย การดึงข้อมูลด้วยค่า k หรือพรอมป์
from ragas import evaluate
result = evaluate(
dataset,
metrics=[faithfulness, answer_relevancy, context_precision]
)
print(result)ตรวจสอบความเข้าใจ
ทดสอบความรู้เกี่ยวกับ RAG ของคุณ
ทบทวน: RAG ตั้งแต่ต้นจนจบ
คุณสร้างกระบวนการ RAG แบบครบตั้งแต่ต้นจนจบ: db.as_retriever ร่วมกับ search_kwargs เชน RetrievalQA.from_chain_type ที่ทำงานบน llm และตัวดึงข้อมูล และ return_source_documents=True เพื่อแสดงการอ้างอิงแหล่งที่มา นอกจากนี้คุณยังได้เรียนรู้การวัดคุณภาพด้วยตัวชี้วัด RAGAS เช่น ความสอดคล้องกับบริบทและความแม่นยำของบริบท
เรียนรู้ Python ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 53
- บทเรียน
- 225
คำถามที่พบบ่อย
บทเรียน “การสร้างระบบถาม–ตอบ RAG ตั้งแต่ต้นจนจบ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การสร้างระบบถาม–ตอบ RAG ตั้งแต่ต้นจนจบ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การสร้างระบบถาม–ตอบ RAG ตั้งแต่ต้นจนจบ”
โซ่ RetrievalQA พรอมต์แบบกำหนดเอง การระบุแหล่งที่มา และการประเมิน RAG ด้วย RAGAS คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การสร้างระบบถาม–ตอบ RAG ตั้งแต่ต้นจนจบ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- สถาปัตยกรรม LangChain และ LCEL
- การโหลด แบ่ง และสร้างเวกเตอร์ฝังสำหรับเอกสาร
- คลังเวกเตอร์: Chroma และ FAISS
- การสร้างระบบถาม–ตอบ RAG ตั้งแต่ต้นจนจบ