การสอบถามตัวอย่าง

ตัวอย่างการสืบค้น (เรียกอีกอย่างว่า "ตัวอย่างไม่กี่ช็อต") ให้รูปแบบที่เป็นรูปธรรมแก่ตัวแทนข้อมูลเพื่อเรียนรู้ คําถามเหล่านี้เป็นคําถามตัวอย่างและตรรกะการสืบค้นที่สอดคล้องกันซึ่งผู้สร้างจัดเตรียมไว้เพื่อเป็นแนวทางว่าตัวแทนควรตอบสนองอย่างไร เมื่อผู้ใช้ถามคําถามกับแหล่งข้อมูล Data Agent จะดึงตัวอย่างที่เกี่ยวข้องมากที่สุดโดยอัตโนมัติ ซึ่งโดยทั่วไปจะเป็นตัวอย่างสี่อันดับแรก และป้อนข้อมูลเหล่านั้นลงในกระบวนการสร้าง ด้วยการอ้างอิงตัวอย่างเหล่านี้ ตัวแทนสามารถเข้าใจโครงสร้าง ตัวกรอง และการรวมที่คาดหวังได้ดีขึ้น ซึ่งช่วยให้สร้างผลลัพธ์คิวรีที่แม่นยํา สอดคล้องกัน และรับรู้บริบทมากขึ้น

มีคิวรีตัวอย่าง

เมื่อให้ตัวอย่างคิวรี คุณต้องรวมทั้งคําถามภาษาธรรมชาติและคําตอบคิวรีที่สอดคล้องกัน คําถามแต่ละข้อควรไม่ซ้ํากันเพื่อให้ตัวแทนข้อมูลมีชุดจุดอ้างอิงที่หลากหลาย ทุกคิวรีตัวอย่างจะได้รับการตรวจสอบความถูกต้องกับ Schema ของแหล่งข้อมูลที่เลือก คิวรีที่ไม่ผ่านการตรวจสอบความถูกต้องจะไม่ถูกส่งไปยังตัวแทน เพื่อให้แน่ใจว่ามีการใช้ตัวอย่างของคุณจําเป็นต้องยืนยันว่าพวกเขาผ่านขั้นตอนการตรวจสอบความถูกต้องนี้

สกรีนช็อตของการเพิ่มคิวรีตัวอย่างไปยังตัวแทนข้อมูล

ตารางแสดงแหล่งข้อมูลที่สนับสนุนการสืบค้นตัวอย่างในตัวแทนข้อมูลในปัจจุบัน ตัวอย่างเหล่านี้ช่วยแนะนํากระบวนการสร้างคิวรีของตัวแทนโดยให้รูปแบบและบริบท

ชนิดแหล่งข้อมูล รองรับตัวอย่างการสืบค้น?
Lakehouse ✅ ใช่
คลังสินค้า ✅ ใช่
ฐานข้อมูล KQL ของอีเวนต์เฮาส์ ✅ ใช่
โมเดลความหมาย ❌ ไม่ใช่
ภววิทยา ❌ ไม่ใช่

คุณยังสามารถใช้มุมมอง ขั้นตอนการเรียกใช้ เพื่อแก้ไขข้อบกพร่องว่าตัวอย่างการค้นหาใดถูกดึงมาและนําไปใช้กับคําถามของผู้ใช้ มุมมองนี้มีประโยชน์อย่างยิ่งสําหรับการยืนยันว่ามีการใช้ตัวอย่างที่ถูกต้อง และสําหรับการวินิจฉัยว่าเหตุใดจึงมีการสร้างผลลัพธ์บางอย่าง หากตัวอย่างที่ไม่ถูกต้องปรากฏขึ้น ให้ลองปรับแต่งคําถามของคุณหรือเพิ่มตัวอย่างที่ชัดเจนและตรงเป้าหมายมากขึ้น

สกรีนช็อตของคิวรีตัวอย่างที่อ้างอิงในขั้นตอนการเรียกใช้

แนวทางปฏิบัติที่ดีที่สุดสําหรับการเขียนตัวอย่างคิวรี

