• Benchling ดูแลโครงสร้างพื้นฐานบนคลาวด์ในหลายภูมิภาคและหลายสภาพแวดล้อม
    • ใช้ Terraform Cloud ในการจัดการทรัพยากรมากกว่า 160,000 รายการ และในหนึ่งเดือนมีวิศวกรประมาณ 50 คนปล่อยการเปลี่ยนแปลงโครงสร้างพื้นฐาน
  • มีเอกสาร FAQ ขนาดใหญ่ (20 หน้า) และบันทึก thread ของ Slack อยู่ แต่ปัญหาหลักคือการค้นหาที่ไม่ค่อยมีประสิทธิภาพ
  • เพื่อแก้ปัญหานี้ได้สร้าง Slackbot โดยใช้ RAG LLM

เป้าหมายการสร้าง

  • พัฒนา Slackbot ภายใน เพื่อแก้คำถามเกี่ยวกับ Terraform Cloud ได้แบบเรียลไทม์
  • รวมแหล่งข้อมูลภายในและภายนอก แล้วตอบกลับผ่านอินเทอร์เฟซ Slack ที่ผู้ใช้คุ้นเคย
  • กรณีการใช้งานที่เป็นไปได้:
    • การตอบคำถามด้าน HR
    • การค้นหากรณีการแก้ไขปัญหาของลูกค้า
    • การอธิบายรหัสข้อผิดพลาดของซอฟต์แวร์

หลักการทำงาน

  1. วิเคราะห์คำถามผู้ใช้: ค้นหาข้อมูลที่เกี่ยวข้องจากฐานข้อมูล
  2. สร้าง LLM prompt: รวมผลการค้นหาและแนวทางเพื่อสร้างคำตอบ

เทคโนโลยีที่ใช้

  • RAG model: ใช้ Amazon Bedrock
    • ตั้งค่า knowledge base ที่สร้างจากฐานข้อมูล OpenSearch Serverless
    • สร้างคำตอบด้วยโมเดล Claude 3.5 Sonnet v2

แหล่งข้อมูล

  • Confluence: FAQ ของ Terraform Cloud (จัดเก็บเป็น PDF แล้วอัปโหลดขึ้น S3)
  • เว็บ: เอกสาร Terraform Cloud และเอกสารภาษา (language docs) ของ HashiCorp
  • Slack: thread ที่มีปัญหา Terraform Cloud ที่ถูกแก้ไขแล้ว (POC เก็บด้วยตนเอง)
  • ข้อมูลถูกจัดเก็บในฐานข้อมูลเวกเตอร์เพื่อให้ค้นหาได้เมื่อมีการ query

สถาปัตยกรรมการใช้งาน

  • องค์ประกอบ:
    • Slack App
    • AWS API Gateway
    • AWS Lambda (ใช้ Python)
    • AWS Bedrock
    • OpenSearch Serverless (ฐานข้อมูลเวกเตอร์)
  • การใช้โมเดล:
    • Amazon Titan Text Embeddings v2 (สร้าง embeddings)
    • Claude 3.5 Sonnet v2 (สร้างคำตอบ)

ข้อจำกัดและแผนการปรับปรุง

ข้อจำกัด

  • ไม่รองรับการประมวลผลภาพ: ไม่รวมแผนผังสถาปัตยกรรมที่เป็นรูปภาพหรือสกรีนช็อต
  • การรองรับ Terraform จำกัด: ปัจจุบัน Terraform AWS Provider ยังไม่รองรับ Bedrock resources

แผนการปรับปรุง

  1. เพิ่มลิงก์แหล่งที่มา: ใส่ที่มาของเอกสารในคำตอบ Slack
  2. บันทึก Slack thread อัตโนมัติ: อัปเดตฐานข้อมูลผ่านคำสั่ง @help-terraform-cloud 기억해줘
  3. ทำให้การซิงก์ข้อมูลอัตโนมัติ: ใช้ CloudWatch Events เพื่อซิงก์ข้อมูลแบบรายสัปดาห์
  4. ใช้ Confluence API: เปลี่ยนจากการอัปโหลด PDF แบบ manual เป็นการเชื่อมต่อผ่าน API
  5. รองรับการสนทนาหลายรอบ: รักษาบริบทการสนทนากับผู้ใช้แบบต่อเนื่อง

สิ่งที่ได้เรียนรู้ในการสร้าง

  1. กลยุทธ์การแบ่งชิ้นข้อมูล:
    • เริ่มต้นด้วยชิ้นข้อมูล 300 โทเค็น (ประมาณ 1 ย่อหน้า) ก่อนปรับเป็น 1,500 โทเค็น (ประมาณ 5 ย่อหน้า) เพื่อให้คำตอบยาวไม่ถูกตัด
  2. ประสิทธิภาพการ parse PDF:
    • ข้อมูลที่ไม่ใช่ภาพและเป็นข้อความสามารถดึงออกมาได้อย่างเสถียร
  3. ความง่ายในการตั้งค่า knowledge base:
    • ใช้ Amazon Bedrock สร้างระบบได้ภายในเวลาไม่กี่นาที

กรณีการใช้งาน

  • การค้นหา FAQ และรหัสข้อผิดพลาด
  • การตอบคำถามซ้ำอัตโนมัติ
  • การใช้ชุดข้อมูลเฉพาะสำหรับแต่ละทีม:
    • ประวัติการสนทนา เอกสารสาธารณะ ฯลฯ

ข้อพิจารณาด้านความปลอดภัย

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

สรุป

  • Slackbot ที่ใช้ LLM แสดงให้เห็นถึงความเป็นไปได้ในการพัฒนาโปรโตไทป์ได้อย่างรวดเร็ว
  • การทดลองเทคโนโลยีใหม่สามารถช่วยเพิ่มประสิทธิภาพและผลผลิตได้
  • จากกรณีนี้ คุณก็สามารถสร้างเครื่องมือที่ใช้ LLM ได้เช่นกัน!

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น