GraphRAG

PDF 문서에서 그래프와 LLM 기반 GraphRAG 애플리케이션 구축하기

hsystems 2026. 5. 6. 10:54
728x90
반응형

GenAI-Stack 및 OpenAI를 사용한 단계별 연습

Abstract

이번 글에서는 이전 블로그 게시물의 아이디어와 실험을 바탕으로 PDF 문서에서 RAG 애플리케이션을 구축하는 데 필요한 모든 단계를 안내해 드릴 거예요.

프로젝트 저장소: 깃허브.

GitHub – Joshua-Yu/graph-rag: 그래프 기반 검색 + GenAI = 프로덕션에서 더 나은 RAG

개요

더 나은 Retrieval-Augmented Generation(RAG) 솔루션을 구축하는 방법에 대한 글과 제품이 정말 많죠. 과거에는 Property Graph Database를 사용한 지식 저장, 인덱싱 및 검색을 중심으로 RAG의 주요 측면을 설명했어요. 비정형 데이터와 정형 데이터 모두.

  • 벡터를 Knowledge Graph와 함께 저장해야 하는 이유는 무엇일까요?

여기에서는 를 보여드리면서 모든 부분을 하나로 모아보려고 해요. PDF 문서 파싱 및 수집부터 Knowledge Graph 생성, 주어진 자연어 질문에 대한 그래프 검색에 이르기까지 엔드투엔드 파이프라인을 다루고 있답니다.

주요 솔루션 구성 요소

1. PDF 문서 파싱 및 콘텐츠 추출

LLM Sherpa(깃허브)는 계층적 레이아웃 정보(예: 문서, 섹션, 문장, 표 등)로 PDF 문서를 파싱하기 위한 Python 라이브러리이자 API에요.

일반적인 청킹 전략과 비교하면 (고정 길이 + 텍스트 겹침) 문서 구조를 보존할 수 있다면 보다 유연한 청킹이 가능해지기 때문에 생성을 위한 더 완전하고 관련성 높은 컨텍스트를 제공할 수 있어요.

2. 지식 저장소용 Neo4j AuraDB

AuraDB에는 기능을 실험하고 시험해 볼 수 있는 free 티어가 있어요. 자신만의 인스턴스를 생성하는 자세한 단계를 보려면 다음 온라인 문서 또는 이 기사를 참고하세요:

간단한 3단계로 Knowledge Graph에 Q&A 기능 추가하기

3. 데이터 수집을 위한 Python + Neo4j 드라이버

PDF 문서의 내용은 Cypher 쿼리 언어를 사용하는 Python 드라이버를 통해 Neo4j에 로드돼요.

Neo4j가 제공하는 표준 데이터 유형, 자유 형식 텍스트 및 텍스트 임베딩 절차에 의해 생성된 벡터에 대한 Index에요.

텍스트 임베딩과 벡터가 처음이라면 개념과 사용 샘플을 설명하는 게시물을 참조해 보세요.

텍스트 임베딩 — 무엇을, 왜, 어떻게?

5. 빠른 프로토타이핑을 위한 GenAI-Stack

The GenAI 스택은 Neo4j가 협력하여 만든 사전 구축된 개발 환경이에요. , 랭체인, 그리고 를 사용하죠. 이 스택은 특히 RAG를 통해 LLM(Large Language Models)에서 생성된 응답의 정확성, 관련성, 출처를 개선하는 데 중점을 두고 GenAI 애플리케이션을 생성하도록 설계되었답니다.

숙달을 위한 빠른 길: 효율적인 LLM 애플리케이션을 위한 Neo4j GenAI 스택

우리 프로젝트에서는 채팅 애플리케이션의 빠른 개발을 위해 LangChain 부분이 필요해요.

6. 임베딩 및 텍스트 생성을 위한 OpenAI 모델

OpenAI의 임베딩 모델인 *text-embedding-ada-002* 와 LLM *GPT-4* 가 사용되니까, OpenAI API 키가 필요해요.

프로젝트 연습

1. 준비

1.1 를 저장소에서 복제하세요: .

1.2 Neo4j AuraDB 무료 인스턴스를 생성하세요.

1.3 필요한 종속성을 설치해야 해요.

  • llmsherpa ()
  • Neo4j GenAI-stack (). 여기에는 LangChain과 Streamlit(프론트엔드)이 이미 포함되어 있어요.
  • Python용 Neo4j 드라이버

1.4 OpenAI API 키도 필요하겠죠?

