12 คะแนน โดย xguru 2024-07-03 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ชุดไปป์ไลน์ข้อมูลและการแปลงข้อมูลที่ออกแบบมาเพื่อใช้ความสามารถอันทรงพลังของ LLM ในการดึงข้อมูลเชิงโครงสร้างที่มีความหมายออกจากข้อความไม่มีโครงสร้าง
  • แนวทางแบบกราฟที่ทำให้สามารถถาม-ตอบกับชุดข้อมูลที่ไม่เคยเห็นมาก่อนได้
  • เป็นเครื่องมือที่เคยเปิดตัวในเดือนกุมภาพันธ์ และตอนนี้เปิดเป็นโอเพนซอร์สเพื่อมอบการค้นคืนข้อมูลที่มีโครงสร้างมากขึ้นและการสร้างคำตอบที่ครอบคลุม

ฟีเจอร์หลัก

  • ใช้โมเดลภาษาขนาดใหญ่ (LLM) เพื่อดึง knowledge graph ที่มีรายละเอียดอย่างอัตโนมัติจากชุดเอกสารข้อความ
  • ดัชนีข้อมูลแบบกราฟนี้สามารถสะท้อนโครงสร้างเชิงความหมายของข้อมูลได้ก่อนที่ผู้ใช้จะส่งคำค้น
  • ตรวจจับ "community" ของโหนดที่เชื่อมโยงกันอย่างหนาแน่นในลักษณะเชิงลำดับชั้น เพื่อแบ่งกราฟออกเป็นหลายระดับตั้งแต่หัวข้อระดับสูงไปจนถึงหัวข้อระดับล่าง
  • เมื่อใช้ LLM สรุปแต่ละ community เหล่านี้ จะได้บทสรุปแบบลำดับชั้นของชุดข้อมูล ทำให้เข้าใจชุดข้อมูลได้โดยไม่จำเป็นต้องรู้ล่วงหน้าว่าควรถามอะไร
  • แต่ละ community ทำหน้าที่เป็นรากฐานของบทสรุป community ที่อธิบายเอนทิตีและความสัมพันธ์ที่เกี่ยวข้อง

ข้อดีของคำตอบสำหรับคำถามที่ครอบคลุมทั้งชุดข้อมูล

  • "บทสรุป community" เหล่านี้ช่วยตอบคำถามระดับ global (คำถามที่ครอบคลุมทั้งชุดข้อมูล) ซึ่งแนวทาง naive RAG ที่อิง vector search ยังทำได้ไม่ดีอย่างไร?
  • ตัวอย่างเช่น คำถามอย่าง "หัวข้อหลักของชุดข้อมูลคืออะไร?" มักทำให้ naive RAG ให้คำตอบที่ทำให้เข้าใจผิดอยู่เสมอ
  • การตอบคำถามระดับ global จำเป็นต้องพิจารณาข้อความนำเข้าทั้งหมด
  • บทสรุป community สามารถตอบคำถามระดับ global เหล่านี้ได้โดยใช้แนวทาง map-reduce ที่คงเนื้อหาที่เกี่ยวข้องทั้งหมดของบริบทข้อมูลระดับ global เอาไว้:
    1. จัดกลุ่มรายงาน community ตามขนาด context window ของ LLM
    2. แมปคำถามไปยังแต่ละกลุ่มเพื่อสร้างคำตอบระดับ community
    3. รีดิวซ์คำตอบระดับ community ที่เกี่ยวข้องทั้งหมดให้เป็นคำตอบระดับ global สุดท้าย

การประเมินและผลลัพธ์

  • เพื่อเปรียบเทียบแนวทางนี้กับ naive RAG และการสรุป source text แบบลำดับชั้น จึงใช้ LLM GPT-4 สร้างคำถามหลากหลายแบบที่เน้นการทำความเข้าใจเชิงกิจกรรม
  • เลือกตัวชี้วัดการประเมิน 3 แบบสำหรับคำตอบที่สร้างขึ้น: comprehensiveness (ครอบคลุมทุกแง่มุมอย่างละเอียด), diversity (ให้มุมมองที่หลากหลาย), empowerment (สนับสนุนการตัดสินใจอย่างมีข้อมูล)
  • GraphRAG แสดงประสิทธิภาพเหนือกว่า naive RAG ในด้าน comprehensiveness และ diversity (~อัตราชนะ 70-80%)
  • นอกจากนี้ GraphRAG ยังทำผลงานได้ดีกว่าการสรุป source text โดยใช้ต้นทุนโทเค็นต่ำกว่าในด้านเหล่านี้ เมื่อใช้บทสรุป community ระดับกลางและระดับล่าง (~ใช้โทเค็นต่อคำค้น 20-70%)
  • สำหรับ community ระดับสูงสุด พบว่ามีประสิทธิภาพแข่งขันได้กับการสรุป source text แบบลำดับชั้น และมีต้นทุนโทเค็นต่ำกว่ามาก (~ใช้โทเค็นต่อคำค้น 2-3%)

