Giải quyết thực thể

Graph RAG với LangChain và Neo4j

Adam Cowley

Manager, Developer Education at Neo4j

LLM không lưu trạng thái

Lần gọi #1

Liệt kê các nhân vật trong văn bản sau:

{text}
Các nhân vật trong văn bản này:

* Sampson - Đầy tớ của nhà Capulet.
* Gregory - Một đầy tớ khác của nhà Capulet.
* Abram - Đầy tớ của nhà Montague.
* Balthasar - Đầy tớ của nhà Montague.

Lần gọi #2

Liệt kê các nhân vật trong văn bản sau:

{text}
Các nhân vật được liệt kê trong văn bản này:

* Sampson - Đầy tớ Capulet
* Gregory - Đầy tớ của Capulet
* Abram - Đầy tớ của Montague
* Benvolio - Đầy tớ của Montague
Graph RAG với LangChain và Neo4j

Gợi ý thực thể

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 với LangChain và Neo4j

Gợi ý thực thể

SystemMessagePromptTemplate.from_template("""
Trích xuất thông tin tương ứng với các thực thể sau.


Bỏ qua các nhân vật không có trong danh sách sau:
{examples}
""",
partial_variables={"examples": [ dict(e) for e in examples ]}
)
Graph RAG với LangChain và Neo4j

Giải quyết thực thể dựa trên đồ thị

giải_quyết_thực_thể1.jpg

Graph RAG với LangChain và Neo4j

Giải quyết thực thể dựa trên đồ thị

giải_quyết_thực_thể2.jpg

Graph RAG với LangChain và Neo4j

Giải quyết thực thể dựa trên đồ thị

giải_quyết_thực_thể3.jpg

Graph RAG với LangChain và Neo4j

Giải quyết thực thể dựa trên đồ thị

giải_quyết_thực_thể4.jpg

Graph RAG với LangChain và Neo4j

Giải quyết thực thể dựa trên đồ thị

giải_quyết_thực_thể5.jpg

Graph RAG với LangChain và Neo4j

Nhận diện người tương tự

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 với LangChain và Neo4j

Dùng quan hệ tương đồng

sơ đồ đồ thị gồm các nút người, với hai nút người và một quan hệ similar. Cả hai đều liên kết tới các nút Line

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

Ayo berlatih!

Graph RAG với LangChain và Neo4j

Preparing Video For Download...