Создание цепочки 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

Простой граф с тремя узлами и тремя связями. Два узла представляют людей, третий — место, которое посетил Джеймс.

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 с выделенными цепочками генерации Cypher и обобщения результатов.

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: языковая модель для генерации Cypher
  • qa_llm: языковая модель для генерации ответа
Retrieval Augmented Generation (RAG) с LangChain

Давайте потренируемся!

Retrieval Augmented Generation (RAG) с LangChain

Preparing Video For Download...