3 คะแนน โดย GN⁺ 2024-09-22 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

แนะนำ Contextual Retrieval

  • เพื่อให้โมเดล AI มีประโยชน์ในบริบทเฉพาะ จำเป็นต้องมีความรู้พื้นหลัง
  • แชตบอตสนับสนุนลูกค้าจำเป็นต้องมีความรู้เกี่ยวกับธุรกิจเฉพาะนั้น และบอตวิเคราะห์กฎหมายจำเป็นต้องมีความรู้มหาศาลเกี่ยวกับคดีในอดีต
  • โดยทั่วไปนักพัฒนาจะใช้ Retrieval-Augmented Generation (RAG) เพื่อเพิ่มพูนความรู้ของโมเดล AI
  • โซลูชัน RAG แบบดั้งเดิมมักลบบริบทออกระหว่างการเข้ารหัสข้อมูล จึงมักไม่สามารถค้นคืนข้อมูลที่เกี่ยวข้องได้

วิธีการของ Contextual Retrieval

  • Contextual Retrieval เป็นวิธีที่ปรับปรุงขั้นตอนการค้นคืนของ RAG อย่างมาก
  • ใช้เทคนิคย่อยสองอย่างคือ Contextual Embeddings และ Contextual BM25
  • ลดจำนวนการค้นคืนที่ล้มเหลวได้ 49% และเมื่อรวมกับการ re-ranking จะลดได้สูงสุดถึง 67%
  • สามารถนำโซลูชัน Contextual Retrieval ไปใช้งานได้อย่างง่ายดายด้วย Claude

การใช้พรอมป์ต์ที่ยาวขึ้นแบบตรงไปตรงมา

  • หากฐานความรู้มีขนาดไม่เกิน 200,000 โทเคน การส่งฐานความรู้ทั้งหมดให้โมเดลอาจเป็นวิธีที่ดีกว่า
  • เมื่อใช้ฟีเจอร์ prompt caching ของ Claude แนวทางนี้จะเร็วกว่าและคุ้มค่ากว่า
  • เมื่อฐานความรู้มีขนาดใหญ่ขึ้น ก็จำเป็นต้องมีโซลูชันที่ขยายขนาดได้ดีกว่า

แนวคิดพื้นฐานของ RAG

  • RAG ใช้สำหรับจัดการฐานความรู้ขนาดใหญ่
  • ระบบจะแบ่งฐานความรู้ออกเป็นชิ้นข้อความขนาดเล็ก และใช้โมเดล embedding เพื่อเข้ารหัสความหมาย
  • จากนั้นจัดเก็บไว้ในฐานข้อมูลเวกเตอร์เพื่อค้นคืนตามความคล้ายคลึงเชิงความหมาย
  • BM25 มีประสิทธิภาพในการค้นหาคำหรือวลีที่ตรงกันแบบเป๊ะ

ข้อจำกัดของ RAG แบบดั้งเดิม

  • กระบวนการแบ่งเอกสารออกเป็นชิ้นเล็ก ๆ อาจทำลายบริบทได้
  • ตัวอย่างเช่น สำหรับคำถามที่ค้นหาข้อมูลการเงินของบริษัทแห่งหนึ่ง อาจมีการส่งคืนชิ้นข้อมูลที่ไม่มีบริบทเพียงพอ

การใช้งาน Contextual Retrieval

  • เพิ่มบริบทเชิงอธิบายให้กับแต่ละชิ้นข้อมูลเพื่อสร้างดัชนี embedding และ BM25
  • ใช้ Claude เพื่อสร้างบริบทแบบกระชับสำหรับแต่ละชิ้นข้อมูล
  • สามารถลดต้นทุนได้ด้วยการใช้ prompt caching

การปรับปรุงประสิทธิภาพ

  • Contextual Embeddings ลดอัตราความล้มเหลวในการค้นคืนได้ 35%
  • เมื่อรวม Contextual Embeddings และ Contextual BM25 เข้าด้วยกัน จะลดอัตราความล้มเหลวในการค้นคืนได้ 49%

