1 poin oleh GN⁺ 2024-11-19 | 1 komentar | Bagikan ke WhatsApp

Framework Fast GraphRAG yang ringkas dan dapat dipandu dengan prompt

  • Pengetahuan yang dapat diinterpretasikan dan di-debug: grafik menyediakan tampilan pengetahuan yang bisa dijelajahi manusia, serta dapat di-query, divisualisasikan, dan diperbarui
  • Cepat, murah, dan efisien: dirancang untuk berjalan dalam skala besar dengan kebutuhan sumber daya dan biaya yang rendah
  • Data dinamis: secara otomatis membuat dan menyempurnakan grafik agar sesuai dengan kebutuhan domain dan ontologi
  • Pembaruan bertahap: mendukung pembaruan real-time seiring data berkembang
  • Eksplorasi cerdas: memanfaatkan penelusuran grafik berbasis PageRank untuk meningkatkan akurasi dan keandalan
  • Dukungan asinkron dan tipe: dukungan asinkron penuh dan tipe lengkap memberikan alur kerja yang tangguh dan dapat diprediksi

Instalasi

  • Instal dari PyPi (direkomendasikan)

    pip install fast-graphrag
    
  • Instal dari source

    # Clone repositori ini terlebih dahulu
    cd fast_graphrag
    poetry install
    

Mulai cepat

  • Atur kunci API OpenAI di environment

    export OPENAI_API_KEY="sk-..."
    
  • Unduh A Christmas Carol karya Charles Dickens

    curl https://raw.githubusercontent.com/circlemind-ai/fast-graphrag/… > ./book.txt
    
  • Contoh kode 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)
    
  • Saat fast-graphrag diinisialisasi ulang di direktori kerja yang sama, seluruh pengetahuan akan otomatis dipertahankan

Contoh

  • Lihat folder examples untuk tutorial tentang kasus penggunaan umum pustaka ini
    • custom_llm.py: contoh sederhana untuk mengonfigurasi fast-graphrag dengan berbagai model bahasa dan embedder yang kompatibel dengan OpenAI API

Kontribusi

  • Kontribusi besar maupun kecil sangat diterima. Kontribusi menjadikan komunitas open source tempat yang luar biasa untuk belajar, saling menginspirasi, dan berkarya
  • Anda dapat memeriksa panduan kontribusi untuk mengetahui cara memulai
  • Jika tidak tahu harus mulai dari mana, Anda bisa bergabung ke Discord dan bertanya

Filosofi

  • Misi kami adalah meningkatkan jumlah aplikasi GenAI yang sukses di dunia
  • Untuk itu, kami membangun alat memori dan data agar aplikasi LLM dapat memanfaatkan pipeline pengambilan yang sangat terspesialisasi tanpa kompleksitas dalam menyiapkan dan memelihara alur kerja agen

Open source atau layanan terkelola

  • Repositori ini berada di bawah lisensi MIT. Lihat LICENSE.txt untuk detail lebih lanjut
  • Cara tercepat dan paling andal untuk memulai Fast GraphRAG adalah dengan menggunakan layanan terkelola
  • 100 permintaan pertama setiap bulan gratis, setelah itu biaya dikenakan sesuai pemakaian

1 komentar

 
GN⁺ 2024-11-19
Komentar Hacker News
  • Menggunakan BM25 bersama LLM dapat menghasilkan hasil yang sangat relevan

    • Embedding bekerja dengan baik ketika ukuran kueri mirip dengan ukuran penyimpanan embedding
    • Efektif untuk membuat jawaban hipotetis dengan LLM lalu menggunakannya sebagai kueri embedding
    • Menggunakan metaprompter pada tahap dekomposisi dan ekstraksi pengetahuan untuk membuat tipe domain/entitas secara otomatis
    • LLM kurang mahir dalam memecah pengetahuan ke tingkat yang tepat
    • Menggunakan mind map mermaid.js untuk membagi input secara hierarkis dan menemukan root yang sesuai
    • Pertanyaan yang dihasilkan diindeks sebagai teks dan di-embedding
    • BM25 dapat digunakan untuk mencocokkan kueri pengguna secara langsung, dan pendekatan hibrida memberi hasil yang lebih baik
    • Jika tidak menggunakan LLM saat waktu kueri, penelusuran hierarkis dimungkinkan dengan memakai kemiripan embedding sebagai fungsi biaya
  • PageRank dan Triangle Centrality adalah metrik sentralitas yang menarik untuk diterapkan pada graf

    • Triangle Centrality menghitung segitiga di sekitar node untuk menentukan sentralitas
    • Menurut hasil riset, TC lebih lambat daripada PR pada graf jarang, tetapi menjadi lebih efisien saat graf membesar
  • Pencarian informasi tradisional dianggap cocok untuk RAG

    • Pencarian vektor berguna untuk data tidak terstruktur, tetapi kurang efektif untuk data terstruktur
    • Mengubah data terstruktur menjadi data tidak terstruktur demi pencarian vektor bisa jadi tidak efisien
    • Mungkin berguna membiarkan LLM mempelajari kueri atau berinteraksi dengan API pencarian/kueri yang sudah ada
    • Menggunakan konteks berukuran besar untuk mengambil banyak hasil melalui beberapa kueri lebih cepat dan murah daripada pencarian vektor
  • Ingin menggunakan sistem GraphRag di startup AI untuk analisis dokumen skala besar

    • Diperkirakan sekitar 10% dokumen berubah setiap bulan
    • Dapat memakai S3 untuk mengumpulkan data, tetapi biaya dan waktu pemrosesannya perlu dipahami
  • Mempertanyakan mengapa PageRank memerlukan kunci API OpenAI

    • Ada batasan bahwa output OpenAI tidak boleh digunakan untuk mengembangkan model pesaing
    • Ada kekhawatiran tentang penurunan kondisi ekonomi manusia biasa
  • Pertanyaan tentang cara menyimpan dan melakukan kueri pada graf tanpa basis data graf

    • Mengalami hasil yang tidak konsisten saat mencoba ekstraksi dengan model sciphi triplex
  • Pertanyaan tentang berapa banyak teks yang diperlukan untuk membangun knowledge graph untuk teks spesifik domain

    • Aider menerapkan PageRank pada call graph repositori kode untuk menemukan konteks yang relevan
  • Pertanyaan tentang bagaimana domain dan contoh kueri membantu pembangunan knowledge graph

  • Kebingungan mengenai kebijakan harga

    • Halaman GitHub menyebut 100 permintaan pertama gratis, tetapi halaman landing menyarankan self-hosting untuk penggunaan gratis
  • Pertanyaan apakah jawaban untuk "Siapa Scrooge?" lebih baik daripada pendekatan lain

    • Mempertanyakan apakah ini pendekatan untuk mengurangi biaya atau untuk mendapatkan jawaban yang lebih baik