อินไซต์จากงานวิจัยและทิศทางในอนาคต

  • จากรอบการวิจัยเบื้องต้น ได้พิสูจน์ว่า LLM สามารถสร้าง knowledge graph ที่มีรายละเอียดจากอินพุตข้อความไม่มีโครงสร้างได้สำเร็จ
  • กราฟเหล่านี้สามารถรองรับคำค้นระดับ global รูปแบบใหม่ที่ naive RAG ไม่สามารถสร้างคำตอบที่เหมาะสมได้ และการสรุป source text แบบลำดับชั้นมีต้นทุนสูงเกินไป
  • ขณะนี้กำลังสำรวจแนวทางหลากหลายเพื่อลดต้นทุนเหล่านี้ โดยยังคงต้นทุนล่วงหน้าของการสร้างดัชนีกราฟไว้
  • งานล่าสุดเกี่ยวกับการปรับ prompt สำหรับการสกัดข้อมูลด้วย LLM ให้เข้ากับโดเมนปัญหาโดยอัตโนมัติ เป็นตัวอย่างของวิธีลดงานล่วงหน้าที่จำเป็นสำหรับการปรับแต่ง prompt เหล่านี้ การระบุประเภทเอนทิตี และการสร้างตัวอย่างแบบ few-shot
  • เป้าหมายคือทำให้แนวทาง RAG แบบกราฟเข้าถึงได้ง่ายขึ้นสำหรับผู้ใช้และกรณีใช้งานที่การทำความเข้าใจข้อมูลแบบองค์รวมมีความสำคัญ โดยเปิดให้ GraphRAG และตัวเร่งการพัฒนาโซลูชันใช้งานได้สาธารณะ

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

 
xguru 2024-07-04
ความเห็นบน Hacker News
  • โปรเจกต์ GraphRAG ของ Microsoft ใช้วิธีสร้าง knowledge graph ได้แม้ไม่มีไลบรารีสำหรับ extraction รุ่นใหม่

    • อาจเป็นเพราะโมเดลอย่าง GPT-4 ทำตามคำสั่งเรื่องรูปแบบที่กำหนดไว้ได้ดี
    • ให้ตัวอย่างเพื่อให้ทำตามสคีมาที่ต้องการ
  • ดีใจมากที่ Microsoft เปิดซอร์ส GraphRAG

    • วางแผนจะลองใช้ GraphRAG กับ Llama3 บน MacBook
    • คิดว่าเครื่องมือนี้อาจเป็นตัวเปลี่ยนเกมได้
  • มีการแชร์ลิงก์สำหรับคนที่กำลังมองหาข้อมูลเพิ่มเติมเกี่ยวกับ GraphRAG Method

  • โปรเจกต์ GraphRAG แสดงให้เห็นว่า vector database สามารถมอบโซลูชัน RAG ที่สมบูรณ์สำหรับคำค้นหาที่ซับซ้อนได้

    • การโหลดข้อความเข้า LLM อย่างเดียวไม่เพียงพอสำหรับการสร้าง knowledge graph ที่แม่นยำ
    • จึงเขียน GraphRAG-SDK เพื่อสร้าง ontology ที่เสถียร
  • knowledge graph ไม่ได้มาแทนที่ semantic search แบบดั้งเดิม แต่เพิ่มความสามารถใหม่เมื่อนำไปใช้กับ RAG

    • สามารถสำรวจบริบทที่ยาว หรือสำรวจบริบทอื่น ๆ ได้อย่างสม่ำเสมอและมีประสิทธิภาพ
    • ผลลัพธ์ที่เคยลองจากการสร้างกราฟด้วย LLM ยังไม่ดีพอ
    • กำลังตั้งตารอที่จะลองสิ่งนี้
  • ถ้าเข้าใจงานวิจัยถูกต้อง ตอนทำ indexing จะรัน LLM หลายรอบเพื่อดึง entity และสร้าง graph index

    • รันกราฟหลายครั้งเพื่อสร้างคลัสเตอร์
    • ตอน query จะรันทุกคลัสเตอร์เพื่อสร้างคำตอบและให้คะแนนจากแต่ละคลัสเตอร์
    • จากนั้นนำทุกคำตอบยกเว้นคำตอบที่ได้คะแนนต่ำสุดมาประมวลผลเพื่อสร้าง "คำตอบแบบรวม"
    • ความต้องการด้านการคำนวณแบบนี้อาจสูงเกินรับไหวสำหรับชุดข้อมูลขนาดใหญ่
  • เคยทำโปรเจกต์เล็ก ๆ หลายงานโดยใช้กราฟกับ LLM และยืนยันได้ว่าแนวทางนี้ใช้ได้ผล

    • ตระหนักว่าจะแก้ปัญหาได้ด้วย prompt engineering และการทำหลายรอบ
    • จะลองดู และถ้าผลออกมาดีก็จะพยายามออกจากสภาพแวดล้อม Python
  • สงสัยว่าเกี่ยวข้องกับ Knowledge Graph RAG Query engine ของ LlamaIndex หรือไม่

  • น่าสนใจที่เลือกสงครามรัสเซีย-ยูเครนมาเป็นตัวอย่าง

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

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