Graph RAG dengan LangChain dan Neo4j
Adam Cowley
Manager, Developer Education at Neo4j
Seperti apa bekerja di Neo4j?

Seperti apa bekerja di Neo4j?

Seperti apa bekerja di Neo4j?

text
text
from langchain_neo4j import Neo4jVector
Neo4jVector.from_documents(): Buat node dan indeks dari DocumentNeo4jVector.from_existing_graph(): Buat indeks pada kombinasi label dan properti yang ada
res = graph.query("""MATCH (s:Scene)WHERE NOT {(s)-[:HAS_LINE]->()}RETURN s.id AS id, s.text AS text""")for scene in res: # Create chunks from scene['text']
text dengan "\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:])
# ...Continuing 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()# Invoke manually retriever.invoke("What does Romeo think of Juliet?") # [ Document, Document, ... ]
Graph RAG dengan LangChain dan Neo4j