Crearea lanțului Graph RAG

Retrieval Augmented Generation (RAG) cu LangChain

Meri Nova

Machine Learning Engineer

Construirea arhitecturii Graph RAG

O bază de date de tip graf.

Retrieval Augmented Generation (RAG) cu LangChain

Construirea arhitecturii Graph RAG

Documente transformate în documente de graf și stocate în baza de date de tip graf.

Retrieval Augmented Generation (RAG) cu LangChain

Construirea arhitecturii Graph RAG

O interogare Cypher este folosită pentru a prelua documente de graf din bază. Sunt afișate și inputul utilizatorului și răspunsul în limbaj natural.

Retrieval Augmented Generation (RAG) cu LangChain

Construirea arhitecturii Graph RAG

Un translator din limbaj natural în Cypher convertește inputul în interogare Cypher și documentele graf recuperate înapoi în limbaj natural.

Retrieval Augmented Generation (RAG) cu LangChain

De la inputuri la interogări Cypher

Un graf simplu cu trei noduri și trei relații. Două noduri reprezintă persoane, iar unul reprezintă o locație vizitată de James.

Retrieval Augmented Generation (RAG) cu LangChain

De la inputuri la interogări Cypher

Un input de utilizator cu întrebarea „Where has James visited?".

Retrieval Augmented Generation (RAG) cu LangChain

De la inputuri la interogări Cypher

Interogarea Cypher este generată pe baza schemei grafului și a inputului utilizatorului.

Retrieval Augmented Generation (RAG) cu LangChain

GraphCypherQAChain

Arhitectura Graph RAG pentru traducerea inputurilor utilizatorului în interogări Cypher și returnarea unui răspuns în limbaj natural.

Retrieval Augmented Generation (RAG) cu LangChain

GraphCypherQAChain

Arhitectura Graph RAG cu lanțul de generare Cypher și lanțul de sumarizare a rezultatelor evidențiate.

Retrieval Augmented Generation (RAG) cu LangChain

Reîmprospătarea schemei

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) cu LangChain

Interogarea grafului

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) cu LangChain

Interogarea grafului

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) cu LangChain

Personalizare

chain = GraphCypherQAChain.from_llm(
    llm=ChatOpenAI(api_key="...", temperature=0), graph=graph, verbose=True
)
  • qa_prompt: Șablon de prompt pentru generarea rezultatelor
  • cypher_prompt: Șablon de prompt pentru generarea Cypher
  • cypher_llm: LLM pentru generarea Cypher
  • qa_llm: LLM pentru generarea rezultatelor
Retrieval Augmented Generation (RAG) cu LangChain

Să exersăm!

Retrieval Augmented Generation (RAG) cu LangChain

Preparing Video For Download...