เมื่อสร้างคิวรีตัวอย่างสําหรับตัวแทนข้อมูล การปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดจะช่วยให้มั่นใจได้ว่าจะให้คําแนะนําที่ชัดเจนและเชื่อถือได้ในระหว่างการสร้างคิวรี ตัวอย่างที่สร้างขึ้นมาอย่างดีช่วยให้ตัวแทนเข้าใจว่าคําถามภาษาธรรมชาติแปลเป็นตรรกะ SQL/KQL เน้นการรวมหรือการคํานวณที่ซับซ้อน และปรับปรุงความแม่นยําของผลลัพธ์อย่างไร ใช้หลักเกณฑ์เพื่อทําให้ตัวอย่างมีประสิทธิภาพมากขึ้นและเป็นตัวแทนของสถานการณ์จริงของผู้ใช้

# แนวทางปฏิบัติที่ดีที่สุด เหตุใดจึงสําคัญ
1 ตรวจสอบให้แน่ใจว่าคําถามจับคู่กับคําค้นหาอย่างชัดเจน ตัวแทนข้อมูลใช้ตัวอย่างเหล่านี้เพื่อเรียนรู้รูปแบบระหว่างคําถามและ SQL/KQL ที่เป็นผลลัพธ์ ความคลุมเครือลดความแม่นยํา
2 รวมข้อคิดเห็นในแบบสอบถามเพื่อเป็นแนวทางให้กับตัวแทน ข้อคิดเห็น ( -- substitute customer_id here) ช่วยให้ตัวแทนเข้าใจตําแหน่งที่จะแทนที่ค่าหรือใช้ตรรกะที่สําคัญ
3 เน้นตรรกะการรวมหรือรูปแบบที่ซับซ้อน ใช้ตัวอย่างการค้นหาเพื่อแสดงวิธีจัดการการรวมหลายตาราง การรวม หรือตรรกะขั้นสูงอื่นๆ ที่ยากต่อการอธิบายในคําแนะนําธรรมดา
4 หลีกเลี่ยงการทับซ้อนกันหรือความขัดแย้ง แต่ละตัวอย่างควรมีความแตกต่างกันและไม่ขัดแย้งกันเพื่อให้ตัวแทนทราบถึงวิธีปฏิบัติตน
5 ใช้ขั้นตอนการเรียกใช้เพื่อแก้ไขข้อบกพร่องว่าตัวอย่างใดที่ส่งผ่าน เรียกใช้ขั้นตอนช่วยให้คุณเห็นว่าตัวอย่างใดถูกดึงมาสําหรับคําถามของผู้ใช้ที่กําหนด — หากมีตัวอย่างที่ไม่ถูกต้องปรากฏขึ้น ให้ปรับคําถามของคุณหรือเพิ่มตัวอย่างที่เฉพาะเจาะจงมากขึ้น
6 สะท้อนพฤติกรรมของผู้ใช้จริง เพิ่มตัวอย่างคําค้นหาที่แสดงถึงประเภทของคําถามที่ผู้ใช้ถามเพื่อเพิ่มความเกี่ยวข้องและความแม่นยําสูงสุด

ตรวจสอบความถูกต้องของคิวรีตัวอย่าง

Fabric Data Agent SDK มีเครื่องมือในตัวเพื่อประเมินและปรับปรุงคุณภาพของการสืบค้นตัวอย่างของคุณ เมื่อใช้ฟังก์ชันนี้ evaluate_few_shots คุณสามารถตรวจสอบความถูกต้องของคู่ภาษาธรรมชาติ/SQL แต่ละคู่เพื่อยืนยันว่ามีความชัดเจน ถูกต้อง และสอดคล้องกับ Schema แหล่งข้อมูลของคุณ SDK เรียกใช้แต่ละตัวอย่างผ่านกระบวนการประเมินของ Data Agent โดยส่งคืนข้อมูลสรุปโดยละเอียดว่าตัวอย่างใดที่ผ่านและตัวอย่างใดที่ต้องปรับแต่ง

มีคิวรีตัวอย่าง

