1 điểm bởi GN⁺ 2024-11-19 | 1 bình luận | Chia sẻ qua WhatsApp

Khung Fast GraphRAG tinh gọn và có thể điều khiển bằng prompt

  • Tri thức có thể diễn giải và gỡ lỗi: đồ thị cung cấp một cách nhìn tri thức mà con người có thể khám phá, đồng thời có thể truy vấn, trực quan hóa và cập nhật
  • Nhanh, rẻ và hiệu quả: được thiết kế để chạy ở quy mô lớn với yêu cầu tài nguyên và chi phí thấp
  • Dữ liệu động: tự động tạo và cải thiện đồ thị để phù hợp với yêu cầu của miền và ontology
  • Cập nhật gia tăng: hỗ trợ cập nhật theo thời gian thực khi dữ liệu tiếp tục phát triển
  • Khám phá thông minh: tận dụng duyệt đồ thị dựa trên PageRank để nâng cao độ chính xác và độ tin cậy
  • Hỗ trợ bất đồng bộ và kiểu dữ liệu: hỗ trợ đầy đủ async và type, mang lại quy trình làm việc vững chắc và có thể dự đoán

Cài đặt

  • Cài từ PyPi (khuyến nghị)

    pip install fast-graphrag
    
  • Cài từ mã nguồn

    # Trước tiên hãy clone kho lưu trữ này
    cd fast_graphrag
    poetry install
    

Bắt đầu nhanh

  • Đặt khóa API OpenAI trong môi trường

    export OPENAI_API_KEY="sk-..."
    
  • Tải A Christmas Carol của Charles Dickens

    curl https://raw.githubusercontent.com/circlemind-ai/fast-graphrag/… > ./book.txt
    
  • Ví dụ mã 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)
    
  • Khi khởi tạo lại fast-graphrag trong cùng thư mục làm việc, mọi tri thức sẽ được tự động giữ nguyên

Ví dụ

  • Có thể tham khảo thư mục examples để xem tutorial về các trường hợp sử dụng phổ biến của thư viện
    • custom_llm.py: ví dụ đơn giản về cách cấu hình fast-graphrag với nhiều mô hình ngôn ngữ và bộ nhúng tương thích OpenAI API khác nhau

Đóng góp

  • Hoan nghênh mọi đóng góp, lớn hay nhỏ. Đóng góp giúp cộng đồng mã nguồn mở trở thành nơi tuyệt vời để học hỏi, truyền cảm hứng và sáng tạo
  • Có thể xem hướng dẫn đóng góp để biết cách bắt đầu
  • Nếu chưa biết nên bắt đầu từ đâu, bạn có thể tham gia Discord để đặt câu hỏi

Triết lý

  • Sứ mệnh của chúng tôi là tăng số lượng ứng dụng GenAI thành công trên thế giới
  • Để làm được điều đó, chúng tôi xây dựng các công cụ bộ nhớ và dữ liệu để ứng dụng LLM có thể tận dụng các pipeline truy xuất có mức độ chuyên biệt cao mà không cần đến sự phức tạp của việc thiết lập và duy trì workflow tác tử

Mã nguồn mở hoặc dịch vụ được quản lý

  • Kho lưu trữ này được phát hành theo giấy phép MIT. Xem LICENSE.txt để biết thêm chi tiết
  • Cách nhanh nhất và đáng tin cậy nhất để bắt đầu với Fast GraphRAG là sử dụng dịch vụ được quản lý
  • 100 yêu cầu đầu tiên mỗi tháng được miễn phí, sau đó sẽ tính phí theo mức sử dụng

1 bình luận

 
GN⁺ 2024-11-19
Ý kiến Hacker News
  • Có thể đạt được kết quả có độ liên quan rất cao khi dùng BM25 cùng với LLM

    • Embedding hoạt động tốt khi kích thước truy vấn gần tương đương kích thước của kho lưu trữ embedding
    • Việc dùng LLM để tạo câu trả lời giả định rồi dùng nó cho truy vấn embedding mang lại hiệu quả
    • Ở giai đoạn phân rã và trích xuất tri thức, sử dụng meta-prompter để tự động tạo các loại miền/thực thể
    • LLM không giỏi trong việc phân rã tri thức ở mức độ phù hợp
    • Dùng mindmap của mermaid.js để chia đầu vào theo cấu trúc phân cấp và tìm root phù hợp
    • Lập chỉ mục và embedding các câu hỏi đã tạo dưới dạng văn bản
    • Có thể dùng BM25 để khớp trực tiếp truy vấn người dùng, và cách tiếp cận hybrid cho kết quả tốt hơn
    • Nếu không dùng LLM ở thời điểm truy vấn, có thể duyệt phân cấp bằng cách dùng độ tương đồng embedding như một hàm chi phí
  • PageRank và Triangle Centrality là những chỉ số độ trung tâm thú vị có thể áp dụng cho đồ thị

    • Triangle Centrality xác định độ trung tâm bằng cách đếm các tam giác xung quanh một nút
    • Theo nghiên cứu, TC chậm hơn PR trên đồ thị thưa, nhưng hiệu quả hơn khi đồ thị lớn dần
  • Tôi nghĩ truy hồi thông tin truyền thống phù hợp với RAG

    • Tìm kiếm vector hữu ích cho dữ liệu phi cấu trúc, nhưng kém hiệu quả hơn với dữ liệu có cấu trúc
    • Việc chuyển dữ liệu có cấu trúc thành dữ liệu phi cấu trúc để phục vụ tìm kiếm vector có thể kém hiệu quả
    • Có thể hữu ích khi để LLM học truy vấn hoặc giao tiếp với API tìm kiếm/truy vấn sẵn có
    • Dùng context size lớn để lấy nhiều kết quả qua nhiều truy vấn nhanh và rẻ hơn tìm kiếm vector
  • Muốn dùng hệ thống GraphRag tại một startup AI để phân tích tài liệu quy mô lớn

    • Dự kiến khoảng 10% tài liệu sẽ thay đổi mỗi tháng
    • Có thể dùng S3 để thu thập dữ liệu, nhưng cần hiểu chi phí và thời gian xử lý
  • Thắc mắc về việc PageRank yêu cầu OpenAI API key

    • Có hạn chế rằng không thể dùng đầu ra của OpenAI để phát triển mô hình cạnh tranh
    • Lo ngại về sự suy giảm kinh tế của con người bình thường
  • Câu hỏi về cách lưu trữ và truy vấn đồ thị mà không cần cơ sở dữ liệu đồ thị

    • Đã thử trích xuất bằng mô hình sciphi triplex nhưng gặp kết quả thiếu nhất quán
  • Câu hỏi về lượng văn bản cần thiết để xây dựng knowledge graph cho văn bản đặc thù theo miền

    • Aider áp dụng PageRank vào call graph của kho mã để tìm context liên quan
  • Câu hỏi về cách miền và các truy vấn ví dụ giúp ích cho việc xây dựng knowledge graph

  • Bối rối về chính sách giá

    • Trang GitHub nói 100 yêu cầu đầu tiên là miễn phí, nhưng trang landing page lại khuyên tự host nếu muốn dùng miễn phí
  • Câu hỏi liệu câu trả lời cho "Scrooge là ai?" có tốt hơn các cách tiếp cận khác hay không

    • Thắc mắc liệu đây là cách tiếp cận để giảm chi phí hay để có câu trả lời tốt hơn