ПочатиПочніть безкоштовно

Розв'язання сутностей на основі графа

О ні! Попри бездоганний промпт, приклади few-shot і наші схрещені пальці, LLM усе ж «галюцинував» персонажа на ім'я Romeo Capulet і додав йому кілька реплік у базі даних.

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

На щастя, ви можете використати зв'язки у графі знань, щоб визначити, чи не є цей вузол випадковим дублем іншого з іменем Romeo Montague.

Оператор Cypher similarity_cypher використовує зв'язки MEMBER_OF і INTERACTS_WITH, щоб побудувати довільний показник схожості з такими властивостями:

Умова Cypher Модифікатор балів
Зв'язок MEMBER_OF з тією самою родиною af = bf +1
Така сама властивість name a.name = b.name +2
Відсоток персонажів, з якими взаємодіють a та b size(inCommon) / size(aInteractsWith) Помножено на відсоток b, з яким взаємодіє a

З вашого предметного досвіду ви знаєте, що бал 2 означає сильну кореляцію.

Ця вправа є частиною курсу

Graph RAG з LangChain і Neo4j

Переглянути курс

Інструкції до вправи

  • Виконайте запит до graph за допомогою Cypher-запиту (similarity_cypher), щоб обчислити показники схожості між "romeo-capulet" та іншими вузлами персонажів.
  • З кожного row у results дістаньте "bId", "bFamily" і "score" — у такому порядку.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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['____'])
Редагувати та запускати код