Graph RAG với LangChain và Neo4j
Adam Cowley
Manager, Developer Education at Neo4j
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.
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
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"},...
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 ]})





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 pathsORDER BY nodesInCommon DESC LIMIT 10

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