2. PDF 문서 파싱 및 Neo4j로 로드

샘플 프로젝트 폴더 아래의 custom 폴더에서 LayoutPDFReader_KGLoader 노트북을 실행해 보세요. 다음 단계를 따르면 돼요:

  • 파일 시스템 또는 URL에서 PDF 문서의 위치를 ​​제공하세요.
  • Neo4j AuraDB 연결 세부 정보를 업데이트하세요.
  • initNeo4j()를 실행해서 constraint와 index를 생성하세요 (한 번만).
  • ingestDocumentNeo4j()를 실행해서 문서의 모든 내용을 Graph Database에 로드하세요. 현재는 텍스트 chunk와 table이 지원된답니다.

3. 텍스트 및 테이블 이름에 대한 임베딩 생성 및 저장

KGEmbedding_Populate 노트북을 열고 실행해서 임베딩을 생성하고 저장하세요. OpenAI API 키와 Neo4j AuraDB 연결 정보를 입력한 후에 embedding node를 만들면 돼요.


# First parameter is the node label, 
# second is the node property name which contains text to be embedded

LoadEmbedding("Chunk", "sentences")

LoadEmbedding("Table", "name")

이제 다음과 같은 스키마를 가진 가 만들어졌어요.

4. 채팅 애플리케이션 준비

복제된 프로젝트 위치로 이동해서GenAI Stack을 클릭하고 아래 파일과 하위 폴더를 복사하세요. GenAI Stack 폴더의를요. 간단하게 설명해 드릴게요.

  • chains.py: 구조 인식 검색기의 새로운 프로시저가 포함된 업데이트된 Python 파일이에요.

# from line 154
def configure_qa_structure_rag_chain(llm, embeddings, embeddings_store_url, username, password):
    # RAG response based on vector search and retrieval of structured chunks 

  ...
  ...
  • cs_bot_papers.py: Streamlit 및 새로운 검색기를 기반으로 한 채팅 프런트 엔드입니다.

이 구조 인식 검색기에 대한 자세한 설명은 제 다른 블로그 게시물을 확인해 보세요.

GenAI 스택에 구조 인식 검색 추가

5. 채팅 애플리케이션 실행

이제 실행할 준비가 되었어요! 다음을 입력해서 Streamlit 애플리케이션을 실행해 보세요 (Python 환경에 따라 약간 다른 명령줄을 사용할 수 있어요).

python -m streamlit run cs_bot_papers.py

기능을 보여드리기 위해 비교적 최신 논문을 넣어서 테스트해봤는데요,Natural Language Is All You Need for Graph(arXiv) 그리고 "instructGLM" 접근 방식에 대해 질문했어요.

만약 Retrieval-Augmented Generation (RAG)이 disabled 상태라면, GPT-4는 지식 마감일이 2023년 4월이기 때문에 정답을 제공할 수 없어요.

Retrieval-Augmented Generation (RAG)이 되면, 애플리케이션은

  • 먼저 질문의 텍스트 Vector Embedding을 생성해요.
  • 그런 다음 Neo4j AuraDB에서 벡터 검색에 사용되죠.
  • 가장 많이 일치하는 chunk에 대해 관련 내용같은 section이 검색됩니다 (구조 인식 검색 부분).
  • 답변을 생성하기 위해 사용자 질문과 함께 GPT-4로 전달돼요.

이것은 소위구조 인식 검색을 사용하는데요. 아래 스크린샷을 보면, 검색된 정보에서 답변뿐만 아니라 메타데이터로 전달된 참조 위치도 제공되는 것을 확인할 수 있어요.

추가 토론

위 단계를 따라 Graph Database로 구동되는 RAG 채팅 애플리케이션을 성공적으로 실행할 수 있기를 바라요.

Neo4j를 사용해서 지식을 저장하면 유연한 모델, 다양한 indexing 기능, 빠른 query 성능뿐만 아니라 Cypher query language로 복잡한 검색과 같은 더 많은 잠재력을 얻을 수 있어요.

GenAI

앞으로 이 샘플 프로젝트에 더 중요한 기능을 추가하는 여정을 계속할 거예요.


  • Langchain
  • OpenAI
  • PDF 문서
  • RAG

에이치시스템즈LogTree는 Neo4j 기반 GraphRAG 플랫폼으로, 데이터를 자동으로 지식그래프화하고 자연어 질의로 즉시 답을 제공합니다.

👉 에이치시스템즈 홈페이지

728x90
반응형