Learn AI with Python · บทเรียน

การสร้างระบบถาม–ตอบ RAG ตั้งแต่ต้นจนจบ

โซ่ RetrievalQA พรอมต์แบบกำหนดเอง การระบุแหล่งที่มา และการประเมิน RAG ด้วย RAGAS

บทเรียน 4 จาก 413 ขั้นตอน

การสร้างระบบถาม–ตอบ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. สถาปัตยกรรม LangChain และ LCEL
  2. การโหลด แบ่ง และสร้างเวกเตอร์ฝังสำหรับเอกสาร
  3. คลังเวกเตอร์: Chroma และ FAISS
  4. การสร้างระบบถาม–ตอบ RAG ตั้งแต่ต้นจนจบ
← กลับไปที่ Learn AI with Python