Bắt đầu ngayBắt đầu miễn phí

Giải quyết thực thể dựa trên đồ thị

Ôi không! Dù đã có prompt "chống đạn", ví dụ few-shot và cầu cho may mắn, LLM vẫn bịa ra một nhân vật tên Romeo Capulet và còn gán cho anh ta vài dòng trong cơ sở dữ liệu.

{
  "id": "romeo-capulet",
  "name": "Romeo Capulet",
  "family": "Montague"
}

May mắn là bạn có thể dùng các quan hệ trong knowledge graph để quyết định liệu nút này có khả năng là bản trùng lặp do nhầm lẫn của một nút khác tên Romeo Montague hay không.

Câu lệnh Cypher similarity_cypher sử dụng các quan hệ MEMBER_OFINTERACTS_WITH để xây dựng một điểm tương đồng tùy ý với các thuộc tính sau:

Điều kiện Cypher Hệ số điểm
Có quan hệ MEMBER_OF tới cùng một gia tộc af = bf +1
Cùng giá trị thuộc tính name a.name = b.name +2
Tỷ lệ phần trăm các nhân vật mà ab cùng tương tác size(inCommon) / size(aInteractsWith) Nhân với tỷ lệ phần trăm các nhân vật của ba tương tác

Từ hiểu biết miền của bạn, bạn biết rằng điểm 2 cho thấy mức tương quan mạnh.

Bài tập này là một phần của khóa học

Graph RAG với LangChain và Neo4j

Xem khóa học

Hướng dẫn bài tập

  • Truy vấn graph với câu truy vấn Cypher (similarity_cypher) để tính điểm tương đồng giữa "romeo-capulet" và các nút nhân vật khác.
  • Trích xuất "bId", "bFamily", và "score", theo đúng thứ tự đó, từ mỗi row trong results.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# Query the graph with similarity_cypher
result = ____

# Extract and print the results
for row in result:
    print(row['____'], 'from', row['____'], 'has similarity score of ', row['____'])
Chỉnh sửa và Chạy Mã