examples_to_add = {
    "What was total revenue for Product Alpha in Q1 2024?": "SELECT SUM(amount) AS revenue FROM sales WHERE product = 'Alpha' AND fiscal_quarter = '2024-Q1';",
    "Show me average deal size in the North region during 2023.": "SELECT AVG(amount) AS avg_deal FROM deals WHERE region = 'North' AND YEAR(closed_date) = 2023;",
    "How many support tickets were closed in January 2024?": "SELECT COUNT(*) AS tickets_closed FROM support_tickets WHERE status = 'Closed' AND DATE_TRUNC('month', closed_at) = '2024-01-01';",
    "What is the total revenue for Product Alpha in the first quarter of 2024?": "SELECT COUNT(DISTINCT order_id) AS revenue FROM order_facts WHERE product = 'Alpha' AND fiscal_quarter = '2024-Q1';",
    "How many new leads were generated from the website in February 2024?": "SELECT COUNT(*) AS web_leads FROM leads WHERE source = 'Web' AND DATE_TRUNC('month', created_at) = '2024-02-01';",
    "List total marketing touches for campaign Ignite in March 2024.": "SELECT SUM(touches) AS total_touches FROM campaign_metrics WHERE campaign_name = 'Ignite' AND DATE_TRUNC('month', activity_date) = '2024-03-01';",
    "What was the average deal amount in the North region during 2023?": "SELECT SUM(amount) / COUNT(*) AS avg_deal FROM deal_summary WHERE region = 'North' AND YEAR(closed_date) = 2023;",
    "Which products exceeded 1M revenue in 2023?": "SELECT product FROM sales WHERE YEAR(order_date) = 2023 GROUP BY product HAVING SUM(amount) > 1000000;",
    "Show me how many support tickets were closed during January 2024.": "SELECT COUNT(ticket_id) AS tickets_closed FROM ticket_events WHERE event_type = 'Closed' AND MONTH(event_time) = 1 AND YEAR(event_time) = 2024;",
    "What is the churn rate for subscription tier Gold in 2024 so far?": "SELECT SUM(churned_accounts)::float / NULLIF(SUM(active_accounts), 0) AS churn_rate FROM subscription_health WHERE tier = 'Gold' AND YEAR(snapshot_date) = 2024;",
}

# Add the examples to the datasource
try:
    datasource.add_fewshots(examples_to_add)
    print(f"Added {len(examples_to_add)} few-shot examples to the datasource")
except Exception as e:
    print(f"Note: {e}")
    print("Few-shots may already exist in the datasource")

ประเมินผ่าน SDK

เมื่อตรวจสอบอัตราความสําเร็จและคําติชม คุณสามารถปรับตัวอย่างของคุณซ้ําๆ เช่น การชี้แจงคําถาม การปรับปรุงตรรกะ SQL หรือการเพิ่มข้อคิดเห็น เพื่อให้ตัวแทนข้อมูลเรียนรู้จากรูปแบบคุณภาพสูงขึ้นและสร้างผลลัพธ์ที่แม่นยํายิ่งขึ้นสําหรับคําถามใหม่

# Evaluate few-shot examples using the Data Agent SDK.
# This runs validation on your natural-language/SQL pairs and returns a summary of results.
result = datasource.evaluate_few_shots(batch_size=20)


# Print out the overall success rate of your examples.
# This shows how many examples passed validation vs. the total tested.
print(f"Success rate: {result.success_rate:.2f}% ({result.success_count}/{result.total_examples})")

ติดตามความคิดเห็น

หลังจากเรียกใช้ตัวตรวจสอบความถูกต้อง คุณจะได้รับรายละเอียดที่ชัดเจนว่าตัวอย่างใดผ่านและตัวอย่างใดล้มเหลว ข้อเสนอแนะนี้ทําให้ง่ายต่อการระบุจุดแข็งและจุดอ่อนในตัวอย่างไม่กี่ช็อตของคุณ

  • กรณีความสําเร็จ: ตัวอย่างที่ SQL ตรงกับคําตอบที่คาดไว้ ตัวอย่างเหล่านี้เป็นข้อมูลอ้างอิงที่ชัดเจนที่คุณสามารถสร้างแบบจําลองในอนาคตได้
  • กรณีความล้มเหลว: ตัวอย่างที่ SQL ไม่ตรงกับคําตอบที่คาดไว้ หรือคู่คําถาม/แบบสอบถามอาจไม่ชัดเจนหรือไม่ถูกต้อง กรณีเหล่านี้ควรได้รับการทบทวนและปรับแต่ง
# Access success and failure cases as pre-computed Pandas DataFrames
success_df = result.success_cases
failure_df = result.failure_cases

