Membuat rantai Graph RAG

Retrieval Augmented Generation (RAG) dengan LangChain

Meri Nova

Machine Learning Engineer

Membangun arsitektur Graph RAG

Basis data graf.

Retrieval Augmented Generation (RAG) dengan LangChain

Membangun arsitektur Graph RAG

Dokumen diubah menjadi dokumen graf dan disimpan di basis data graf.

Retrieval Augmented Generation (RAG) dengan LangChain

Membangun arsitektur Graph RAG

Kueri Cypher digunakan untuk mengambil dokumen graf dari basis data. Masukan pengguna dan jawaban bahasa alami juga ditampilkan.

Retrieval Augmented Generation (RAG) dengan LangChain

Membangun arsitektur Graph RAG

Penerjemah natural language ke Cypher mengubah input bahasa alami menjadi kueri Cypher dan mengubah dokumen graf yang diambil kembali ke bahasa alami.

Retrieval Augmented Generation (RAG) dengan LangChain

Dari masukan pengguna ke kueri Cypher

Graf sederhana berisi tiga node dan tiga relasi. Dua node mewakili orang dan satu lagi lokasi yang pernah dikunjungi James.

Retrieval Augmented Generation (RAG) dengan LangChain

Dari masukan pengguna ke kueri Cypher

Masukan pengguna bertanya "Ke mana saja James pernah berkunjung?".

Retrieval Augmented Generation (RAG) dengan LangChain

Dari masukan pengguna ke kueri Cypher

Kueri Cypher dibuat dari skema graf dan masukan pengguna.

Retrieval Augmented Generation (RAG) dengan LangChain

GraphCypherQAChain

Arsitektur Graph RAG untuk menerjemahkan masukan pengguna menjadi kueri Cypher dan mengembalikan jawaban bahasa alami.

Retrieval Augmented Generation (RAG) dengan LangChain

GraphCypherQAChain

Arsitektur Graph RAG dengan rantai generate cypher dan summarize results disorot.

Retrieval Augmented Generation (RAG) dengan LangChain

Menyegarkan skema

graph.refresh_schema()
print(graph.get_schema)
Node properties:
Document {title: STRING, id: STRING, text: STRING, summary: STRING, source: STRING}
Concept {id: STRING}
Organization {id: STRING}
Relationship properties:

The relationships:
(:Document)-[:MENTIONS]->(:Organization)
(:Concept)-[:DEVELOPED_BY]->(:Person)
Retrieval Augmented Generation (RAG) dengan LangChain

Mengkueri graf

from langchain_community.chains.graph_qa.cypher import GraphCypherQAChain

chain = GraphCypherQAChain.from_llm( llm=ChatOpenAI(api_key="...", temperature=0), graph=graph, verbose=True )
result = chain.invoke({"query": "What is the most accurate model?"})
1 https://api.python.langchain.com/en/latest/chains/langchain_community.chains.graph_qa.cypher. GraphCypherQAChain.html
Retrieval Augmented Generation (RAG) dengan LangChain

Mengkueri graf

print(f"Final answer: {result['result']}")
> Entering new GraphCypherQAChain chain...
Generated Cypher:
MATCH (m:Model)
RETURN m
ORDER BY m.accuracy DESC
LIMIT 1;
Full Context:
[{'m': {'id': 'Artificial Neural Networks'}}]

> Finished chain.


Final answer: Artificial Neural Networks
Retrieval Augmented Generation (RAG) dengan LangChain

Kustomisasi

chain = GraphCypherQAChain.from_llm(
    llm=ChatOpenAI(api_key="...", temperature=0), graph=graph, verbose=True
)
  • qa_prompt: Template prompt untuk menghasilkan jawaban
  • cypher_prompt: Template prompt untuk menghasilkan Cypher
  • cypher_llm: LLM untuk menghasilkan Cypher
  • qa_llm: LLM untuk menghasilkan jawaban
Retrieval Augmented Generation (RAG) dengan LangChain

Ayo berlatih!

Retrieval Augmented Generation (RAG) dengan LangChain

Preparing Video For Download...