spRAG, 비정형 데이터를 위한 고성능 RAG 프레임워크

spRAG, 비정형 데이터를 위한 고성능 RAG 프레임워크

소개

spRAG, 비정형 데이터를 위한 고성능 RAG 프레임워크

spRAG는 비정형 데이터(Unstructured Data)에 대해 복잡한 질의응답 작업을 수행하는 데 특화된 고성능 RAG 프레임워크입니다. 주로 금융 보고서나 법적 문서와 같은 복잡한 텍스트에 대한 질의응답을 효율적으로 처리할 수 있는 것을 목표로 하고 있으며, FinanceBench 벤치마크에서 기존 RAG 시스템보다 약 4배 더 높은, 우수한 정확도(83%)를 달성하였습니다.

또한, spRAG는 기존 RAG 시스템과 비교하여 다음과 같은 차별화된 기능을 제공합니다:

  • AutoContext와 RSE 기능을 통해 검색의 정확도와 관련성을 크게 향상시켜, 단순한 팩트 검색뿐만 아니라 복잡한 문맥을 요구하는 질문에도 효과적으로 대응할 수 있습니다.

  • 다양한 API 키를 사용하여 다양한 LLM과 재랭킹(reRank) 옵션을 지원함으로써 유연성을 제공합니다.

주요 특징

  • AutoContext: 문서 전체의 맥락을 개별 청크에 자동으로 주입하여, 텍스트의 내용과 의미를 보다 정확하고 완전하게 표현할 수 있습니다.
  • Relevant Segment Extraction (RSE): 관련 청크들을 더 긴 텍스트 섹션으로 지능적으로 결합하여, 개별 청크보다 훨씬 더 좋은 맥락을 제공합니다. 이를 통해 더 복잡한 질문에 대한 답변을 효과적으로 찾아낼 수 있습니다.

주요 구성 요소

spRAG의 효과적인 기능 구현을 위해 다섯가지의 주요한 구성요소가 있습니다. 이러한 구성요소들은 spRAG의 KnowledgeBase를 정의하며, 사용자가 커스터마이징할 수 있습니다:

  • 1. VectorDB: VectorDB는 임베딩 벡터와 소량의 메타데이터를 저장하는 컴포넌트입니다. 질의응답 시스템에서 중요한 역할을 하며, 검색된 텍스트 청크의 임베딩을 관리하고 저장합니다.

  • 2. ChunkDB: ChunkDB는 텍스트 청크의 내용을 문서 ID와 청크 인덱스를 기준으로 한 중첩된 딕셔너리 형식으로 저장합니다. 이 데이터베이스는 RSE에서 특정 청크와 관련된 전체 텍스트를 검색하는 데 사용됩니다.

  • 3. Embedding: Embedding 컴포넌트는 임베딩 모델을 정의합니다. 이 모델은 텍스트 데이터를 벡터 공간에 매핑하여, 문서 간의 의미적 유사성을 기반으로 검색을 수행할 수 있게 해줍니다.

  • 4. Reranker: Reranker 컴포넌트는 벡터 데이터베이스 검색 후, 보다 정확한 청크 순위를 제공하기 위해 사용됩니다. 이 컴포넌트는 검색된 결과의 관련성을 재평가하고 최적화하는 역할을 합니다.

  • 5. LLM: LLM (Large Language Model) 컴포넌트는 문서 요약에 사용됩니다. 특히 AutoContext 기능에서 중요한 역할을 하며, 각 청크에 문서 수준의 맥락을 주입할 때 사용됩니다.

사용 방법

spRAG는 Python 패키지를 통해 쉽게 설치할 수 있으며, API 키 설정만으로 간단하게 사용할 수 있습니다. 다음은 spRAG를 사용하여 파일로부터 KnowledgeBase를 생성하고 질의응답을 수행하는 예제 코드입니다:

from sprag.create_kb import create_kb_from_file
file_path = "spRAG/tests/data/levels_of_agi.pdf"
kb_id = "levels_of_agi"
kb = create_kb_from_file(kb_id, file_path)

from sprag.knowledge_base import KnowledgeBase
kb = KnowledgeBase("levels_of_agi")
search_queries = ["What are the levels of AGI?", "What is the highest level of AGI?"]
results = kb.query(search_queries)
for segment in results:
    print(segment)

더 읽어보기

spRAG GitHub 저장소

FinanceBenchmark 논문




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: