LangChain ve Neo4j ile Graph RAG
Adam Cowley
Manager, Developer Education at Neo4j
Neo4j’de çalışmak nasıl?

Neo4j’de çalışmak nasıl?

Neo4j’de çalışmak nasıl?

text özelliğinden düğüm gömüleri oluşturun
text özelliğinden düğüm gömüleri oluşturun
from langchain_neo4j import Neo4jVector
Neo4jVector.from_documents(): Documentlardan düğümler ve alttaki dizini oluştururNeo4jVector.from_existing_graph(): Mevcut etiket ve özellik kombinasyonlarında dizin oluşturur
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 değerini "\n\n" ile bölünEnter 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...
# Metni satırlara böl 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:])
# ...Sahneler üzerinde döngüye devam 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",)
# Alıcı (retriever) oluştur retriever = store.as_retriever()# Elle çağır retriever.invoke("What does Romeo think of Juliet?") # [ Document, Document, ... ]
LangChain ve Neo4j ile Graph RAG