print("Success Cases:")
display(success_df)  # Shows examples where the SQL matched the user question

print("Failure Cases:")
display(failure_df)  # Shows examples that need review or improvement

ใช้คําติชมนี้เพื่อ ทําซ้ําและปรับปรุง คําค้นหาตัวอย่างของคุณ การเสริมความแข็งแกร่งให้กับตัวอย่างที่อ่อนแอกว่าเป็นประจําจะช่วยให้ Data Agent สร้าง SQL และคําตอบที่แม่นยํายิ่งขึ้นเมื่อเวลาผ่านไป

สกรีนช็อตของตัวอย่างผลลัพธ์ของตัวตรวจสอบความถูกต้องของคิวรี

หากต้องการสํารวจตัวอย่างการทํางานแบบเต็ม คุณสามารถตรวจสอบสมุดบันทึกตัวอย่างใน ที่เก็บ GitHub ของ Fabric Data Agent SDK:

Note

ยูทิลิตี้การประเมินนี้พร้อมใช้งานสําหรับคิวรีตัวอย่างที่ใช้ SQL เท่านั้น KQL หรือคิวรีชนิดอื่นๆ ยังไม่ได้รับการสนับสนุน

ตรวจหาข้อขัดแย้งระหว่างคิวรีตัวอย่าง

หลังจากการตรวจสอบคุณภาพเสร็จสมบูรณ์ SDK การประเมินจะทําการ ตรวจหาข้อขัดแย้ง โดยอัตโนมัติในแบบสอบถามตัวอย่างที่ได้รับอนุมัติหรือตัวอย่างไม่กี่ช็อต การตรวจหาข้อขัดแย้งจะระบุความไม่สอดคล้องกันที่อาจทําให้ตัวแทนข้อมูลสร้างผลลัพธ์ที่คาดเดาไม่ได้หรือไม่ถูกต้อง

ตรวจพบความขัดแย้งเมื่อตัวอย่างตั้งแต่สองตัวอย่างขึ้นไป:

  • แสดง เจตนาเดียวกัน (ตามคําถามภาษาธรรมชาติเวอร์ชันมาตรฐาน) แต่อ้างอิง ตารางหรือมุมมองที่แตกต่างกัน
  • คํานวณ เมตริกเดียวกัน โดยใช้ ตรรกะการรวมที่แตกต่างกัน หรือ ระดับความละเอียดที่แตกต่างกัน
  • สร้างคิวรี SQL ที่จะส่งคืน ผลลัพธ์ที่แตกต่างกันอย่างมีนัยสําคัญ สําหรับคําถามทางธุรกิจเดียวกัน

ความขัดแย้งเหล่านี้บ่งชี้ถึงความคลุมเครือหรือความไม่สอดคล้องกันภายในตัวอย่างการยิงไม่กี่ภาพ การแก้ไขจะช่วยปรับปรุงการกําหนดแบบสอบถาม ความถูกต้อง และพฤติกรรมโดยรวมของตัวแทน

ตรวจสอบรายละเอียดความขัดแย้ง

เมื่อตรวจพบข้อขัดแย้ง SDK จะขยายความขัดแย้งแต่ละรายการออกเป็นแถวต่อตัวอย่าง โดยให้การวินิจฉัยโดยละเอียด ซึ่งรวมถึง

  • ตัวอย่างที่เกี่ยวข้องกับความขัดแย้ง
  • คําถามภาษาธรรมชาติและ SQL ที่สอดคล้องกันสําหรับแต่ละตัวอย่าง
  • คําอธิบายของความขัดแย้งที่อธิบายว่าตัวอย่างแตกต่างกันอย่างไร
  • คะแนนความเชื่อมั่นที่บ่งชี้ถึงความน่าเชื่อถือของการตรวจหาข้อขัดแย้ง

ใช้มุมมองโดยละเอียดนี้เพื่อทําความเข้าใจว่าตัวอย่างใดที่ขัดแย้งกันและเพราะเหตุใด และเพื่อพิจารณาว่าตัวอย่างใดควรได้รับการปรับปรุงหรือลบออก

# Display conflict summary
print(f"\nConflicts Detected: {result.conflict_count}")
print("Confidence Ratings: 5=High, 4=Medium, 3=Low, 2=Very Low, 1=Speculative\n")

