문서 저장 및 쿼리

LangChain을 활용한 RAG(검색 증강 생성)

Meri Nova

Machine Learning Engineer

Neo4j 데이터베이스 인스턴스화

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/
LangChain을 활용한 RAG(검색 증강 생성)

그래프 문서 저장

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)
LangChain을 활용한 RAG(검색 증강 생성)

그래프 문서 저장

graph.add_graph_documents(
  graph_documents,

include_source=True,
baseEntityLabel=True
)
  • include_source=True: MENTIONS 엣지로 노드를 소스 문서에 연결
  • baseEntityLabel=True: 각 노드에 __Entity__ 레이블 추가
LangChain을 활용한 RAG(검색 증강 생성)

노드와 엣지로 표현된 그래프 문서.

LangChain을 활용한 RAG(검색 증강 생성)

OpenAI 모델 관련 노드를 확대한 이미지.

LangChain을 활용한 RAG(검색 증강 생성)

데이터베이스 스키마

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)
LangChain을 활용한 RAG(검색 증강 생성)

Neo4j 쿼리 - Cypher 쿼리 언어

James라는 노드에서 friends 관계가 미지의 Person 노드를 가리키는 그림.

LangChain을 활용한 RAG(검색 증강 생성)

Neo4j 쿼리 - Cypher 쿼리 언어

cypher4.jpg

LangChain을 활용한 RAG(검색 증강 생성)

Neo4j 쿼리 - Cypher 쿼리 언어

cypher4.jpg

LangChain을 활용한 RAG(검색 증강 생성)

Neo4j 쿼리 - Cypher 쿼리 언어

cypher4.jpg

LangChain을 활용한 RAG(검색 증강 생성)

Neo4j 쿼리 - Cypher 쿼리 언어

cypher4.jpg

LangChain을 활용한 RAG(검색 증강 생성)

LLM 그래프 쿼리

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

print(results)
[{'org': {'id': 'Openai'}}]
LangChain을 활용한 RAG(검색 증강 생성)

연습해 봅시다!

LangChain을 활용한 RAG(검색 증강 생성)

Preparing Video For Download...