กลยุทธ์การแยกคำถามย่อย
สำหรับคำถามซับซ้อนที่ต้องค้นข้อมูลหลายทอด ให้แบ่งเป็นคำถามย่อย ตอบแต่ละข้อ แล้วสังเคราะห์เป็นคำตอบสุดท้าย
กลยุทธ์การแยกคำถามย่อย เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
เมื่อการค้นคืนชั้นเดียวล้มเหลว
คำถามบางข้อจำเป็นต้องค้นหาหลายครั้ง:
"เปรียบเทียบรายได้ของ Apple ในปี 2022 กับ Microsoft ในปี 2023"
การค้นหาด้วยความคล้ายคลึงเพียงครั้งเดียวจะค้นคืนข้อเท็จจริงทั้งสองไม่ได้ คุณต้องใช้คำค้นย่อย TWO คำค้น
การแยกคำถามย่อย
LlamaIndex SubQuestionQueryEngine แบ่งคำถามออกเป็นคำถามย่อย ตอบแต่ละคำถาม แล้วสังเคราะห์คำตอบ:
from llama_index.core.query_engine import SubQuestionQueryEngine
from llama_index.core.tools import QueryEngineTool, ToolMetadata
query_engine_tools = [
QueryEngineTool(
query_engine=apple_index.as_query_engine(),
metadata=ToolMetadata(name='apple', description='Financial data for Apple Inc.')
),
QueryEngineTool(
query_engine=msft_index.as_query_engine(),
metadata=ToolMetadata(name='microsoft', description='Financial data for Microsoft Corp.')
)
]
engine = SubQuestionQueryEngine.from_defaults(query_engine_tools=query_engine_tools)
response = engine.query('Compare 2022 revenue of Apple vs 2023 revenue of Microsoft')วิธีการทำงาน
- LLM วิเคราะห์คำถาม
- LLM สร้างคำถามย่อยและมอบหมายแต่ละคำถามให้เครื่องมือหนึ่งรายการ
- ประมวลผลคำถามย่อยแต่ละข้อแบบขนานกัน
- LLM สังเคราะห์คำตอบสุดท้ายจากคำตอบของคำถามย่อย
การดูคำถามย่อย
คุณสามารถดูคำถามย่อยที่เครื่องมือสร้างขึ้นได้:
response = engine.query('Compare X and Y')
for sq in response.metadata.get('sub_qa', []):
print(sq.sub_q.sub_question, '->', sq.answer)เมื่อใดควรใช้คำถามย่อย
- คำค้นเพื่อเปรียบเทียบ (X กับ Y)
- การรวบรวมข้อมูลจากหลายแหล่ง
- คำถามที่มีข้อเท็จจริงหลายประเด็นแยกจากกัน
เมื่อใดไม่ควรใช้
- ถามตอบแบบง่าย — เพิ่มเวลาแฝงและค่าใช้จ่าย
- บริบทจากเอกสารเดียว
- งานที่การแยกคำถามไม่ได้เพิ่มประโยชน์
การกำหนดเส้นทางด้วย LLM
เครื่องมือคำถามย่อยทำงานร่วมกับ RouterQueryEngine เพื่อพิจารณาก่อนว่าควรค้นคืนจากชุดดัชนีใด:
from llama_index.core.query_engine import RouterQueryEngine
router = RouterQueryEngine.from_defaults(query_engine_tools=query_engine_tools)
# Routes 'apple revenue' to apple index, 'msft margins' to msft, etc.คำถามย่อยสำหรับเอเจนต์เขียนโค้ด
สำหรับเอเจนต์ที่เขียนโค้ด คำถามย่อยเป็นวิธีหนึ่งในการวางแผนขั้นตอน:
"สร้าง REST API" -> ย่อย: ออกแบบแบบจำลอง, ย่อย: เขียนตัวจัดการ CRUD, ย่อย: เพิ่มการยืนยันตัวตน
ผลกระทบด้านค่าใช้จ่าย
คำถามย่อยทำให้เกิดคำค้นย่อย N รายการแทนที่จะเป็น 1 รายการ แต่ละรายการต้องเรียก LLM และค้นคืนข้อมูล จึงต้องจัดสรรงบประมาณให้เหมาะสม โดยมีค่าใช้จ่ายสูงกว่าการค้นคืนชั้นเดียวประมาณ 3–4 เท่า
เปรียบเทียบกับ ReAct
คำถามย่อยคือการวางแผนล่วงหน้า ส่วน ReAct (ในบทเรียนถัดไป) ทำงานทีละขั้น สำหรับคำค้นที่ทราบว่าสามารถแยกย่อยได้ คำถามย่อยจะเร็วกว่า แต่สำหรับงานเชิงสำรวจ ReAct จะปรับตัวได้ดีกว่า
การผสาน ReAct + เครื่องมือคำถามย่อย
วิธีที่ยืดหยุ่นที่สุดคือเอเจนต์ ReAct ที่ใช้เครื่องมือค้นคืนคำถามย่อย โดยการเรียกเครื่องมือแต่ละครั้งสามารถแยกออกเป็นคำค้นย่อยหลายรายการได้
การประเมินคุณภาพคำถามย่อย
ติดตามว่า LLM สร้างคำถามย่อยที่สมเหตุสมผลหรือไม่ การแยกคำถามที่ไม่ดีจะแก้ไขข้อผิดพลาดได้ยาก หากไม่ได้ตรวจสอบร่องรอยการทำงาน
กรณีใช้งานการแยกคำถาม
การแยกคำถามย่อยมีประโยชน์มากที่สุดกับคำถามประเภทใด?
ทบทวน
การแยกคำถามย่อยเปลี่ยนคำค้นซับซ้อนหนึ่งรายการให้เป็นคำค้นง่ายหลายรายการ โดยมีค่าใช้จ่ายสูงขึ้น แต่แม่นยำขึ้นมากสำหรับคำถามแบบเปรียบเทียบและคำถามที่ใช้ข้อมูลจากหลายแหล่ง
คำถามที่พบบ่อย
บทเรียน “กลยุทธ์การแยกคำถามย่อย” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “กลยุทธ์การแยกคำถามย่อย” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “กลยุทธ์การแยกคำถามย่อย”
สำหรับคำถามซับซ้อนที่ต้องค้นข้อมูลหลายทอด ให้แบ่งเป็นคำถามย่อย ตอบแต่ละข้อ แล้วสังเคราะห์เป็นคำตอบสุดท้าย คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “กลยุทธ์การแยกคำถามย่อย” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม
ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ตัวโหลดและตัวแยกวิเคราะห์เอกสาร
- ลำดับชั้นของดัชนี: เวกเตอร์ ต้นไม้ คำสำคัญ
- เครื่องมือสอบถามและการสังเคราะห์คำตอบ
- กลยุทธ์การแยกคำถามย่อย