查詢知識圖譜

使用 LangChain 與 Neo4j 的 Graph RAG

Adam Cowley

Manager, Developer Education at Neo4j

Cypher 以 ASCII-art 進行樣式比對

 

人物在電影中演出之圖形樣式

 

MATCH


使用 LangChain 與 Neo4j 的 Graph RAG

Cypher 以 ASCII-art 進行樣式比對

 

人物在電影中演出之圖形樣式

 

MATCH (        )               (       )


使用 LangChain 與 Neo4j 的 Graph RAG

Cypher 以 ASCII-art 進行樣式比對

 

人物在電影中演出之圖形樣式

 

MATCH ( :Person)               ( :Movie)


使用 LangChain 與 Neo4j 的 Graph RAG

Cypher 以 ASCII-art 進行樣式比對

 

人物在電影中演出之圖形樣式

 

MATCH ( :Person)-            ->( :Movie)


使用 LangChain 與 Neo4j 的 Graph RAG

Cypher 以 ASCII-art 進行樣式比對

 

人物在電影中演出之圖形樣式

 

MATCH ( :Person)-[ :ACTED_IN]->( :Movie)


使用 LangChain 與 Neo4j 的 Graph RAG

Cypher 以 ASCII-art 進行樣式比對

 

人物在電影中演出之圖形樣式

 

MATCH (a:Person)-[r:ACTED_IN]->(m:Movie)


使用 LangChain 與 Neo4j 的 Graph RAG

結果過濾

 

人物在電影中演出之圖形樣式

 

MATCH (a:Person)-[r:ACTED_IN]->(m:Movie)

WHERE a.name = 'Tom Hanks'
使用 LangChain 與 Neo4j 的 Graph RAG

控制輸出

 

人物在電影中演出之圖形樣式

 

MATCH (a:Person)-[r:ACTED_IN]->(m:Movie)

WHERE a.name = 'Tom Hanks'
RETURN a.name, m.title AS movieTitle, r.roles AS roles
使用 LangChain 與 Neo4j 的 Graph RAG

Cypher 如何運作

一個示意圖,顯示網路中心節點及其關係展開,突顯穿越網路的路徑

使用 LangChain 與 Neo4j 的 Graph RAG

CREATE 子句

使用 CREATE 子句可在圖中建立樣式

CREATE (p:Person {name: "Adam"})

CREATE (c:Company {name: "Neo4j"})
CREATE (p)-[:WORKS_FOR]->(c)
使用 LangChain 與 Neo4j 的 Graph RAG

MERGE 子句

MERGE 子句會在圖中尋找或建立樣式

MERGE (p:Person {name: "Adam"})

MERGE (c:Company {name: "Neo4j"})
使用 LangChain 與 Neo4j 的 Graph RAG

在 LangChain 中使用 Cypher 陳述式

from langchain_neo4j import Neo4jGraph

graph = Neo4jGraph(url=NEO4J_URI, username=NEO4J_USERNAME, password=NEO4J_PASSWORD)
# 執行一段 Cypher 陳述式
graph.query(

"MATCH (p:Person {name: $name}) RETURN p",
{"name": "Your name"}
)
1 Cypher injection: https://neo4j.com/developer/kb/protecting-against-cypher-injection/
使用 LangChain 與 Neo4j 的 Graph RAG

一起來練習吧!

使用 LangChain 與 Neo4j 的 Graph RAG

Preparing Video For Download...