Skapa Graph RAG-kedjan

Retrieval Augmented Generation (RAG) med LangChain

Meri Nova

Machine Learning Engineer

Bygg Graph RAG-arkitekturen

En grafdatabas.

Retrieval Augmented Generation (RAG) med LangChain

Bygg Graph RAG-arkitekturen

Dokument omvandlas till grafdokument och lagras i grafdatabasen.

Retrieval Augmented Generation (RAG) med LangChain

Bygg Graph RAG-arkitekturen

En Cypher-fråga används för att hämta grafdokument från databasen. En användarfråga och ett svar på naturligt språk visas också.

Retrieval Augmented Generation (RAG) med LangChain

Bygg Graph RAG-arkitekturen

En översättare från naturligt språk till Cypher omvandlar indata till en Cypher-fråga och de hämtade grafdokumenten tillbaka till naturligt språk.

Retrieval Augmented Generation (RAG) med LangChain

Från användarindata till Cypher-frågor

En enkel graf med tre noder och tre relationer. Två noder representerar personer och en annan representerar en plats som James har besökt.

Retrieval Augmented Generation (RAG) med LangChain

Från användarindata till Cypher-frågor

En användarfråga: "Where has James visited?".

Retrieval Augmented Generation (RAG) med LangChain

Från användarindata till Cypher-frågor

Cypher-frågan genereras med hjälp av gramschemat och användarindata.

Retrieval Augmented Generation (RAG) med LangChain

GraphCypherQAChain

Graph RAG-arkitekturen för att översätta användarindata till Cypher-frågor och returnera ett svar på naturligt språk.

Retrieval Augmented Generation (RAG) med LangChain

GraphCypherQAChain

Graph RAG-arkitekturen med kedjan för att generera Cypher markerad och kedjan för att sammanfatta resultat markerad.

Retrieval Augmented Generation (RAG) med LangChain

Uppdatera schema

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

Fråga grafen

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

Fråga grafen

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

Anpassning

chain = GraphCypherQAChain.from_llm(
    llm=ChatOpenAI(api_key="...", temperature=0), graph=graph, verbose=True
)
  • qa_prompt: Promptmall för resultatgenerering
  • cypher_prompt: Promptmall för Cypher-generering
  • cypher_llm: LLM för Cypher-generering
  • qa_llm: LLM för resultatgenerering
Retrieval Augmented Generation (RAG) med LangChain

Nu kör vi en övning!

Retrieval Augmented Generation (RAG) med LangChain

Preparing Video For Download...