ทาง Anthropic ซึ่งเป็นเจ้าของ Claude.AI นั่นเอง
ได้เขียนบทความเรื่อง Introducing Contextual Retrieval
อธิบายเรื่องของการปรับปรุงความสามารถของ AI Model ต่าง ๆ
ด้วยแนวคิด Retrieval-Augmented Generation (RAG)
โครงสร้างของ RAG เป็นดังนี้
โดยในบทความได้แนะนำสำหรับ Anthropic ไว้ดังนี้
แบบที่ 1
ถ้าข้อมูลที่ต้องการเพิ่ม หรือ knowledge ไม่มากนัก
ซึ่งไม่เกิน 200,000 token หรือเอกสาร 500 หน้า
สามารถตรวจสอบผ่าน Token counter ได้เลย
ทำการส่งข้อมูลเหล่านี้ไปในส่วนของ context ใน user prompt ปกติได้เลย
แต่ถ้ากลัวว่าถ้ามีหลาย ๆ prompt ที่ใช้ข้อมูลเดิม
สามารถใช้งานผ่าน feature Prompt caching
ที่ทาง Anthropic เพิ่งปล่อยออกมาใน beta version
สามารถช่วยลดค่ายใช้จ่ายลงไปได้เยอะมาก ๆ
โดยที่อื่น ๆ เช่น Gemini ก็มีให้ใช้งานด้วย
แบบที่ 2
ถ้าข้อมูลมีขนาดที่ใหญ่มาก ๆ เกินแบบที่ 1
สามารถทำการ pre-processing ข้อมูลก่อน มีขั้นตอนดังนี้
- ทำการแบ่งข้อมูลเป็น chunk เล็ก ๆ
- สร้าง embedding model จาก check เล็ก ๆ เพื่อจัดเก็บใน Vector database
- สร้าง TF-IDF(Term Frequency Inverse Document Frequency of records เพื่อจัดเก็บในการค้นหา หรือ ranking ข้อมูล
- เมื่อต้องส่ง user prompt ไปจะนำข้อมูลจากทั้งสองที่ไปใส่ เพื่อให้ได้ผลลัพธ์ที่ถูกต้องมากยิ่งขึ้น
- เมื่อได้ผลลัพธ์กลับมา จะทำการ ranking หรือ เรียงลำดับกลับออกมา
แสดงการทำงานดังรูป
โดยที่ทาง Anthropic ได้เสนอแนวทางปรับปรุงออกมา คือ Contextual Retrieval
ทำการสร้าง Prompt template ออกมาให้ใช้งาน
โดยมีโครงสร้างดังนี้
จากนั้นทางระบบจะจัดการข้อมูลต่าง ๆ ใน pre-processing ให้อัตโนมัติ
และมีการทำ prompt caching ให้เลย
ค่าใช้จ่ายประมาณ 1.02 USD ต่อ 1 ล้าน token
ดังรูป
ตัวอย่างของการสร้าง Prompt พร้อมใช้งาน caching
[gist id="39d846a3d826dbbb456efe9e1d604835" file="demo.py"]โดยแนวทางนี้ช่วยปรับปรุงความถูกต้องของผลลัพธ์มากขึ้น
รวมทั้ง performance ที่ดีขึ้น
เป็นอีกแนวทางที่น่าสนใจมาก ๆ