ข้อพิจารณาในการนำไปใช้

  • ควรพิจารณาวิธีแบ่งเอกสารเป็นชิ้น การเลือกโมเดล embedding และพรอมป์ต์ contextualization แบบกำหนดเอง
  • การรวมชิ้นข้อมูลให้มากขึ้นจะเพิ่มโอกาสในการครอบคลุมข้อมูลที่เกี่ยวข้อง

การเพิ่มประสิทธิภาพด้วย re-ranking

  • การ re-ranking ช่วยปรับปรุงคุณภาพคำตอบด้วยการส่งต่อเฉพาะชิ้นข้อมูลที่เกี่ยวข้องมากที่สุดไปยังโมเดล
  • Contextual Embedding และ Contextual BM25 ที่ผ่านการ re-ranking แล้ว ลดอัตราความล้มเหลวในการค้นคืนได้ 67%

บทสรุป

  • การรวม Embeddings และ BM25 เข้าด้วยกันช่วยให้ได้ผลลัพธ์ที่ดีกว่า
  • embedding ของ Voyage และ Gemini มีประสิทธิภาพมากที่สุด
  • การส่งชิ้นข้อมูล 20 อันดับแรกไปยังโมเดลมีประสิทธิภาพสูงสุด
  • การเพิ่มบริบทช่วยปรับปรุงความแม่นยำในการค้นคืนอย่างมาก
  • การ re-ranking ช่วยเพิ่มประสิทธิภาพได้มากยิ่งขึ้น

