- Benchling ดูแลโครงสร้างพื้นฐานบนคลาวด์ในหลายภูมิภาคและหลายสภาพแวดล้อม
- ใช้ Terraform Cloud ในการจัดการทรัพยากรมากกว่า 160,000 รายการ และในหนึ่งเดือนมีวิศวกรประมาณ 50 คนปล่อยการเปลี่ยนแปลงโครงสร้างพื้นฐาน
- มีเอกสาร FAQ ขนาดใหญ่ (20 หน้า) และบันทึก thread ของ Slack อยู่ แต่ปัญหาหลักคือการค้นหาที่ไม่ค่อยมีประสิทธิภาพ
- เพื่อแก้ปัญหานี้ได้สร้าง Slackbot โดยใช้ RAG LLM
เป้าหมายการสร้าง
- พัฒนา Slackbot ภายใน เพื่อแก้คำถามเกี่ยวกับ Terraform Cloud ได้แบบเรียลไทม์
- รวมแหล่งข้อมูลภายในและภายนอก แล้วตอบกลับผ่านอินเทอร์เฟซ Slack ที่ผู้ใช้คุ้นเคย
- กรณีการใช้งานที่เป็นไปได้:
- การตอบคำถามด้าน HR
- การค้นหากรณีการแก้ไขปัญหาของลูกค้า
- การอธิบายรหัสข้อผิดพลาดของซอฟต์แวร์
หลักการทำงาน
- วิเคราะห์คำถามผู้ใช้: ค้นหาข้อมูลที่เกี่ยวข้องจากฐานข้อมูล
- สร้าง 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
แผนการปรับปรุง
- เพิ่มลิงก์แหล่งที่มา: ใส่ที่มาของเอกสารในคำตอบ Slack
- บันทึก Slack thread อัตโนมัติ: อัปเดตฐานข้อมูลผ่านคำสั่ง
@help-terraform-cloud 기억해줘
- ทำให้การซิงก์ข้อมูลอัตโนมัติ: ใช้ CloudWatch Events เพื่อซิงก์ข้อมูลแบบรายสัปดาห์
- ใช้ Confluence API: เปลี่ยนจากการอัปโหลด PDF แบบ manual เป็นการเชื่อมต่อผ่าน API
- รองรับการสนทนาหลายรอบ: รักษาบริบทการสนทนากับผู้ใช้แบบต่อเนื่อง
สิ่งที่ได้เรียนรู้ในการสร้าง
- กลยุทธ์การแบ่งชิ้นข้อมูล:
- เริ่มต้นด้วยชิ้นข้อมูล 300 โทเค็น (ประมาณ 1 ย่อหน้า) ก่อนปรับเป็น 1,500 โทเค็น (ประมาณ 5 ย่อหน้า) เพื่อให้คำตอบยาวไม่ถูกตัด
- ประสิทธิภาพการ parse PDF:
- ข้อมูลที่ไม่ใช่ภาพและเป็นข้อความสามารถดึงออกมาได้อย่างเสถียร
- ความง่ายในการตั้งค่า knowledge base:
- ใช้ Amazon Bedrock สร้างระบบได้ภายในเวลาไม่กี่นาที
กรณีการใช้งาน
- การค้นหา FAQ และรหัสข้อผิดพลาด
- การตอบคำถามซ้ำอัตโนมัติ
- การใช้ชุดข้อมูลเฉพาะสำหรับแต่ละทีม:
- ประวัติการสนทนา เอกสารสาธารณะ ฯลฯ
ข้อพิจารณาด้านความปลอดภัย
- ประเมินความเสี่ยงด้านความละเอียดอ่อนของข้อมูลและความเสี่ยงจากผลลัพธ์ที่ผิดพลาด
- ตรวจสอบให้แน่ใจว่ารายการโมเดลได้รับการอนุมัติจากองค์กร
สรุป
- Slackbot ที่ใช้ LLM แสดงให้เห็นถึงความเป็นไปได้ในการพัฒนาโปรโตไทป์ได้อย่างรวดเร็ว
- การทดลองเทคโนโลยีใหม่สามารถช่วยเพิ่มประสิทธิภาพและผลผลิตได้
- จากกรณีนี้ คุณก็สามารถสร้างเครื่องมือที่ใช้ LLM ได้เช่นกัน!
ยังไม่มีความคิดเห็น