エンティティ解決

Graph RAG with LangChain and Neo4j

Adam Cowley

Manager, Developer Education at Neo4j

LLM はステートレス

呼び出し #1

次のテキストに登場する人物を列挙してください:

{text}
このテキストの登場人物:

* サンプソン - キャピュレット家の召使い。
* グレゴリー - キャピュレット家の召使い。
* エイブラハム - モンタギュー家の召使い。
* バルサザー - モンタギュー家の召使い。

呼び出し #2

次のテキストに登場する人物を列挙してください:

{text}
このテキストに記載の登場人物:

* サンプソン - キャピュレットの召使い
* グレゴリー - キャピュレットの召使い
* エイブラム - モンタギューの召使い
* ベンヴォーリオ - モンタギューの召使い
Graph RAG with LangChain and Neo4j

エンティティ候補の提示

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"},
...
Graph RAG with LangChain and Neo4j

エンティティ候補の提示

SystemMessagePromptTemplate.from_template("""
次のエンティティに対応する情報を抽出してください。


次の一覧に含まれない人物は無視してください:
{examples}
""",
partial_variables={"examples": [ dict(e) for e in examples ]}
)
Graph RAG with LangChain and Neo4j

グラフベースのエンティティ解決

エンティティ候補提示の図

Graph RAG with LangChain and Neo4j

グラフベースのエンティティ解決

エンティティ解決の概念図

Graph RAG with LangChain and Neo4j

グラフベースのエンティティ解決

エンティティ解決のグラフ例

Graph RAG with LangChain and Neo4j

グラフベースのエンティティ解決

エンティティ解決の手順

Graph RAG with LangChain and Neo4j

グラフベースのエンティティ解決

類似ノードのリンク例

Graph RAG with LangChain and Neo4j

類似人物の特定

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
Graph RAG with LangChain and Neo4j

類似関係の活用

人物ノード2つに類似関係があり、双方が台詞ノードに接続されたグラフ図

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

練習しましょう!

Graph RAG with LangChain and Neo4j

Preparing Video For Download...