Створення ланцюжка Graph RAG

Retrieval Augmented Generation (RAG) з LangChain

Meri Nova

Machine Learning Engineer

Побудова архітектури Graph RAG

Графова база даних.

Retrieval Augmented Generation (RAG) з LangChain

Побудова архітектури Graph RAG

Документи перетворюються на графові документи та зберігаються в графовій базі.

Retrieval Augmented Generation (RAG) з LangChain

Побудова архітектури Graph RAG

Cypher‑запит використовується для отримання графових документів із бази. Також показано користувацьке запитання та відповідь природною мовою.

Retrieval Augmented Generation (RAG) з LangChain

Побудова архітектури Graph RAG

Перекладач «природна мова → Cypher» перетворює вхід природною мовою на Cypher‑запит і повертає отримані графові документи у природній мові.

Retrieval Augmented Generation (RAG) з LangChain

Від запитів користувача до Cypher‑запитів

Простий граф із трьома вузлами та трьома зв'язками. Два вузли — це люди, ще один — місце, яке відвідав James.

Retrieval Augmented Generation (RAG) з LangChain

Від запитів користувача до Cypher‑запитів

Запит користувача: «Where has James visited?»

Retrieval Augmented Generation (RAG) з LangChain

Від запитів користувача до Cypher‑запитів

Cypher‑запит генерується на основі схеми графа та запиту користувача.

Retrieval Augmented Generation (RAG) з LangChain

GraphCypherQAChain

Архітектура Graph RAG для перекладу запитів користувача в Cypher‑запити й повернення відповіді природною мовою.

Retrieval Augmented Generation (RAG) з LangChain

GraphCypherQAChain

Архітектура Graph RAG із підсвіченим ланцюжком generate cypher та ланцюжком summarize results.

Retrieval Augmented Generation (RAG) з LangChain

Оновлення схеми

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

Запити до графа

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

Запити до графа

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

Налаштування

chain = GraphCypherQAChain.from_llm(
    llm=ChatOpenAI(api_key="...", temperature=0), graph=graph, verbose=True
)
  • qa_prompt: Шаблон підказки для генерування відповіді
  • cypher_prompt: Шаблон підказки для генерування Cypher
  • cypher_llm: LLM для генерування Cypher
  • qa_llm: LLM для генерування відповіді
Retrieval Augmented Generation (RAG) з LangChain

Давайте потренуємось!

Retrieval Augmented Generation (RAG) з LangChain

Preparing Video For Download...