LangChain과 Neo4j로 배우는 Graph RAG
Adam Cowley
Manager, Developer Education at Neo4j
Neo4j에서 일하는 것은 어떤가요?

Neo4j에서 일하는 것은 어떤가요?

Neo4j에서 일하는 것은 어떤가요?

text 속성으로 노드 임베딩 생성
text 속성으로 노드 임베딩 생성
from langchain_neo4j import Neo4jVector
Neo4jVector.from_documents(): Document로 노드와 인덱스 생성Neo4jVector.from_existing_graph(): 기존 라벨·속성 조합에 인덱스 생성
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를 "\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...
# 텍스트를 줄로 분할 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:])
# ...씬에 대한 루프 계속 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",)
# 리트리버 생성 retriever = store.as_retriever()# 수동 호출 retriever.invoke("What does Romeo think of Juliet?") # [ Document, Document, ... ]
LangChain과 Neo4j로 배우는 Graph RAG