벡터에서 그래프로

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

Meri Nova

Machine Learning Engineer

벡터 RAG의 한계

일반적인 벡터 저장소 RAG 워크플로.

"주제 및 관계"가 포함된 말풍선.

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

벡터 RAG의 한계

일반적인 벡터 저장소 RAG 워크플로.

"확장성"이 포함된 말풍선.

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

벡터 RAG의 한계

일반적인 벡터 저장소 RAG 워크플로.

"다양한 데이터 통합"이 포함된 말풍선.

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

그래프 데이터베이스

사람, 장소, 관심사 간의 연결을 보여주는 그래프.

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

그래프 데이터베이스 - 노드

사람, 장소, 관심사 간의 연결을 보여주는 그래프.

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

그래프 데이터베이스 - 엣지

사람, 장소, 관심사 간의 연결을 보여주는 그래프.

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

Neo4j 그래프 데이터베이스

 

Neo4j 로고.

LangChain 로고.

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

이미지에서 그래프로...

사람, 장소, 관심사 간의 연결을 보여주는 그래프.

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

이미지에서 그래프로...

barcelona_graph.jpg

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

이미지에서 그래프로...

barcelona_graph.jpg

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

Wikipedia 페이지 로드 및 청크 분할

from langchain_community.document_loaders import WikipediaLoader
from langchain_text_splitters import TokenTextSplitter

raw_documents = WikipediaLoader(query="large language model").load()

text_splitter = TokenTextSplitter(chunk_size=100, chunk_overlap=20) documents = text_splitter.split_documents(raw_documents[:3]) print(documents[0])
page_content='A large language model (LLM) is a computational model capable of...' 
metadata={'title': 'Large language model',
          'summary': "A large language model (LLM) is...",
          'source': 'https://en.wikipedia.org/wiki/Large_language_model'}
LangChain을 활용한 RAG(검색 증강 생성)

텍스트에서 그래프로!

from langchain_openai import ChatOpenAI

from langchain_experimental.graph_transformers import LLMGraphTransformer
llm = ChatOpenAI(api_key="...", temperature=0, model_name="gpt-4o-mini")
llm_transformer = LLMGraphTransformer(llm=llm)
graph_documents = llm_transformer.convert_to_graph_documents(documents) print(graph_documents)
LangChain을 활용한 RAG(검색 증강 생성)

텍스트에서 그래프로!

[GraphDocument(
    nodes=[
        Node(id='Llm', type='Computational model'),
        Node(id='Language Generation', type='Concept'),
        Node(id='Natural Language Processing Tasks', type='Concept'),
        Node(id='Llama Family', type='Computational model'),
        Node(id='Ibm', type='Organization'),
        ..., Node(id='Bert', type='Computational model')],
    relationships=[
        Relationship(source=Node(id='Llm', type='Computational model'),
                     target=Node(id='Language Generation', type='Concept'),
                     type='CAPABLE_OF'),
        ...])]
LangChain을 활용한 RAG(검색 증강 생성)

연습해 봅시다!

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

Preparing Video For Download...