엔터티 해석

LangChain과 Neo4j로 배우는 Graph RAG

Adam Cowley

Manager, Developer Education at Neo4j

LLM은 상태를 유지하지 않습니다

호출 #1

다음 텍스트의 등장인물을 나열하시오:

{text}
이 텍스트의 등장인물:

* Sampson - Capulet가의 하인.
* Gregory - Capulet가의 또 다른 하인.
* Abram - Montague가의 하인.
* Balthasar - Montague가의 하인.

호출 #2

다음 텍스트의 등장인물을 나열하시오:

{text}
이 텍스트에 나열된 등장인물:

* Sampson - Capulet가 하인
* Gregory - Capulet가 하인
* Abram - Montague가 하인
* Benvolio - Montague가 하인
LangChain과 Neo4j로 배우는 Graph RAG

엔터티 제안

examples = graph.query("""
MATCH (c:Character)-[:BELONGS_TO]->(f:Family)
RETURN c.id AS id, c.name AS name, f.name AS belongsToFamily
""")

for character in example:
    print(character)
{"id": "romeo-montague", "name": "Romeo", "family": "Montague"},

{"id": "juliet-capulet", "name": "Juliet", "family": "Capulet"},
{"id": "sampson", "name": "Sampson", "family": "Capulet"},
...
LangChain과 Neo4j로 배우는 Graph RAG

엔터티 제안

SystemMessagePromptTemplate.from_template("""
다음 엔터티에 해당하는 정보를 추출하시오.


다음 목록에 없는 인물은 무시하시오:
{examples}
""",
partial_variables={"examples": [ dict(e) for e in examples ]}
)
LangChain과 Neo4j로 배우는 Graph RAG

그래프 기반 엔터티 해석

엔터티 해석 예시 1

LangChain과 Neo4j로 배우는 Graph RAG

그래프 기반 엔터티 해석

엔터티 해석 다이어그램

LangChain과 Neo4j로 배우는 Graph RAG

그래프 기반 엔터티 해석

엔터티 해석 예시 3

LangChain과 Neo4j로 배우는 Graph RAG

그래프 기반 엔터티 해석

엔터티 해석 예시 4

LangChain과 Neo4j로 배우는 Graph RAG

그래프 기반 엔터티 해석

엔터티 해석 예시 5

LangChain과 Neo4j로 배우는 Graph RAG

유사 인물 식별

MATCH path = (c:Character {id: "romeo-capulet"})-[r]-(inCommon:Character),

(inCommon)-[r2]-(other:Character)
RETURN c.id AS id, c.name AS name, other.name AS otherName, other.id AS otherId,
c.name = other.name AS shareName,
EXISTS { (c)-[:BELONGS_TO]->(:Family)<-[:BELONGS_TO]-(other) } AS belongToFamily,
count(*) as nodesInCommon,
collect(path) AS paths
ORDER BY nodesInCommon DESC LIMIT 10
LangChain과 Neo4j로 배우는 Graph RAG

유사성 관계 활용

두 사람 노드가 유사 관계로 연결되고 각자 대사(Line) 노드와 연결된 그래프 다이어그램

MATCH (:Character {id: 'romeo-montague'})-[:SIMILAR_TO*0..1]-(character),
  (character)-[:HAS_LINE]->(line),
  (line)-[:SPOKEN_TO]->(target)
RETURN character, line
LangChain과 Neo4j로 배우는 Graph RAG

연습해 봅시다!

LangChain과 Neo4j로 배우는 Graph RAG

Preparing Video For Download...