Hibrit bir alma zinciri oluşturma

LangChain ve Neo4j ile Graph RAG

Adam Cowley

Manager, Developer Education at Neo4j

Almayı birleştirme

birleştirilmiş_alma1.jpg

LangChain ve Neo4j ile Graph RAG

Almayı birleştirme

birleştirilmiş_alma2.jpg

LangChain ve Neo4j ile Graph RAG

Fonksiyonları çalıştırılabilir kılma

from langchain_core.runnables import RunnableLambda


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

Çalıştırılabilir geçirimler

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 ve Neo4j ile Graph RAG

Soru-Cevap istemi oluşturma

graphrag_qa_prompt = ChatPromptTemplate.from_messages([

SystemMessagePromptTemplate.from_template(""" Romeo ve Juliet oyunu hakkında soruları yanıtlayan yardımcı bir asistansınız. Size bir soru ve bir bağlam verilecek. Soru: {input} """),
LangChain ve Neo4j ile Graph RAG

Soru-Cevap istemi oluşturma

    ...
    SystemMessagePromptTemplate.from_template("""
    Aşağıdaki bağlam, soruyu yanıtlamanıza yardımcı olmak için vektör aramasıyla veritabanından getirildi: 
    {vectors}

    """),
LangChain ve Neo4j ile Graph RAG

Soru-Cevap istemi oluşturma

    ...
    SystemMessagePromptTemplate.from_template("""
    Aşağıdaki veriler, soruyu yanıtlamak için Cypher kullanılarak bilgi grafından getirildi.  
    {records}

    Bilgi grafındaki bilgileri yetkili kabul edebilirsiniz.

    Bu yanıtta bilgi yoksa vektör arama sonuçlarına başvurun.

    Yanıt ikisinde de yoksa bilmiyorum deyin ve önceden var olan bilgilere dayanmayın."""),

LangChain ve Neo4j ile Graph RAG

Bir Soru-Cevap Zinciri oluşturma

# 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 ve Neo4j ile Graph RAG

Soru-Cevap Zincirini çağırma

graphrag_qa_chain.invoke({"input": "Romeo'nun en iyi arkadaşı kim?"})
Romeo'nun en yakın arkadaşları Mercutio ve Benvolio'dur.
LangChain ve Neo4j ile Graph RAG

Vamos praticar!

LangChain ve Neo4j ile Graph RAG

Preparing Video For Download...