สรุปโดย GN⁺

  • Contextual Retrieval เป็นวิธีที่สามารถเพิ่มความแม่นยำในการค้นคืนของโมเดล AI ได้อย่างมาก
  • มีประโยชน์อย่างยิ่งเมื่อต้องจัดการกับฐานความรู้ขนาดใหญ่
  • สามารถนำไปใช้งานได้อย่างคุ้มค่าด้วยฟีเจอร์ prompt caching ของ Claude
  • โปรเจ็กต์อื่นที่มีความสามารถคล้ายกัน ได้แก่ GPT-3 ของ OpenAI และ BERT ของ Google

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

 
GN⁺ 2024-09-22
ความเห็นจาก Hacker News
  • ความเห็นแรก

    • แชร์ประสบการณ์สร้าง RAG ระดับองค์กรสำหรับหน่วยงานภาครัฐ
    • ผลการทดสอบ A/B โดยใช้ตัวชี้วัด RAGAS:
      • การค้นหาแบบไฮบริด (semantic + vector) และการจัดอันดับใหม่ด้วย LLM แทบไม่ทำให้เกิดความเปลี่ยนแปลงในคำถามประเมินแบบสังเคราะห์
      • HyDE ทำให้คุณภาพคำตอบและคุณภาพการค้นหาแย่ลงอย่างมากในคำถามประเมินแบบสังเคราะห์
    • การค้นหาแบบไฮบริดมีประโยชน์เสมอ แต่ไม่มีวิธีเดียวที่ชนะตลอด
    • semantic search ของ Azure AI Search มีประสิทธิภาพเพียงพอเมื่อใช้ร่วมกับ vector similarity
    • จำเป็นต้องทดสอบหลายวิธี
    • สิ่งที่จะลองต่อไป:
      • RAPTOR
      • SelfRAG
      • Agentic RAG
      • การปรับแต่งคำค้น (การขยายคำค้นและ sub-query)
      • GraphRAG
    • สิ่งที่ได้เรียนรู้:
      • ควรใช้ baseline และการทดลองเสมอเพื่อพยายามหักล้างสมมติฐานศูนย์
      • ใช้คำถาม/คำตอบสำหรับการประเมิน 3 ประเภท: ผู้เชี่ยวชาญเขียน, คำถามจากผู้ใช้จริง, คำถามแบบสังเคราะห์
  • ความเห็นที่สอง

    • ชอบแนวทางที่ใช้ prompt caching
    • การแคชช่วยลดต้นทุนของพรอมป์ต์ลงเหลือ 1/10
    • การประหยัดต้นทุนจากการแคชทำให้สามารถใช้เทคนิคต่าง ๆ ได้มากขึ้น
    • แชร์โน้ตเกี่ยวกับ contextual search และ prompt caching
  • ความเห็นที่สาม

    • แนวทางใช้ LLM เพื่อขยาย chunk พื้นฐานเพื่อปรับปรุงผลลัพธ์ RAG เป็นเรื่องที่พบได้ทั่วไป
    • การขยายคำค้นด้วย HyDE ไม่ได้ช่วยให้ดีขึ้นเสมอไป
    • สิ่งใหม่ของ Anthropic คือการนำ prompt caching มาใช้
    • prompt caching ช่วยลดต้นทุนโดยใส่เอกสารยาวเข้าไปเป็น context
    • พอใจกับ Cohere API มาก
  • ความเห็นที่สี่

    • ใช้วิธีแบ่งเอกสารเป็น chunk ตามหัวข้อ h1, h2, h3 และเพิ่ม header ไว้ที่ต้น chunk
    • ตัวอย่าง:
      • chunk เดิม: "ขนาดรับประทานทั่วไปสำหรับผู้ใหญ่คือยาเม็ดหรือแคปซูล 200mg จำนวน 1~2 เม็ด วันละ 3 ครั้ง"
      • chunk ใหม่: "# ไข้ ## การรักษา --- ขนาดรับประทานทั่วไปสำหรับผู้ใหญ่คือยาเม็ดหรือแคปซูล 200mg จำนวน 1~2 เม็ด วันละ 3 ครั้ง"
    • วิธีนี้ทำงานได้ดีแม้ไม่ใช้ LLM
  • ความเห็นที่ห้า

    • มีจุดยืนคัดค้านเทคนิคนี้
    • vector embedding อาจให้น้ำหนักมากเกินไปกับบล็อกข้อความแรกก่อนการขึ้นบรรทัดใหม่
    • การค้นหาแบบ IDF ช่วยแก้ได้ระดับหนึ่ง แต่ยังไม่เพียงพอ
    • สามารถใช้ "semantic boost" เพื่อย้าย embedding ไปยังชื่อเรื่อง สรุป และส่วนอื่น ๆ ของเอกสารได้
    • แชร์คำอธิบาย "semantic boost" ของ Trieve API
  • ความเห็นที่หก

    • ใช้กลยุทธ์ "linked list" เพื่อให้ chunk มีหลาย pointer ไปยังรายการที่อ้างอิง
    • อธิบายว่าแต่ละคอมเมนต์ทำหน้าที่เป็น pointer ไปยังโพสต์ต้นฉบับ
    • แชร์ตัวอย่างของเทคนิคนี้
  • ความเห็นที่เจ็ด

    • ข้ออ้างที่ว่าใช้ 200k token แล้วจะได้คำตอบที่ดีที่สุดจากชุดข้อมูลขนาดเล็กนั้นไม่ตรงกับประสบการณ์ของตน
    • ยิ่งพรอมป์ต์ใหญ่ขึ้น เอาต์พุตก็ยิ่งไม่สม่ำเสมอและทำตามคำสั่งได้ยากขึ้น
    • สงสัยว่าคนอื่นมีประสบการณ์คล้ายกันหรือไม่ และมีวิธีหลีกเลี่ยงอย่างไร
  • ความเห็นที่แปด

    • พบปัญหาว่าแทนที่จะค้นหาความรู้ด้วย RAG กลับกลายเป็นการค้นหากฎ
    • เสนอแนวทางฝึก classifier ขนาดเล็กเพื่อพิจารณาว่ากฎบางข้อสามารถนำมาใช้ได้หรือไม่
    • ตัวอย่าง: วิธีตัดสินว่ากฎบางข้อใช้ได้หรือไม่ในเกมมัลติยูสเซอร์ดันเจียน
    • การตัดสินว่ากฎนั้นใช้ได้หรือไม่เป็นปัญหาที่เป็นนามธรรมและยากกว่า
    • กำลังมองหาวิธีแก้ปัญหานี้
  • ความเห็นที่เก้า

    • หาก knowledge base มีขนาดเล็กกว่า 200,000 token (ประมาณ 500 หน้า)
    • หวังว่า Anthropic จะเปิดเผย tokenizer
  • ความเห็นที่สิบ

    • รอวันที่อุตสาหกรรม AI จะวนกลับไปหา TF-IDF อีกครั้ง