De Graph RAG-keten maken

Retrieval Augmented Generation (RAG) met LangChain

Meri Nova

Machine Learning Engineer

De Graph RAG-architectuur bouwen

Een graafdatabase.

Retrieval Augmented Generation (RAG) met LangChain

De Graph RAG-architectuur bouwen

Documenten worden omgezet naar graafdocumenten en opgeslagen in de graafdatabase.

Retrieval Augmented Generation (RAG) met LangChain

De Graph RAG-architectuur bouwen

Een Cypher-query haalt graafdocumenten op uit de database. Ook getoond: een gebruikersinvoer en een antwoord in natuurlijke taal.

Retrieval Augmented Generation (RAG) met LangChain

De Graph RAG-architectuur bouwen

Een vertaler van natuurlijke taal naar Cypher zet de invoer om in een Cypher-query en de opgehaalde graafdocumenten terug naar natuurlijke taal.

Retrieval Augmented Generation (RAG) met LangChain

Van invoer naar Cypher-query's

Een eenvoudige graaf met drie nodes en drie relaties. Twee nodes zijn personen en één is een locatie die James heeft bezocht.

Retrieval Augmented Generation (RAG) met LangChain

Van invoer naar Cypher-query's

Een gebruikersvraag: "Where has James visited?".

Retrieval Augmented Generation (RAG) met LangChain

Van invoer naar Cypher-query's

De Cypher-query wordt gegenereerd met het graafschema en de gebruikersinvoer.

Retrieval Augmented Generation (RAG) met LangChain

GraphCypherQAChain

De Graph RAG-architectuur die gebruikersinvoer vertaalt naar Cypher-query's en een antwoord in natuurlijke taal teruggeeft.

Retrieval Augmented Generation (RAG) met LangChain

GraphCypherQAChain

De Graph RAG-architectuur met de generate-cypher-keten en de summarize-results-keten gemarkeerd.

Retrieval Augmented Generation (RAG) met LangChain

Schema verversen

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

De graaf bevragen

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

De graaf bevragen

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

Aanpassen

chain = GraphCypherQAChain.from_llm(
    llm=ChatOpenAI(api_key="...", temperature=0), graph=graph, verbose=True
)
  • qa_prompt: Prompt-sjabloon voor resultaatgeneratie
  • cypher_prompt: Prompt-sjabloon voor Cypher-generatie
  • cypher_llm: LLM voor Cypher-generatie
  • qa_llm: LLM voor resultaatgeneratie
Retrieval Augmented Generation (RAG) met LangChain

Laten we oefenen!

Retrieval Augmented Generation (RAG) met LangChain

Preparing Video For Download...