EmpezarEmpieza gratis

Resolución de entidades basada en grafos

¡Vaya! Incluso con un prompt a prueba de balas, ejemplos few-shot y los dedos cruzados, el LLM ha alucinado un personaje llamado Romeo Capulet y le ha asignado algunas líneas en la base de datos.

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

Por suerte, puedes usar las relaciones del grafo de conocimiento para decidir si este nodo es probablemente un duplicado accidental de otro llamado Romeo Montague.

La sentencia Cypher similarity_cypher usa las relaciones MEMBER_OF e INTERACTS_WITH para construir una puntuación de similitud arbitraria con las siguientes propiedades:

Condición Cypher Modificador de puntos
Una relación MEMBER_OF a la misma familia af = bf +1
La misma propiedad de nombre a.name = b.name +2
Porcentaje de personajes con los que interactúan a y b size(inCommon) / size(aInteractsWith) Multiplicado por el porcentaje de b con el que interactúa a

Por tu conocimiento del dominio, sabes que una puntuación de 2 indica una fuerte correlación.

Este ejercicio forma parte del curso

Graph RAG con LangChain y Neo4j

Ver curso

Instrucciones del ejercicio

  • Consulta graph con la consulta Cypher (similarity_cypher) para calcular las puntuaciones de similitud entre "romeo-capulet" y los otros nodos de personajes.
  • Extrae "bId", "bFamily" y "score", en ese orden, de cada row en results.

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

# 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 y ejecutar código