Creación de la cadena Graph RAG

Retrieval Augmented Generation (RAG) con LangChain

Meri Nova

Machine Learning Engineer

Crear la arquitectura Graph RAG

Una base de datos de grafos.

Retrieval Augmented Generation (RAG) con LangChain

Crear la arquitectura Graph RAG

Documentos transformados en documentos de grafo y guardados en la base de datos de grafos.

Retrieval Augmented Generation (RAG) con LangChain

Crear la arquitectura Graph RAG

Se usa una consulta Cypher para recuperar documentos de grafo de la base de datos. También se muestra una entrada del usuario y una respuesta en lenguaje natural.

Retrieval Augmented Generation (RAG) con LangChain

Crear la arquitectura Graph RAG

Un traductor de lenguaje natural a Cypher convierte la entrada en una consulta Cypher y los documentos recuperados de nuevo a lenguaje natural.

Retrieval Augmented Generation (RAG) con LangChain

De entradas de usuario a consultas Cypher

Un grafo simple con tres nodos y tres relaciones. Dos nodos representan personas y otro un lugar que James ha visitado.

Retrieval Augmented Generation (RAG) con LangChain

De entradas de usuario a consultas Cypher

Una entrada del usuario que pregunta «¿Dónde ha estado James?».

Retrieval Augmented Generation (RAG) con LangChain

De entradas de usuario a consultas Cypher

La consulta Cypher se genera usando el esquema del grafo y la entrada del usuario.

Retrieval Augmented Generation (RAG) con LangChain

GraphCypherQAChain

La arquitectura Graph RAG traduce entradas de usuario a consultas Cypher y devuelve una respuesta en lenguaje natural.

Retrieval Augmented Generation (RAG) con LangChain

GraphCypherQAChain

La arquitectura Graph RAG con la cadena de generación de Cypher y la cadena de resumen de resultados resaltadas.

Retrieval Augmented Generation (RAG) con LangChain

Actualizar el esquema

graph.refresh_schema()
print(graph.get_schema)
Propiedades de nodos:
Document {title: STRING, id: STRING, text: STRING, summary: STRING, source: STRING}
Concept {id: STRING}
Organization {id: STRING}
Propiedades de relaciones:

Relaciones:
(:Document)-[:MENTIONS]->(:Organization)
(:Concept)-[:DEVELOPED_BY]->(:Person)
Retrieval Augmented Generation (RAG) con LangChain

Consultar el grafo

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

Consultar el grafo

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

Personalización

chain = GraphCypherQAChain.from_llm(
    llm=ChatOpenAI(api_key="...", temperature=0), graph=graph, verbose=True
)
  • qa_prompt: Plantilla de prompt para generar resultados
  • cypher_prompt: Plantilla de prompt para generar Cypher
  • cypher_llm: LLM para generar Cypher
  • qa_llm: LLM para generar resultados
Retrieval Augmented Generation (RAG) con LangChain

¡Vamos a practicar!

Retrieval Augmented Generation (RAG) con LangChain

Preparing Video For Download...