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

เฟรมเวิร์ก Fast GraphRAG ที่กระชับและสั่งงานผ่านพรอมป์ต์ได้

  • ความรู้ที่ตีความและดีบักได้: กราฟให้มุมมองความรู้ที่มนุษย์สามารถสำรวจได้ และสามารถสืบค้น แสดงภาพ และอัปเดตได้
  • เร็ว ถูก และมีประสิทธิภาพ: ออกแบบมาให้ทำงานได้ในสเกลขนาดใหญ่ โดยใช้ทรัพยากรและต้นทุนต่ำ
  • ข้อมูลแบบไดนามิก: สร้างและปรับปรุงกราฟโดยอัตโนมัติตามโดเมนและความต้องการด้านออนโทโลยี
  • การอัปเดตแบบค่อยเป็นค่อยไป: รองรับการอัปเดตแบบเรียลไทม์เมื่อข้อมูลมีการเปลี่ยนแปลง
  • การสำรวจอย่างชาญฉลาด: ใช้การสำรวจกราฟที่อิง PageRank เพื่อเพิ่มความแม่นยำและความน่าเชื่อถือ
  • รองรับ async และ type: รองรับ async และ type อย่างสมบูรณ์ เพื่อมอบเวิร์กโฟลว์ที่แข็งแรงและคาดการณ์ได้

การติดตั้ง

  • ติดตั้งจาก PyPi (แนะนำ)

    pip install fast-graphrag
    
  • ติดตั้งจากซอร์ส

    # โคลนรีโพซิทอรีนี้ก่อน
    cd fast_graphrag
    poetry install
    

เริ่มต้นอย่างรวดเร็ว

  • ตั้งค่า OpenAI API key ใน environment

    export OPENAI_API_KEY="sk-..."
    
  • ดาวน์โหลด A Christmas Carol ของ Charles Dickens

    curl https://raw.githubusercontent.com/circlemind-ai/fast-graphrag/… > ./book.txt
    
  • ตัวอย่างโค้ด Python

    from fast_graphrag import GraphRAG
    
    DOMAIN = "Analyze this story and identify the characters. Focus on how they interact with each other, the locations they explore, and their relationships."
    EXAMPLE_QUERIES = [
        "What is the significance of Christmas Eve in A Christmas Carol?",
        "How does the setting of Victorian London contribute to the story's themes?",
        "Describe the chain of events that leads to Scrooge's transformation.",
        "How does Dickens use the different spirits (Past, Present, and Future) to guide Scrooge?",
        "Why does Dickens choose to divide the story into \"staves\" rather than chapters?"
    ]
    ENTITY_TYPES = ["Character", "Animal", "Place", "Object", "Activity", "Event"]
    
    grag = GraphRAG(
        working_dir="./book_example",
        domain=DOMAIN,
        example_queries="\n".join(EXAMPLE_QUERIES),
        entity_types=ENTITY_TYPES
    )
    
    with open("./book.txt") as f:
        grag.insert(f.read())
        print(grag.query("Who is Scrooge?").response)
    
  • เมื่อเริ่มต้น fast-graphrag ใหม่อีกครั้งใน working directory เดิม ระบบจะคงความรู้ทั้งหมดไว้โดยอัตโนมัติ

ตัวอย่าง

  • ดูโฟลเดอร์ examples เพื่อดูทิวทอเรียลของกรณีการใช้งานทั่วไปของไลบรารี
    • custom_llm.py: ตัวอย่างง่าย ๆ ของการตั้งค่า fast-graphrag ให้ทำงานร่วมกับ language model และ embedder ที่เข้ากันได้กับ OpenAI API หลากหลายแบบ

การมีส่วนร่วม

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

ปรัชญา

  • ภารกิจของเราคือเพิ่มจำนวนแอปพลิเคชัน GenAI ที่ประสบความสำเร็จในโลก
  • เพื่อสิ่งนี้ เราจึงสร้างเครื่องมือด้าน memory และข้อมูล เพื่อให้แอป LLM สามารถใช้ประโยชน์จากไปป์ไลน์การค้นคืนข้อมูลที่มีความเฉพาะทางสูงได้ โดยไม่ต้องเผชิญกับความซับซ้อนของการตั้งค่าและดูแลเวิร์กโฟลว์แบบเอเจนต์

