Grafa dayalı varlık eşleştirme
Eyvah! Kurşun geçirmez bir istem, few-shot örnekler ve bol şans dilekleri bile yetmedi; LLM, Romeo Capulet adında hayali bir karakter uydurdu ve veritabanında ona birkaç replik atadı.
{
"id": "romeo-capulet",
"name": "Romeo Capulet",
"family": "Montague"
}
Neyse ki, bilgi grafiğindeki ilişkileri kullanarak bu düğümün Romeo Montague adlı başka bir karakterin yanlışlıkla oluşturulmuş bir kopyası olup olmadığını değerlendirebilirsin.
similarity_cypher Cypher ifadesi, aşağıdaki özelliklerle keyfi bir benzerlik puanı oluşturmak için MEMBER_OF ve INTERACTS_WITH ilişkilerini kullanır:
| Condition | Cypher | Points Modifier |
|---|---|---|
Aynı aileye bir MEMBER_OF ilişkisi |
af = bf |
+1 |
| Aynı name özelliği | a.name = b.name |
+2 |
a ve bnin etkileşimde bulunduğu karakterlerin yüzdesi |
size(inCommon) / size(aInteractsWith) |
anın b ile etkileşim yüzdesi ile çarpılır |
Alan bilgine göre, 2 puan güçlü bir korelasyon anlamına gelir.
Bu egzersiz, kursun bir parçasıdır
LangChain ve Neo4j ile Graph RAG
Egzersiz talimatları
graphüzerinde Cypher sorgusu (similarity_cypher) çalıştırarak"romeo-capulet"ile diğer karakter düğümleri arasındaki benzerlik puanlarını hesapla.resultsiçindeki herrowiçin, sırasıyla"bId","bFamily"ve"score"değerlerini çıkar.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# 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['____'])