AI และ LLMแอปพลิเคชัน LLMแผน Performance และ Scale

Semantic Response Caching

แคชคำตอบของ LLM ตามความหมาย ไม่ใช่ตามข้อความที่ตรงกันทุกตัวอักษร คำถามที่เปลี่ยนคำพูดจึงเจอแคชและข้ามการเรียกโมเดลได้

การค้นหาก่อนการเรียกโมเดลทุกครั้ง
1
เมตริกความคล้าย
3
แทนที่เกณฑ์ได้
ต่อการเรียก
ขั้นที่ 1 จาก 6
สร้าง namespace

ตั้งขนาด embedding และค่าความคล้ายที่ถือว่าเจอแคช

เซสชันตัวอย่างplaying
# สร้าง namespace
hotkv> SCACHE.CREATE support_bot 1536 THRESHOLD 0.92
OK

ตัวอย่างแบบแอนิเมชันพร้อมคำสั่ง HotKV จริงและคำตอบตัวอย่าง คลิกขั้นตอนใดก็ได้เพื่อข้ามไปยังขั้นนั้น คำสั่งและคำตอบยังคงเป็นภาษาอังกฤษ ตรงตามที่คุณพิมพ์และเห็นใน HotKV

ปัญหา

ผู้ช่วยซัพพอร์ตได้รับคำถามเดิมที่เรียบเรียงเป็นร้อยแบบ แคชแบบตรงกันทุกตัวอักษรพลาดแทบทั้งหมด ทุกคำถามที่เปลี่ยนคำพูดจึงต้องจ่ายค่าเรียกโมเดลเต็มจำนวนและรอคำตอบทั้งหมด

HotKV จัดการอย่างไร

Semantic cache เก็บคำตอบแต่ละข้อไว้ข้างๆ embedding ของคำถามของมัน และค้นหาคำถามใหม่ตามความคล้าย หากพรอมต์ใหม่ใกล้เคียงกับข้อที่คุณเคยตอบแล้วมากพอ คำตอบที่เก็บไว้จะถูกส่งกลับ และไม่มีการเรียกโมเดล เกณฑ์เป็นตัวกำหนดว่าใกล้เคียงแค่ไหนจึงถือว่าพอ

ทีละขั้นตอน

เกิดอะไรขึ้นบ้าง ทีละคำสั่ง

  1. 01

    สร้าง namespace

    ตั้งขนาด embedding และค่าความคล้ายที่ถือว่าเจอแคช

    SCACHE.CREATE support_bot 1536 THRESHOLD 0.92
  2. 02

    ไม่พบ จึงเรียกโมเดลหนึ่งครั้ง

    ครั้งแรกที่ถามคำถามนี้ ไม่มีอะไรที่คล้ายกันในแคช โมเดลจึงเป็นผู้ตอบ

    SCACHE.GET support_bot 0.013 -0.21 0.88 ...
  3. 03

    จดจำคำตอบ

    เก็บคำถาม คำตอบ และ embedding ของคำถามไว้หนึ่งวัน

    SCACHE.SET support_bot "How do I reset my password?" "Open Settings > Security." 0.013 -0.21 0.88 ... TTL 86400
  4. 04

    คำถามที่เปลี่ยนคำพูดเจอแคช

    “forgot my login pass” อยู่ใกล้กับคำถามที่เก็บไว้ คำตอบและค่าความคล้ายถูกส่งกลับมา และข้ามโมเดลไป

    SCACHE.GET support_bot 0.011 -0.19 0.87 ...
  5. 05

    เข้มงวดขึ้นสำหรับการค้นหาหนึ่งครั้ง

    การค้นหาขอให้จับคู่ใกล้กว่าค่าเริ่มต้นของ namespace ได้ สำหรับคำตอบที่การจับคู่เฉียดฉิวนั้นไม่เพียงพอ

    SCACHE.GET support_bot 0.2 0.4 0.1 ... THRESHOLD 0.99
  6. 06

    วัดส่วนที่ประหยัดได้

    สถิติต่อ namespace แสดงว่าแคชตอบแทนโมเดลบ่อยเพียงใด

    SCACHE.STATS support_bot
เหมาะกับงานแบบไหน

สถานการณ์จริง

ซัพพอร์ตลูกค้า

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

บอตความรู้ภายในองค์กร

พนักงานถามเรื่องวันหยุด ค่าใช้จ่าย และการเข้าถึง VPN ด้วยคำพูดของตนเอง คำตอบเดียวรองรับทั้งหมดจนกว่าจะหมดอายุ

เครื่องมือสำหรับนักพัฒนา

“How do I paginate?” และ “how to page through results” ได้คำตอบในเอกสารเดียวกันโดยไม่ต้องเรียกโมเดลครั้งที่สอง

อยู่ในตัว

สิ่งที่คุณได้รับ

จับคู่ด้วยความหมาย

คำถามที่คล้ายกันใช้คำตอบที่แคชไว้ร่วมกัน ไม่ว่าจะเรียบเรียงอย่างไร

SCACHE.GETSCACHE.SET

คุณควบคุมความเข้มงวดได้

ตั้งเกณฑ์ต่อ namespace และแทนที่ในการค้นหาครั้งเดียวได้

SCACHE.THRESHOLD

การประหยัดที่วัดได้

สถิติต่อ namespace แสดงจำนวนที่เจอ ที่ไม่พบ และจำนวนรายการ

SCACHE.STATS

Cosine, L2 หรือ inner product

เลือกเมตริกที่ตรงกับโมเดล embedding ของคุณตอนสร้าง namespace

SCACHE.CREATE
ข้อมูลอ้างอิง:SCACHE.CREATESCACHE.GETSCACHE.SET

คำถามที่พบบ่อย

การเจอแคชหนึ่งครั้งมีต้นทุนเท่าใด

การเรียก embedding หนึ่งครั้งและการค้นหาในแคช การเรียกโมเดลและเวลาที่ใช้สร้างคำตอบถูกข้ามไป

จะหลีกเลี่ยงคำตอบผิดจากการจับคู่หลวมๆ ได้อย่างไร

เพิ่มเกณฑ์ เกณฑ์ที่สูงขึ้นต้องการการจับคู่ที่ใกล้กว่า คำถามที่เจอแคชจึงน้อยลงและแต่ละครั้งมั่นใจได้มากขึ้น

แผนไหนรวมฟีเจอร์นี้

Semantic cache อยู่ในแผน Performance และ Scale

กรณีใช้งานที่เกี่ยวข้อง

ลองกับเวิร์กโหลดของคุณเอง

HotKV ใช้โปรโตคอลของ Redis คุณจึงชี้ไคลเอนต์ที่มีอยู่มาที่ HotKV แล้วรันคำสั่งเดียวกันนี้ได้