# Access detailed conflict information as a pre-computed DataFrame
if result.conflict_count > 0:
    conflict_details_df = result.conflict_details
    display(conflict_details_df)
else:
    print("No conflict details to display.")

ตัวอย่างต่อไปนี้แสดงผลลัพธ์การตรวจหาข้อขัดแย้ง คําถามที่เกี่ยวข้องและ SQL และระดับความเชื่อมั่นของแต่ละข้อขัดแย้งที่ตรวจพบ

ภาพหน้าจอของการตรวจจับความขัดแย้ง

ทําความเข้าใจคะแนนของผู้ตรวจสอบความถูกต้อง

เมื่อคุณเรียกใช้ตัวตรวจสอบความถูกต้องในคิวรีตัวอย่างของคุณ จะสร้างคะแนนหลักสามคะแนนสําหรับแต่ละตัวอย่าง: ความชัดเจน ความเกี่ยวข้อง และการแม็ป คะแนนเหล่านี้ได้มาจากคําถามภาษาธรรมชาติและแบบสอบถาม SQL ของคุณสอดคล้องกับแนวทางปฏิบัติที่ดีที่สุด

  • ความชัดเจน
    วัดว่าคําถามภาษาธรรมชาติมีความ ชัดเจนและไม่คลุมเครือหรือไม่ คําถามควรมีความเฉพาะเจาะจง รวมถึงเมตริก กรอบเวลา และตัวกรองที่จําเป็น และหลีกเลี่ยงการใช้ถ้อยคําที่คลุมเครือหรือมีเจตนาหลายข้อ

    ตัวอย่าง – ดี: "รายได้รวมตามภูมิภาคสําหรับปี 2024"
    ตัวอย่าง – ต้องการการปรับปรุง: "แสดงประสิทธิภาพ"

  • ความเกี่ยวข้อง
    ประเมินว่าคิวรี SQL ตรงกับ เจตนาของคําถามภาษาธรรมชาติมากน้อยเพียงใด SQL ควรส่งคืนเมตริกที่ถูกต้อง ใช้ตัวกรองที่เหมาะสม และตรงกับความละเอียดที่ร้องขอ

    ตัวอย่าง – ดี: คําถามถามจํานวนลูกค้าในเดือนมีนาคม 2025 → SQL นับลูกค้าด้วยWHERE month='2025-03'
    ตัวอย่าง – ต้องการการปรับปรุง: คําถามจะขอ จํานวน แต่ SQL จะส่งกลับ SUM(revenue) หรือกรองช่วงเวลาอื่น

  • การทําแผนที่
    ตรวจสอบว่า สัญพจน์ทั้งหมดในคําถามภาษาธรรมชาติปรากฏในแบบสอบถาม SQL หรือไม่ ทุกตัวเลข วันที่ หรือหมวดหมู่ที่กล่าวถึงในคําถามควรแสดงอย่างชัดเจนใน SQL

    ตัวอย่าง – ดี: "คําสั่งซื้อมากกว่า 100 รายการในเดือนมีนาคม 2025 สําหรับ 'ตะวันตก'" → SQL ประกอบด้วย > 100, 2025-03, และ 'West'.
    ตัวอย่าง – ต้องการการปรับปรุง: SQL ขาดหนึ่งในสัญพจน์เหล่านั้น (ตัวอย่างเช่น ไม่มีตัวกรองเดือน)

ตัวอย่างจะถือว่า มีคุณภาพสูง ก็ต่อเมื่อ คะแนนทั้งสาม ได้แก่ ความชัดเจน ความเกี่ยวข้อง และการแมปเป็นบวก ใช้คะแนนเหล่านี้เพื่อปรับแต่งคิวรีตัวอย่างของคุณ: เขียนคําถามที่ไม่ชัดเจนใหม่ จัดแนว SQL ให้ใกล้เคียงกับเจตนาของคําถามมากขึ้น และตรวจสอบให้แน่ใจว่าทุกสัญพจน์ในคําถามปรากฏในคิวรี SQL กระบวนการวนซ้ํานี้ช่วยให้ตัวแทนข้อมูลเรียนรู้จากรูปแบบที่ดีขึ้นและให้ผลลัพธ์ที่แม่นยํายิ่งขึ้น

ขั้นตอนถัดไป