ハイブリッド検索チェーンの構築

Graph RAG with LangChain and Neo4j

Adam Cowley

Manager, Developer Education at Neo4j

検索の組み合わせ

combined_retrieval1.jpg

Graph RAG with LangChain and Neo4j

検索の組み合わせ

combined_retrieval2.jpg

Graph RAG with LangChain and Neo4j

関数を Runnable にする

from langchain_core.runnables import RunnableLambda


double_chain = RunnableLambda( lambda input: input["input"] * 2 )
double_chain.invoke({"input": 2})
4
Graph RAG with LangChain and Neo4j

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}
Graph RAG with LangChain and Neo4j

Q&A プロンプトの作成

graphrag_qa_prompt = ChatPromptTemplate.from_messages([

SystemMessagePromptTemplate.from_template(""" あなたは『ロミオとジュリエット』に関する質問に答える有用なアシスタントです。 質問とコンテキストが与えられます。 質問: {input} """),
Graph RAG with LangChain and Neo4j

Q&A プロンプトの作成

    ...
    SystemMessagePromptTemplate.from_template("""
    次のコンテキストは、ベクトル検索でデータベースから取得しました。質問への回答に利用してください。
    {vectors}

    """),
Graph RAG with LangChain and Neo4j

Q&A プロンプトの作成

    ...
    SystemMessagePromptTemplate.from_template("""
    次のデータは、Cypher を用いてナレッジグラフから取得しました。質問に回答してください。
    {records}

    ナレッジグラフ内の情報は信頼できるものとして扱ってください。

    この回答に情報がなければ、ベクトル検索結果にフォールバックしてください。

    どちらにもなければ、知らないとだけ述べ、既存知識には依拠しないでください。"""),

Graph RAG with LangChain and Neo4j

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()
Graph RAG with LangChain and Neo4j

Q&A チェーンの呼び出し

graphrag_qa_chain.invoke({"input": "Who is Romeo's best friend?"})
ロミオの親友はマキューシオとベンヴォーリオです。
Graph RAG with LangChain and Neo4j

練習しましょう!

Graph RAG with LangChain and Neo4j

Preparing Video For Download...