โอเพนซอร์สหรือบริการแบบ managed

  • รีโพซิทอรีนี้อยู่ภายใต้สัญญาอนุญาต MIT ดูรายละเอียดเพิ่มเติมได้ที่ LICENSE.txt
  • วิธีที่เร็วและเชื่อถือได้ที่สุดในการเริ่มต้นใช้งาน Fast GraphRAG คือการใช้บริการแบบ managed
  • 100 คำขอแรกของทุกเดือนใช้งานฟรี หลังจากนั้นจะคิดค่าบริการตามการใช้งาน

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

 
GN⁺ 2024-11-19
ความคิดเห็นจาก Hacker News
  • การใช้ BM25 ร่วมกับ LLM สามารถให้ผลลัพธ์ที่มีความเกี่ยวข้องสูงมาก

    • เอ็มเบดดิงทำงานได้ดีเมื่อขนาดของคิวรีใกล้เคียงกับขนาดของคลังเก็บเอ็มเบดดิง
    • การใช้ LLM สร้างคำตอบสมมุติแล้วนำไปใช้เป็นคิวรีสำหรับเอ็มเบดดิงมีประสิทธิภาพ
    • ในขั้นตอนการแยกและดึงความรู้ ใช้ meta-prompter เพื่อสร้างประเภทโดเมน/เอนทิตีโดยอัตโนมัติ
    • LLM ไม่เก่งในการแยกความรู้ออกเป็นระดับที่เหมาะสม
    • ใช้ mind map ของ mermaid.js เพื่อแบ่งอินพุตแบบลำดับชั้นและหารูตที่เหมาะสม
    • ทำดัชนีและสร้างเอ็มเบดดิงให้กับคำถามที่สร้างขึ้นเป็นข้อความ
    • สามารถใช้ BM25 จับคู่คิวรีของผู้ใช้ได้โดยตรง และแนวทางแบบไฮบริดให้ผลลัพธ์ที่ดีกว่า
    • หากไม่ใช้ LLM ในช่วง query time ก็สามารถสำรวจแบบลำดับชั้นโดยใช้ความคล้ายคลึงของเอ็มเบดดิงเป็นฟังก์ชันต้นทุนได้
  • PageRank และ Triangle Centrality เป็นตัวชี้วัดความเป็นศูนย์กลางที่น่าสนใจซึ่งนำไปใช้กับกราฟได้

    • Triangle Centrality วัดความเป็นศูนย์กลางโดยนับจำนวนสามเหลี่ยมรอบโหนด
    • งานวิจัยพบว่า TC ช้ากว่า PR ในกราฟแบบเบาบาง แต่มีประสิทธิภาพมากขึ้นเมื่อกราฟมีขนาดใหญ่ขึ้น
  • คิดว่าการค้นคืนข้อมูลแบบดั้งเดิมเหมาะกับ RAG

    • การค้นหาเวกเตอร์มีประโยชน์กับข้อมูลไม่มีโครงสร้าง แต่มีประสิทธิภาพน้อยกว่าสำหรับข้อมูลที่มีโครงสร้าง
    • การแปลงข้อมูลที่มีโครงสร้างให้เป็นข้อมูลไม่มีโครงสร้างเพื่อใช้ค้นหาเวกเตอร์อาจไม่มีประสิทธิภาพ
    • การให้ LLM เรียนรู้คิวรีหรือเชื่อมต่อกับ API การค้นหา/คิวรีที่มีอยู่เดิมอาจมีประโยชน์
    • การใช้คอนเท็กซ์ขนาดใหญ่เพื่อนำผลลัพธ์จำนวนมากกลับมาด้วยหลายคิวรีนั้นเร็วและถูกกว่าการค้นหาเวกเตอร์
  • ต้องการใช้ระบบ GraphRag ในสตาร์ทอัป AI เพื่อวิเคราะห์เอกสารจำนวนมาก

    • คาดว่าเอกสารจะเปลี่ยนแปลงราว 10% ต่อเดือน
    • สามารถใช้ S3 เพื่อรวบรวมข้อมูลได้ แต่ต้องเข้าใจต้นทุนและเวลาในการประมวลผล
  • ข้อสงสัยเกี่ยวกับการที่ PageRank ต้องใช้ OpenAI API key

    • มีข้อจำกัดว่าไม่สามารถใช้ผลลัพธ์จาก OpenAI เพื่อพัฒนาโมเดลคู่แข่งได้
    • ความกังวลเกี่ยวกับภาวะถดถอยทางเศรษฐกิจของมนุษย์ทั่วไป
  • คำถามเกี่ยวกับวิธีจัดเก็บและคิวรีกราฟโดยไม่ใช้ฐานข้อมูลกราฟ

    • เคยลองดึงข้อมูลด้วยโมเดล sciphi triplex แล้วพบผลลัพธ์ที่ไม่สม่ำเสมอ
  • คำถามเกี่ยวกับปริมาณข้อความที่จำเป็นสำหรับการสร้าง knowledge graph ของข้อความเฉพาะโดเมน

    • Aider ใช้ PageRank กับ call graph ของคลังเก็บโค้ดเพื่อค้นหาคอนเท็กซ์ที่เกี่ยวข้อง
  • คำถามเกี่ยวกับวิธีที่โดเมนและคิวรีตัวอย่างช่วยในการสร้าง knowledge graph

  • ความสับสนเกี่ยวกับนโยบายราคา

    • หน้า GitHub ระบุว่า 100 คำขอแรกฟรี แต่หน้าแลนดิ้งเพจแนะนำให้ self-host หากต้องการใช้งานฟรี
  • คำถามว่าคำตอบสำหรับคำถาม "Scrooge คือใคร?" ดีกว่าแนวทางอื่นหรือไม่

    • สงสัยว่าเป็นแนวทางเพื่อประหยัดต้นทุนหรือเพื่อให้ได้คำตอบที่ดีกว่า