Tworzenie łańcucha Graph RAG

Retrieval Augmented Generation (RAG) z LangChain

Meri Nova

Machine Learning Engineer

Budowanie architektury Graph RAG

Baza danych grafowych.

Retrieval Augmented Generation (RAG) z LangChain

Budowanie architektury Graph RAG

Dokumenty przekształcane w dokumenty grafowe i przechowywane w bazie danych grafowych.

Retrieval Augmented Generation (RAG) z LangChain

Budowanie architektury Graph RAG

Zapytanie Cypher pobiera dokumenty grafowe z bazy. Widoczne jest też zapytanie użytkownika i odpowiedź w języku naturalnym.

Retrieval Augmented Generation (RAG) z LangChain

Budowanie architektury Graph RAG

Translator z języka naturalnego na Cypher konwertuje dane wejściowe na zapytanie Cypher i zwraca pobrane dokumenty grafowe w języku naturalnym.

Retrieval Augmented Generation (RAG) z LangChain

Od zapytań użytkownika do zapytań Cypher

Prosty graf z trzema węzłami i trzema relacjami. Dwa węzły reprezentują osoby, a jeden – lokalizację odwiedzoną przez Jamesa.

Retrieval Augmented Generation (RAG) z LangChain

Od zapytań użytkownika do zapytań Cypher

Zapytanie użytkownika: „Where has James visited?".

Retrieval Augmented Generation (RAG) z LangChain

Od zapytań użytkownika do zapytań Cypher

Zapytanie Cypher generowane na podstawie schematu grafu i danych wejściowych użytkownika.

Retrieval Augmented Generation (RAG) z LangChain

GraphCypherQAChain

Architektura Graph RAG tłumacząca dane wejściowe na zapytania Cypher i zwracająca odpowiedź w języku naturalnym.

Retrieval Augmented Generation (RAG) z LangChain

GraphCypherQAChain

Architektura Graph RAG z wyróżnionym łańcuchem generowania Cypher i łańcuchem podsumowania wyników.

Retrieval Augmented Generation (RAG) z LangChain

Odświeżanie schematu

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

Odpytywanie grafu

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

Odpytywanie grafu

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

Dostosowywanie

chain = GraphCypherQAChain.from_llm(
    llm=ChatOpenAI(api_key="...", temperature=0), graph=graph, verbose=True
)
  • qa_prompt: Szablon promptu do generowania odpowiedzi
  • cypher_prompt: Szablon promptu do generowania Cypher
  • cypher_llm: LLM do generowania Cypher
  • qa_llm: LLM do generowania odpowiedzi
Retrieval Augmented Generation (RAG) z LangChain

Czas na ćwiczenia!

Retrieval Augmented Generation (RAG) z LangChain

Preparing Video For Download...