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

**URL:** https://discuss.pytorch.kr/t/sprag-rag/4271
**Category:** 읽을거리&정보공유
**Tags:** rag, rag-framework, sprag, financebench
**Created:** [5월 4, 2024, 2:44오전 UTC](https://discuss.pytorch.kr/t/sprag-rag/4271 "2024-05-04T02:44:06Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![9bow](https://discuss.pytorch.kr/user_avatar/discuss.pytorch.kr/9bow/32/16301_2.png) [@9bow](https://discuss.pytorch.kr/u/9bow)
#### Post date: [5월 4, 2024, 2:44오전 UTC](https://discuss.pytorch.kr/t/sprag-rag/4271/1 "2024-05-04T02:44:07Z")

</div>

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

## 소개

 ![spRAG, 비정형 데이터를 위한 고성능 RAG 프레임워크](https://discuss.pytorch.kr/uploads/default/original/2X/1/125532a874b95abdc024c63bf51f0b503a0e69aa.png)

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를 생성하고 질의응답을 수행하는 예제 코드입니다:

```python
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 저장소

[https://github.com/SuperpoweredAI/spRAG](https://github.com/SuperpoweredAI/spRAG)

### FinanceBenchmark 논문

> **[FinanceBench: A New Benchmark for Financial Question Answering](https://arxiv.org/abs/2311.11944)**
>
> FinanceBench is a first-of-its-kind test suite for evaluating the performance of LLMs on open book financial question answering (QA). It comprises 10,231 questions about publicly traded companies, with corresponding answers and evidence strings. The...

* * *

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

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

🎁 아래↘쪽에 좋아요❤를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ 🤩
