0
0
Lập trình
Thaycacac
Thaycacac thaycacac

GraphRAG với Wikipedia và GPT OSS: Hướng dẫn chi tiết

Đăng vào 2 tuần trước

• 4 phút đọc

Giới thiệu

Trong thế giới trí tuệ nhân tạo (AI), Retrieval Augmented Generation (RAG) đã trở thành một trong những kỹ thuật phổ biến nhất. RAG nhận yêu cầu từ người dùng, tìm kiếm nội dung phù hợp nhất và kết hợp ngữ cảnh đó vào một prompt của mô hình ngôn ngữ lớn (LLM) để tạo ra câu trả lời. Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng GraphRAG kết hợp với Wikipedia và GPT OSS để nghiên cứu một chủ đề cụ thể thông qua các biểu đồ.

Nội dung chính

  1. Cài đặt phụ thuộc
  2. Tải cơ sở dữ liệu txtai-wikipedia-slim
  3. Xây dựng ngữ cảnh với truy vấn đồ thị
  4. Vẽ đồ thị ngữ cảnh
  5. In ngữ cảnh dưới dạng văn bản
  6. GraphRAG
  7. Kết luận
  8. Câu hỏi thường gặp

Cài đặt phụ thuộc

Để bắt đầu, bạn cần cài đặt txtai và tất cả các phụ thuộc cần thiết. Sử dụng lệnh sau:

bash Copy
pip install txtai[graph,pipeline-llm]

Tải cơ sở dữ liệu txtai-wikipedia-slim

Tiếp theo, chúng ta sẽ tải cơ sở dữ liệu embeddings. Cơ sở dữ liệu này chứa 100K bài viết Wikipedia được xem nhiều nhất, với cả chỉ mục vector dày đặc và mạng đồ thị được kích hoạt.

python Copy
from txtai import Embeddings

embeddings = Embeddings().load(provider="huggingface-hub", container="neuml/txtai-wikipedia-slim")

Xây dựng ngữ cảnh với truy vấn đồ thị

Thành phần đồ thị của txtai hỗ trợ ngôn ngữ truy vấn openCypher thông qua thư viện GrandCypher. OpenCypher là một ngôn ngữ cho phép truy vấn dữ liệu hiệu quả trên đồ thị thuộc tính. Trong ví dụ này, chúng ta sẽ duyệt đồ thị cơ sở dữ liệu embeddings để tìm kiếm các đường dẫn giữa các nút tương tự như chatgptanthropic.

python Copy
g = embeddings.search("""
MATCH P=(A)-[]->(B)
WHERE SIMILAR(A, 'chatgpt') AND SIMILAR(B, 'anthropic')
RETURN P
LIMIT 10
""", graph=True)

Truy vấn trên là sự kết hợp mạnh mẽ giữa tìm kiếm độ tương đồng vector và truy vấn duyệt đồ thị. Nó cho phép chúng ta tìm kiếm các đường dẫn giữa các nút, điều này có thể xem như là một tìm kiếm đồ thị sâu.

Vẽ đồ thị ngữ cảnh

Hãy cùng hiển thị ngữ cảnh dưới dạng đồ thị!

python Copy
import matplotlib.pyplot as plt
import networkx as nx

def plot(graph):
    labels = {x: f"{graph.attribute(x, 'id')}" for x in graph.scan()}
    colors = ["#D32F2F", "#0277bd", "#7e57c2", "#757575"]

    results = embeddings.batchsimilarity(labels.values(), ["Anthropic Claude", "Google Gemini", "OpenAI GPT"])
    colors = [colors[x[0][0]] for x in results]

    options = {
        "node_size": 1000,
        "node_color": colors,
        "edge_color": "#454545",
        "font_color": "#efefef",
        "font_size": 10,
        "alpha": 1.0,
    }

    fig, ax = plt.subplots(figsize=(20, 9))
    pos = nx.spring_layout(graph.backend, seed=0, k=0.9, iterations=50)
    nx.draw_networkx(graph.backend, pos=pos, labels=labels, **options)
    ax.set_facecolor("#303030")
    ax.axis("off")
    fig.set_facecolor("#303030")

    plt.show()

plot(g)

In ngữ cảnh dưới dạng văn bản

Chúng ta có thể kiểm tra thêm các nút trong đồ thị.

python Copy
context = ""
for x in g.scan():
    uid = g.attribute(x, "id")

    context += f"- id: {uid}\n"
    context += f"  url: https://en.wikipedia.org/wiki/{uid.replace(' ', '_')}\n"
    context += f"  text: {g.attribute(x, 'text')}\n"
    context += f"  links: {[g.attribute(n, 'id') for n in g.edges(x)]}\n"
python Copy
print(context)

GraphRAG

Bây giờ chúng ta sẽ đưa ngữ cảnh vào một prompt của LLM.

python Copy
from txtai import LLM

llm = LLM("unsloth/gpt-oss-20b-GGUF/gpt-oss-20b-Q4_K_M.gguf", n_ctx=20000)
python Copy
from IPython.display import display, Markdown

out = llm(f"""
Analyze the following context and write an article about it
{context}
""", defaultrole="user", maxlength=20000, stripthink=True)

display(Markdown(out))

Kết luận

Bài viết này đã hướng dẫn bạn cách sử dụng GraphRAG kết hợp với Wikipedia và GPT OSS để nghiên cứu một chủ đề cụ thể. Với các bước hướng dẫn chi tiết và mã lệnh minh họa, hy vọng bạn có thể áp dụng vào dự án của mình.

Câu hỏi thường gặp

GraphRAG là gì?

GraphRAG là một phương pháp kết hợp truy vấn đồ thị và mô hình ngôn ngữ lớn để tạo ra nội dung phong phú từ ngữ cảnh được tìm thấy.

Có thể sử dụng GraphRAG với các nguồn khác không?

Có, bạn có thể sử dụng bất kỳ nguồn dữ liệu nào như SQL, tìm kiếm văn bản, hoặc các phương pháp tìm kiếm truyền thống khác.

Cần lưu ý gì khi sử dụng GraphRAG?

Hãy đảm bảo rằng bạn đã cài đặt đầy đủ các phụ thuộc và hiểu rõ các truy vấn đồ thị để tối ưu hóa hiệu suất tìm kiếm.

Thực hành tốt nhất

  • Kiểm tra và tối ưu mã lệnh: Đảm bảo mã lệnh của bạn hoạt động chính xác và hiệu quả.
  • Sử dụng tài liệu tham khảo: Đừng quên tham khảo tài liệu chính thức để hiểu rõ hơn về các thư viện bạn đang sử dụng.

Những cạm bẫy thường gặp

  • Không hiểu rõ dữ liệu: Trước khi thực hiện truy vấn đồ thị, hãy chắc chắn bạn đã hiểu rõ cấu trúc dữ liệu của mình.
  • Quá tải dữ liệu: Nếu bạn làm việc với một lượng lớn dữ liệu, hãy tối ưu hóa truy vấn của bạn để tránh làm chậm hiệu suất.

Mẹo hiệu suất

  • Chạy các truy vấn trong môi trường phát triển: Giúp bạn dễ dàng phát hiện lỗi và tối ưu hóa trước khi triển khai vào sản phẩm thực tế.
  • Sử dụng caching: Để giảm thời gian truy vấn và tải dữ liệu.

Liên kết hữu ích

Bằng cách sử dụng GraphRAG, bạn có thể tạo ra nội dung phong phú và chi tiết từ các nguồn dữ liệu khác nhau, mở rộng khả năng nghiên cứu và phát triển AI của mình.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào