हाइब्रिड रिट्रीवल चेन बनाना

LangChain और Neo4j के साथ Graph RAG

Adam Cowley

Manager, Developer Education at Neo4j

रिट्रीवल को संयोजित करना

संयुक्त रिट्रीवल1

LangChain और Neo4j के साथ Graph RAG

रिट्रीवल को संयोजित करना

संयुक्त रिट्रीवल2

LangChain और Neo4j के साथ Graph RAG

फंक्शनों को रन करने योग्य बनाना

from langchain_core.runnables import RunnableLambda


double_chain = RunnableLambda( lambda input: input["input"] * 2 )
double_chain.invoke({"input": 2})
4
LangChain और Neo4j के साथ Graph RAG

Runnable पासथ्रू

from langchain_core.runnables import RunnablePassthrough


double_passthrough = RunnablePassthrough.assign( doubled=RunnableLambda(lambda x: x["input"] * 2) )
double_passthrough.invoke({"input": 2})
{"input": 2, "doubled": 4}
LangChain और Neo4j के साथ Graph RAG

Q&A प्रॉम्प्ट बनाना

graphrag_qa_prompt = ChatPromptTemplate.from_messages([

SystemMessagePromptTemplate.from_template(""" You are a helpful assistant answering questions about the play Romeo and Juliet. You are given a question and a context. Question: {input} """),
LangChain और Neo4j के साथ Graph RAG

Q&A प्रॉम्प्ट बनाना

    ...
    SystemMessagePromptTemplate.from_template("""
    The following context has been retrieved from the database using vector search to help
    you answer the question: 

    {vectors}
    """),
LangChain और Neo4j के साथ Graph RAG

Q&A प्रॉम्प्ट बनाना

    ...
    SystemMessagePromptTemplate.from_template("""
    The following data has been retrieved from the knowledge graph using Cypher to 
    answer the question.  

    {records}

    You can treat any information contained from the knowledge graph as authoritative.

    If the information does not exist in this answer, fall back to vector search results.

    If the answer is not included in either just say that you don't know and don't rely
    on pre-existing knowledge."""),
LangChain और Neo4j के साथ Graph RAG

Q&A चेन बनाना

# line_retriever = Neo4jVector().as_retriever()
# text_to_cypher_chain = text_to_cypher_prompt | llm | StrOutputParser()
# graph = Neo4jGraph()


graphrag_qa_chain = RunnablePassthrough.assign(
vectors=RunnableLambda(lambda x: line_retriever.invoke(x["input"])),
records=text_to_cypher_chain | graph.query
)
| graphrag_qa_prompt
| llm
| StrOutputParser()
LangChain और Neo4j के साथ Graph RAG

Q&A चेन चलाना

graphrag_qa_chain.invoke({"input": "Who is Romeo's best friend?"})
Romeo's best friends are Mercutio and Benvolio.
LangChain और Neo4j के साथ Graph RAG

अभ्यास करते हैं!

LangChain और Neo4j के साथ Graph RAG

Preparing Video For Download...