Graph RAG met LangChain en Neo4j
Adam Cowley
Manager, Developer Education at Neo4j
Hoe is het om bij Neo4j te werken?

Hoe is het om bij Neo4j te werken?

Hoe is het om bij Neo4j te werken?

text-eigenschap
text-eigenschap
from langchain_neo4j import Neo4jVector
Neo4jVector.from_documents(): Maak nodes en onderliggende index van DocumentsNeo4jVector.from_existing_graph(): Maak index op bestaande combinaties van label en eigenschap
res = graph.query("""MATCH (s:Scene)WHERE NOT {(s)-[:HAS_LINE]->()}RETURN s.id AS id, s.text AS text""")for scene in res: # Maak chunks van scene['text']
text op "\n\n"Enter Sampson and Gregory armed with swords..SAMPSON.Gregory, on my word...GREGORY. No, for then we should...SAMPSON. I mean, if we be in choler, we'll draw...
# Split text into lines lines = [ line.strip() for line in text.split("\n\n")if "\n" in line]for line in lines: parts = line.split("\n")character = parts[0]text = "\n".join(parts[1:])
# ...Doorgaan met de loop over scenes line_node = Node(type="Line", id=f"{scene.id}-line-{i}", properties={}) character_node = Node(type="Character", id=character, properties={})# (:Scene)-[:HAS_LINE]->(:Line) graph_document.relationships.append( Relationship(source=scene, target=line_node, type="HAS_LINE"))# (:Line)-[:SPOKEN_BY]->(:Character) graph_document.relationships.append(Relationship( source=line_node, target=characters[character], type="SPOKEN_BY"))
from langchain.embeddings import init_embeddings
store = Neo4jVector.from_existing_graph(init_embeddings("openai:text-embedding-3-small"),url=NEO4J_URI, username=NEO4J_USERNAME, password=NEO4J_PASSWORD,node_label="Line",text_node_properties=["text"],embedding_node_property="embedding",index_name="lines",)
# Create retriever retriever = store.as_retriever()# Handmatig aanroepen retriever.invoke("What does Romeo think of Juliet?") # [ Document, Document, ... ]
Graph RAG met LangChain en Neo4j