Lagra och söka i dokument

Retrieval Augmented Generation (RAG) med LangChain

Meri Nova

Machine Learning Engineer

Instansiera Neo4j-databasen

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

Lagra grafdokument

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

Lagra grafdokument

graph.add_graph_documents(
  graph_documents,

include_source=True,
baseEntityLabel=True
)
  • include_source=True: kopplar noder till källdokument via MENTIONS-kant
  • baseEntityLabel=True: lägger till etiketten __Entity__ på varje nod
Retrieval Augmented Generation (RAG) med LangChain

Grafdokumenten representerade som noder och kanter.

Retrieval Augmented Generation (RAG) med LangChain

En inzoomad version av föregående bild med noder om OpenAI-modeller.

Retrieval Augmented Generation (RAG) med LangChain

Databasschema

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

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

Söka i Neo4j – Cypher Query Language

En nod kallad James med en relation kallad friends som pekar mot en okänd personnod.

Retrieval Augmented Generation (RAG) med LangChain

Söka i Neo4j – Cypher Query Language

cypher4.jpg

Retrieval Augmented Generation (RAG) med LangChain

Söka i Neo4j – Cypher Query Language

cypher4.jpg

Retrieval Augmented Generation (RAG) med LangChain

Söka i Neo4j – Cypher Query Language

cypher4.jpg

Retrieval Augmented Generation (RAG) med LangChain

Söka i Neo4j – Cypher Query Language

cypher4.jpg

Retrieval Augmented Generation (RAG) med LangChain

Söka i LLM-grafen

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

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

Nu kör vi en övning!

Retrieval Augmented Generation (RAG) med LangChain

Preparing Video For Download...