RAG Graf Teks-ke-Cypher dengan Neo4j

Graph RAG dengan LangChain dan Neo4j

Adam Cowley

Manager, Developer Education at Neo4j

Mengonversi bahasa alami ke Cypher

Alur aplikasi dari masukan pengguna ke aplikasi dan prompt yang dikirim ke LLM

Graph RAG dengan LangChain dan Neo4j

Mengonversi bahasa alami ke Cypher

Diagram aplikasi yang ditugaskan menghasilkan pernyataan Cypher

Graph RAG dengan LangChain dan Neo4j

Mengonversi bahasa alami ke Cypher

Langkah pembuatan Cypher dalam aplikasi menggunakan skema basis data graf

Graph RAG dengan LangChain dan Neo4j

Mengonversi bahasa alami ke Cypher

Diagram aplikasi yang menunjukkan pembuatan Cypher diikuti fase eksekusi

Graph RAG dengan LangChain dan Neo4j

Mengonversi bahasa alami ke Cypher

Pernyataan Cypher dieksekusi oleh aplikasi dan hasilnya dikembalikan ke aplikasi

Graph RAG dengan LangChain dan Neo4j

Mengonversi bahasa alami ke Cypher

Hasil yang diambil oleh pernyataan Cypher dikirim kembali ke aplikasi

Graph RAG dengan LangChain dan Neo4j

Mengonversi bahasa alami ke Cypher

Hasil disisipkan ke prompt dan siap dikirim ke LLM

Graph RAG dengan LangChain dan Neo4j

Membangun rantai teks-ke-Cypher

prompt = SystemMessagePromptTemplate.from_template(""" 
You are an expert Neo4j developer. Use the following database schema to write 
a Cypher statement to answer the user's question...

Schema: {schema}
Question: {question}
""", partial_variables={"schema": graph.schema})


# Compile the chain cypher_chain = cypher_prompt | llm | StrOutputParser()
# Invoke the chain cypher_chain.invoke({"question": "Who wrote Building Knowledge Graphs?"})
MATCH (b:Book {title: "Building Knowledge Graphs"})-[:WRITTEN_BY]->(a:Author) ...
Graph RAG dengan LangChain dan Neo4j
QA_PROMPT = "You are a helpful assistant. Use the data retrieved from the graph to answer the
user's question. Data: {context}"

answer_prompt = ChatPromptTemplate.from_messages([
    SystemMessagePromptTemplate.from_template(QA_PROMPT),
    HumanMessagePromptTemplate.from_template("Question: {question}")
])
Graph RAG dengan LangChain dan Neo4j
cypher_qa_chain = (
  # Generate and execute the Cypher to get results
  {

"question": RunnablePassthrough()
"context": text_to_cypher_chain | RunnableLambda(lambda cypher: graph.query(cypher)),
}
# Format prompt and pass to LLM | answer_prompt | answer_llm | StrOutputParser()
)
res = cypher_qa_chain.invoke({"question": "Who wrote Building Knowledge Graphs?"})
Building Knowledge Graphs ditulis oleh Dr Jesus Barrasa dan Dr Jim Webber...
Graph RAG dengan LangChain dan Neo4j

Ayo berlatih!

Graph RAG dengan LangChain dan Neo4j

Preparing Video For Download...