Comece agoraComece grátis

Resolução de entidades baseada em grafo

Ah, não! Mesmo com um prompt à prova de falhas, exemplos few-shot e dedos cruzados, o LLM ainda alucinou um personagem chamado Romeo Capulet e atribuiu a ele algumas falas no banco de dados.

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

Por sorte, você pode usar os relacionamentos no grafo de conhecimento para decidir se esse nó provavelmente é um duplicado acidental de outro chamado Romeo Montague.

A instrução Cypher similarity_cypher usa os relacionamentos MEMBER_OF e INTERACTS_WITH para construir uma pontuação de similaridade arbitrária com as seguintes propriedades:

Condição Cypher Modificador de pontos
Um relacionamento MEMBER_OF com a mesma família af = bf +1
A mesma propriedade de nome a.name = b.name +2
Porcentagem de personagens com os quais a e b interagem size(inCommon) / size(aInteractsWith) Multiplicado pela porcentagem de b com quem a interage

Pelo seu conhecimento do domínio, você sabe que uma pontuação de 2 indica uma forte correlação.

Este exercicio faz parte do curso

Graph RAG com LangChain e Neo4j

Ver curso

Instruções do exercicio

  • Consulte graph com a consulta Cypher (similarity_cypher) para calcular as pontuações de similaridade entre "romeo-capulet" e os outros nós de personagens.
  • Extraia "bId", "bFamily" e "score", nessa ordem, de cada row em results.

exercicio interativo prático

Tente este exercicio completando este código de exemplo.

# 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['____'])
Editar e Executar Código