1 puan yazan GN⁺ 2024-11-19 | 1 yorum | WhatsApp'ta paylaş

Sadeleştirilmiş ve prompt ile yönlendirilebilen Fast GraphRAG çerçevesi

  • Yorumlanabilir ve hata ayıklanabilir bilgi: Grafikler, insanların gezinebileceği bir bilgi görünümü sunar; sorgulanabilir, görselleştirilebilir ve güncellenebilir
  • Hızlı, ucuz ve verimli: Büyük ölçekte çalışacak şekilde tasarlanmıştır; düşük kaynak ve maliyet gerektirir
  • Dinamik veri: Alan ve ontoloji gereksinimlerine göre grafikleri otomatik olarak oluşturur ve iyileştirir
  • Kademeli güncellemeler: Veri geliştikçe gerçek zamanlı güncellemeleri destekler
  • Akıllı keşif: Doğruluk ve güvenilirliği artırmak için PageRank tabanlı grafik keşfini kullanır
  • Asenkron ve tip desteği: Tam asenkron yapı ve tip desteğiyle sağlam ve öngörülebilir iş akışları sunar

Kurulum

  • PyPi üzerinden kurulum (önerilir)

    pip install fast-graphrag
    
  • Kaynaktan kurulum

    # Önce bu depoyu klonlayın
    cd fast_graphrag
    poetry install
    

Hızlı başlangıç

  • OpenAI API anahtarını ortama ayarlayın

    export OPENAI_API_KEY="sk-..."
    
  • Charles Dickens’ın A Christmas Carol eserini indirin

    curl https://raw.githubusercontent.com/circlemind-ai/fast-graphrag/… > ./book.txt
    
  • Python kod örneği

    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)
    
  • Aynı çalışma dizininde fast-graphrag yeniden başlatıldığında tüm bilgileri otomatik olarak korur

Örnekler

  • Kütüphanenin yaygın kullanım senaryolarına yönelik eğitimler için examples klasörüne bakılabilir
    • custom_llm.py: Fast-graphrag’i çeşitli OpenAI API uyumlu dil modelleri ve embedder’larla yapılandırmaya dair basit bir örnek

Katkı

  • Büyük ya da küçük tüm katkılar memnuniyetle karşılanır. Katkılar, açık kaynak topluluğunu öğrenmek, ilham vermek ve üretmek için harika bir yer haline getirir
  • Nasıl başlayacağınızı öğrenmek için katkı kılavuzuna göz atabilirsiniz
  • Nereden başlayacağınızı bilmiyorsanız Discord’a katılıp soru sorabilirsiniz

Felsefe

  • Misyonumuz, dünyadaki başarılı GenAI uygulamalarının sayısını artırmaktır
  • Bunun için, LLM uygulamalarının ajan iş akışlarını kurma ve sürdürme karmaşıklığı olmadan son derece uzmanlaşmış arama hatlarından yararlanabilmesi için bellek ve veri araçları geliştiriyoruz

Açık kaynak mı, yönetilen hizmet mi?

  • Bu depo MIT lisansı altındadır. Ayrıntılar için LICENSE.txt dosyasına bakın
  • Fast GraphRAG’e başlamanın en hızlı ve en güvenilir yolu yönetilen hizmeti kullanmaktır
  • Her ay ilk 100 istek ücretsizdir; sonrasında kullanım bazlı ücretlendirme uygulanır

1 yorum

 
GN⁺ 2024-11-19
Hacker News görüşleri
  • BM25 ve LLM birlikte kullanıldığında son derece yüksek ilgili sonuçlar elde edilebiliyor

    • Sorgu boyutu embedding deposunun boyutuna yakın olduğunda embedding iyi çalışıyor
    • LLM kullanarak varsayımsal bir yanıt üretip bunu embedding sorgusunda kullanmak etkili oluyor
    • Bilgi ayrıştırma ve çıkarım aşamasında meta-prompt kullanılarak alan/varlık türleri otomatik oluşturuluyor
    • LLM, bilgiyi uygun ayrıntı düzeyinde parçalamakta zayıf kalıyor
    • mermaid.js zihin haritası kullanılarak girdi hiyerarşik olarak bölünüyor ve uygun kök bulunuyor
    • Üretilen sorular metin olarak indeksleniyor ve embedding'e dönüştürülüyor
    • BM25 ile kullanıcı sorgusu doğrudan eşleştirilebiliyor ve hibrit yaklaşım daha iyi sonuç veriyor
    • Sorgu zamanında LLM kullanılmazsa embedding benzerliği maliyet fonksiyonu olarak kullanılarak hiyerarşik gezinme yapılabiliyor
  • PageRank ve Triangle Centrality, grafa uygulanabilecek ilginç merkezilik ölçütleri

    • Triangle Centrality, bir düğümün etrafındaki üçgenleri sayarak merkeziliği belirliyor
    • Araştırma sonuçlarına göre TC, seyrek graflarda PR'den daha yavaş ama graf büyüdükçe daha verimli hale geliyor
  • Geleneksel bilgi erişiminin RAG için uygun olduğu düşünülüyor

    • Vektör arama, yapılandırılmamış veride faydalı ama yapılandırılmış veride daha az etkili
    • Vektör arama için yapılandırılmış veriyi yapılandırılmamış veriye dönüştürmek verimsiz olabilir
    • LLM'in sorguları öğrenmesi ya da mevcut arama/sorgu API'leriyle arayüz kurması faydalı olabilir
    • Büyük bağlam boyutları kullanıp birden fazla sorguyla çok sayıda sonuç getirmek, vektör aramadan daha hızlı ve daha ucuz
  • Bir yapay zeka girişiminde büyük ölçekli belge analizi için GraphRag sistemi kullanmak isteniyor

    • Her ay belgelerin yaklaşık %10'unun değişmesi bekleniyor
    • Veriler S3 ile toplanabilir, ancak maliyet ve işleme süresinin anlaşılması gerekiyor
  • PageRank'in OpenAI API anahtarı istemesiyle ilgili soru işaretleri

    • OpenAI çıktılarının rekabetçi model geliştirmede kullanılamayacağı yönünde bir kısıtlama var
    • İnsanların ekonomik gerilemesiyle ilgili endişeler var
  • Grafik veritabanı olmadan grafın nasıl saklanıp sorgulanacağına dair soru

    • sciphi triplex modeliyle yapılan çıkarım denemelerinde tutarsız sonuçlar yaşandığı belirtiliyor
  • Alana özgü metinler için bilgi grafiği kurmada ne kadar metin gerektiğine dair soru

    • Aider, ilgili bağlamı bulmak için kod deposunun çağrı grafına PageRank uyguluyor
  • Alan ve örnek sorguların bilgi grafiği kurulumuna nasıl yardımcı olduğuna dair soru

  • Fiyatlandırma politikasıyla ilgili kafa karışıklığı

    • GitHub sayfasında ilk 100 isteğin ücretsiz olduğu yazarken, açılış sayfasında ücretsiz kullanım için self-hosting öneriliyor
  • "Scrooge kimdir?" sorusuna verilen yanıtın diğer yaklaşımlardan daha iyi olup olmadığına dair soru

    • Bunun maliyet düşürmeye mi yoksa daha iyi yanıtlar almaya mı yönelik bir yaklaşım olduğu sorgulanıyor