เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การแก้ไข Entity ด้วยกราฟ

อุ๊ย! แม้จะมีพรอมต์ที่รัดกุม ตัวอย่าง few-shot และความหวังดีเต็มเปี่ยม แต่ LLM ก็ยังสร้างตัวละครที่ไม่มีอยู่จริงขึ้นมา ชื่อ Romeo Capulet และกำหนดบทพูดให้กับตัวละครนี้ในฐานข้อมูลด้วย

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

โชคดีที่สามารถใช้ความสัมพันธ์ใน knowledge graph เพื่อตัดสินว่า node นี้น่าจะเป็น duplicate โดยบังเอิญของ node ที่ชื่อ Romeo Montague หรือไม่

คำสั่ง Cypher ชื่อ similarity_cypher ใช้ความสัมพันธ์ MEMBER_OF และ INTERACTS_WITH เพื่อคำนวณคะแนนความคล้ายคลึงแบบกำหนดเอง โดยมีเงื่อนไขดังนี้

เงื่อนไข Cypher ตัวปรับคะแนน
มีความสัมพันธ์ MEMBER_OF กับตระกูลเดียวกัน af = bf +1
มี property name เหมือนกัน a.name = b.name +2
เปอร์เซ็นต์ของตัวละครที่ a และ b มีปฏิสัมพันธ์ร่วมกัน size(inCommon) / size(aInteractsWith) คูณด้วยเปอร์เซ็นต์ของ b ที่ a มีปฏิสัมพันธ์ด้วย

จากความรู้ในโดเมนนี้ คะแนนที่ได้ 2 ขึ้นไปบ่งชี้ว่ามีความสัมพันธ์กันสูง

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Graph RAG ด้วย LangChain และ Neo4j

ดูคอร์ส

คำแนะนำการฝึกหัด

  • Query graph ด้วยคำสั่ง Cypher (similarity_cypher) เพื่อคำนวณคะแนนความคล้ายคลึงระหว่าง "romeo-capulet" กับ node ตัวละครอื่น ๆ
  • ดึงข้อมูล "bId", "bFamily" และ "score" ตามลำดับนั้น จากแต่ละ row ใน results

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# 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['____'])
แก้ไขและรันโค้ด