Documenten opslaan en opvragen

Retrieval Augmented Generation (RAG) met LangChain

Meri Nova

Machine Learning Engineer

De Neo4j-database instantiëren

from langchain_community.graphs import Neo4jGraph

graph = Neo4jGraph(url="bolt://localhost:7687", username="neo4j", password="...")
import os

url = os.environ["NEO4J_URI"]
user = os.environ["NEO4J_USERNAME"]
password = os.environ["NEO4J_PASSWORD"]

graph = Neo4jGraph(url=url, username=user, password=password)
1 https://neo4j.com/download/
Retrieval Augmented Generation (RAG) met LangChain

Graaftdocumenten opslaan

from langchain_experimental.graph_transformers import LLMGraphTransformer

llm = ChatOpenAI(api_key="...", temperature=0, model="gpt-4o-mini")
llm_transformer = LLMGraphTransformer(llm=llm)

graph_documents = llm_transformer.convert_to_graph_documents(documents)
Retrieval Augmented Generation (RAG) met LangChain

Graaftdocumenten opslaan

graph.add_graph_documents(
  graph_documents,

include_source=True,
baseEntityLabel=True
)
  • include_source=True: koppel knooppunten aan brondocumenten met de MENTIONS-rand
  • baseEntityLabel=True: voeg het label __Entity__ toe aan elk knooppunt
Retrieval Augmented Generation (RAG) met LangChain

De graafdocumenten weergegeven als knooppunten en randen.

Retrieval Augmented Generation (RAG) met LangChain

Een ingezoomde versie van de vorige afbeelding met knooppunten over OpenAI-modellen.

Retrieval Augmented Generation (RAG) met LangChain

Databaseschema

print(graph.get_schema)
Knooppunteigenschappen:
Concept {id: STRING}
Architecture {id: STRING}
Organization {id: STRING}
Event {id: STRING}
Paper {id: STRING}

Relaties:
(:Concept)-[:DEVELOPED_BY]->(:Person)
(:Architecture)-[:BASED_ON]->(:Concept)
(:Organization)-[:PROPOSED]->(:Concept)
(:Document)-[:MENTIONS]->(:Event)
(:Paper)-[:BASED_ON]->(:Concept)
Retrieval Augmented Generation (RAG) met LangChain

Query’s in Neo4j - Cypher Query Language

Een knooppunt James met een relatie friends naar een onbekend knooppunt person.

Retrieval Augmented Generation (RAG) met LangChain

Query’s in Neo4j - Cypher Query Language

cypher4.jpg

Retrieval Augmented Generation (RAG) met LangChain

Query’s in Neo4j - Cypher Query Language

cypher4.jpg

Retrieval Augmented Generation (RAG) met LangChain

Query’s in Neo4j - Cypher Query Language

cypher4.jpg

Retrieval Augmented Generation (RAG) met LangChain

Query’s in Neo4j - Cypher Query Language

cypher4.jpg

Retrieval Augmented Generation (RAG) met LangChain

De LLM-graaf bevragen

results = graph.query("""
MATCH (gpt4:Model {id: "Gpt-4"})-[:DEVELOPED_BY]->(org:Organization)
RETURN org
""")

print(results)
[{'org': {'id': 'Openai'}}]
Retrieval Augmented Generation (RAG) met LangChain

Laten we oefenen!

Retrieval Augmented Generation (RAG) met LangChain

Preparing Video For Download...