이 다이어그램은 현대적이고 복잡한 질문 답변(QA) 또는 검색 증강 생성(RAG) 시스템의 아키텍처 청사진을 명확하게 보여줍니다. 사용자가 질문을 하는 것부터 시작하여 최종 답변 생성까지 이어지며, 그 사이의 주요 단계와 기술 선택 사항을 자세히 보여줍니다. 전체 프로세스는 다음과 같은 핵심 단계로 나눌 수 있습니다:

1, 쿼리 구성(쿼리 구성)
이는 사용자와 시스템과의 상호작용의 첫 번째 단계이자 시스템이 사용자의 의도를 이해하는 출발점입니다. 이 이미지는 다양한 유형의 데이터베이스에 대한 쿼리가 어떻게 구성되는지 보여줍니다:
a. 관계형 데이터베이스: 관계형 데이터베이스의 경우 쿼리를 구성하는 일반적인 방법은 Text-to-SQL이며, 이는 시스템이 사용자의 자연어 질문을 구조화된 SQL 쿼리 문으로 변환해야 함을 의미합니다. 여기에는 일반적으로 자연어 이해(NLU) 기술과 자연어 의미를 SQL 구문 및 데이터베이스 스키마에 매핑하는 기능이 포함됩니다. 또한 이 그림에서는 의미적 유사성 검색을 수행하는 등 SQL 쿼리를 개선하기 위해 벡터 데이터베이스(PGVector는 PostgreSQL의 벡터 확장)와 함께 사용하여 사용자의 퍼지 또는 의미적으로 지원되는 쿼리를 보다 유연하게 처리할 수 있는 PGVector가 포함된 SQL에 대해서도 언급하고 있습니다.
b. 그래프 데이터베이스: 그래프 데이터베이스의 경우 해당 쿼리 구성 방법은 SQL과 유사하지만 그래프 구조의 쿼리에 더 적합한 그래프 데이터베이스 Neo4j의 쿼리 언어인 Text-to-Cypher입니다.Text-to-Cypher는 자연어 질문을 Cypher 쿼리 문으로 변환해야 하므로 그래프 데이터베이스의 구조와 그래프 쿼리 언어의 특성에 대한 이해가 필요합니다. 그래프 데이터베이스의 구조와 그래프 쿼리 언어의 특성에 대한 이해가 필요합니다.
c. 벡터 데이터베이스 (벡터 데이터베이스): 벡터 데이터베이스의 경우, 시스템이 사용자의 질문에 따라 자동으로 메타데이터 필터를 생성하고 벡터 데이터베이스를 직접 쿼리할 수 있는 셀프 쿼리 리트리버가 예시되어 있습니다. 벡터 데이터베이스는 일반적으로 텍스트 또는 데이터의 벡터 표현을 저장하고 유사도 검색을 통해 검색하며, 자연어 질문에서 필터링을 위한 구조화된 정보를 추출하고 이를 벡터 유사도 검색과 결합하여 보다 정확한 검색을 달성하는 것이 셀프 쿼리 리트리버의 핵심 기능입니다.
쿼리 구성 단계 요약: 이 단계의 핵심 목표는 사용자가 자연어로 제기한 질문을 시스템에서 이해하고 실행할 수 있는 쿼리 문으로 변환하는 것이며, 다양한 유형의 데이터 저장소(관계형, 그래프, 벡터)에 대해 다양한 쿼리 언어와 기법을 사용합니다. 시스템의 멀티모달 데이터 및 쿼리 양식에 대한 지원이 시연됩니다.
2、쿼리 번역(쿼리 번역)
쿼리 구성 후에는 사용자의 의도를 보다 효율적으로 검색하고 이해하기 위해 원본 사용자 쿼리를 추가로 처리하고 최적화해야 하는 경우가 있습니다. 두 가지 주요 쿼리 번역 전략이 그림에 나와 있습니다:
a. 쿼리 분해: 복잡한 질문은 더 작고 관리하기 쉬운 하위 질문(하위/스텝백 질문)으로 분해할 수 있습니다. 이는 다중 쿼리, 스텝백, RAG-Fusion과 같은 기술을 사용하여 수행할 수 있습니다. - 다중 쿼리는 여러 각도에서 질문을 탐색하기 위해 여러 개의 다른 쿼리를 생성하는 것을 의미할 수 있습니다. - 스텝백은 보다 기본적인 전제 조건이 필요한 질문에 먼저 답한 다음 점진적으로 마지막 복잡한 질문을 해결하는 것을 의미할 수 있습니다. - RAG-Fusion은 검색 강화 생성과 쿼리 융합 기술을 결합하여 다중 검색 및 융합을 통해 사용자의 의도를 보다 완벽하게 파악하는 것을 의미할 수 있습니다. - 핵심 아이디어는 입력 질문을 분해하거나 재구문하는 것, 즉 입력 질문을 분해하거나 재구문하여 복잡한 질문 처리의 난이도를 낮추는 것입니다.
b. 의사 문서: HyDE(가상 문서 임베딩)는 의사 문서를 생성하는 일반적인 방법입니다. 이 아이디어는 모델이 질문을 기반으로 "가상 문서"(의사 문서)를 생성하도록 하는 것입니다. 이 의사 문서는 실제 문서일 필요는 없지만 질문에 대한 답변에 대한 모델의 초기 이해와 예측을 포함해야 합니다. 그런 다음 의사 문서는 실제 문서와 함께 벡터로 표현되고 유사성 검색이 수행됩니다. HyDE는 모델의 사전 지식을 도입하여 벡터 검색자가 관련 실제 문서를 더 잘 찾을 수 있도록 돕는 것을 목표로 합니다.
쿼리 번역 단계 요약: 이 단계는 사용자 쿼리를 최적화하여 후속 검색 프로세스에 더 적합하도록 하는 것을 목표로 합니다. 쿼리 분해를 통해 복잡성을 처리할 수 있으며, 사용자 의도를 이해하고 처리하는 시스템의 유연성과 지능을 반영하여 의사 문서 생성을 통해 벡터 검색의 정확도를 향상시킬 수 있습니다.
3. 라우팅
시스템이 번역된 쿼리를 수신하면 검색을 위해 쿼리를 라우팅할 데이터 소스를 결정해야 합니다. 두 가지 라우팅 전략이 그림에 나와 있습니다:
a. 논리적 라우팅: LLM이 질문에 따라 데이터베이스를 선택하도록 하는 것으로, 질문의 내용과 특성에 따라 대규모 언어 모델(LLM)을 사용하여 쿼리해야 할 데이터베이스를 결정하는 것을 의미합니다. 예를 들어, 질문에 지식 그래프와 관련된 개체 및 관계가 포함된 경우 그래프 데이터베이스로, 구조화된 데이터 쿼리가 포함된 경우 관계형 데이터베이스로, 시맨틱 검색에 더 중점을 둔 질문인 경우 벡터 데이터베이스로 라우팅됩니다.
b. 시맨틱 라우팅: 질문을 임베드하고 유사성에 따라 프롬프트를 선택합니다. 이 접근 방식은 먼저 질문을 임베드한 다음 질문 벡터의 유사성에 따라 다른 프롬프트를 선택합니다(프롬프트 #1 , 프롬프트 #2). , 프롬프트 #2). 즉, 질문 유형이나 의도에 따라 시스템이 서로 다른 프롬프트 전략을 미리 설정하고 의미적 유사성에 따라 가장 적합한 프롬프트를 자동으로 선택하여 후속 검색 또는 생성 프로세스를 안내합니다.
라우팅 단계 요약: 라우팅 단계는 시스템의 지능적인 의사 결정의 핵심 단계로, 문제의 내용과 특성에 따라 가장 적합한 데이터 소스와 처리 전략을 선택하고 리소스 관리 및 작업 스케줄링에 시스템의 지능을 반영합니다.
4、인덱싱(인덱싱)
효율적인 검색을 위해서는 데이터를 사전 색인화해야 합니다. 이미지의 파란색 영역은 색인 최적화를 위한 다양한 전략을 보여줍니다:
a. 청크 최적화: 긴 문서를 다룰 때는 문서를 청크로 분할한 다음 청크를 색인화해야 하는 경우가 많습니다. 청크 최적화는 청크를 보다 효율적으로 수행하는 방법에 중점을 둡니다.
- 문자, 섹션, 의미 구분 기호로 분할: 문자 수, 섹션 또는 의미 구분 기호 등 다양한 청크 전략으로 분할할 수 있습니다.
- 시맨틱 스플리터: 시맨틱 청크의 중요성을 강조하고 임베딩에 사용되는 청크 크기를 최적화하며 각 청크를 보다 의미적으로 완전하고 독립적으로 만들어 임베딩 및 검색 결과의 품질을 향상시킵니다.
b. 다중 표현 인덱싱: 요약 -> {} -> 관계형 DB/벡터스토어 이는 인덱싱을 위해 문서의 여러 표현을 생성할 수 있음을 의미합니다(예: 문서의 원본 텍스트 블록 외에 문서의 요약도 생성할 수 있습니다). 즉, 색인을 위해 문서의 여러 표현을 생성할 수 있습니다. 예를 들어, 문서의 원본 텍스트 블록 외에 문서의 요약을 생성하고 그 요약을 색인할 수 있습니다. 이를 통해 다양한 쿼리 요구 사항을 충족하기 위해 다양한 표현을 사용할 수 있습니다. 그림은 요약이 관계형 데이터베이스 또는 벡터 데이터베이스에 저장될 수 있음을 의미합니다.
- 상위 문서, 고밀도 X: 상위 문서에 대한 정보와 함께 문서를 색인하는 것을 의미할 수도 있고, 고밀도 벡터 표현을 의미하는 고밀도 표현(Dense X)을 사용하여 문서를 표현하는 것을 의미할 수도 있습니다.
- 문서를 압축 파일로 변환 검색 단위(예: 요약): 검색 효율성을 높이기 위해 문서를 요약과 같은 보다 간결한 검색 단위로 변환하는 데 중점을 둡니다.
c. 특수 임베딩: 미세 조정, CoLBERT, [0, 1, ...] -> Vectorstore. 0, ..., ...] -> 벡터스토어 즉, 특별히 훈련되거나 미세 조정된 임베딩 모델(예: CoLBERT)을 사용하여 문서의 벡터 표현을 생성하고 이러한 벡터를 벡터 데이터베이스에 저장할 수 있습니다.
- 도메인별 및/또는 고급 임베딩 모델: 보다 정확한 의미 표현을 얻고 검색을 향상시키기 위해 도메인별 또는 고급 임베딩 모델을 사용할 수 있는 가능성을 강조합니다.
d. 계층적 인덱싱 요약: 분할 -> 클루저 -> 클루저 -> ... -> RAPTOR -> 그래프 DB. -> (계층적 문서 요약 및 색인 방법이라고 할 수 있는) RAPTOR는 여러 계층의 클러스터를 통해 문서 요약의 계층적 구조를 구성합니다.
- 다양한 추상화 수준에서의 문서 요약 트리: RAPTOR는 다양한 추상화 수준에서 문서 요약 트리를 구성합니다.
- 이 계층적 인덱스 구조를 저장하고 관리하는 데 사용되는 그래프 데이터베이스(그래프 DB)는 다단계 검색 및 탐색을 용이하게 합니다.
색인 단계 요약: 색인 단계는 빠르고 정확한 검색을 위해 데이터를 효율적이고 효과적으로 구성하고 표현하는 것과 관련이 있습니다. 청킹 최적화, 다중 표현, 전용 임베딩에서 계층적 인덱스 요약에 이르기까지, 색인 전략의 다양성과 정교함을 반영합니다.
5. 검색
라우팅된 데이터 소스와 인덱스를 기반으로 시스템이 실제 검색 프로세스를 수행합니다. 이미지의 녹색 영역은 검색의 두 가지 주요 측면을 보여줍니다:
a. 순위: 질문 -> {} -> {} 관련성 -> 필터. 검색된 문서는 쿼리와의 관련성을 기준으로 순위를 매겨야 합니다.
- Re-Rank, RankGPT, RAG-Fusion: Re-Rank(초기 검색 결과 위에 더 정밀한 랭킹을 수행하는 재랭킹), RankGPT(GPT와 같은 대규모 모델을 사용한 랭킹), RAG-Fusion(랭킹과 검색 향상 생성을 융합한 랭킹) 등 몇 가지 고급 랭킹 기법이 언급됩니다.
- 관련성에 따라 문서 순위 지정 또는 필터링/압축: 순위 지정의 목적은 가장 관련성이 높은 문서를 직접 순위 지정하여 반환하거나, 후속 처리를 위해 관련성에 따라 문서를 필터링하거나 압축하는 것일 수 있습니다. - CRAG(문맥 관련 답변 생성)도 정렬 세션에 나타나며, 정렬 프로세스에서도 문맥 정보를 고려해야 합니다.
b. 활성 검색: {} -> CRAG -> 답변. 검색된 문서가 관련성이 없는 경우 새로운 데이터 소스(예: 웹)에서 다시 검색 및/또는 검색합니다. 활성 검색은 초기 검색 결과가 만족스럽지 않은 경우 시스템이 능동적으로 다시 검색(재검색)하거나 새로운 데이터 소스(예: 웹)에서 검색할 수 있음을 의미합니다.
- CRAG는 활성 검색에도 나타나며, 문맥적 연관성과 반복 검색의 중요성을 더욱 강조합니다.
- 반복적인 검색 및 생성 프로세스를 통해 검색 결과와 답변 품질을 지속적으로 최적화하는 것을 목표로 하는 Self-RAG, RRR(검색-재작성-읽기)과 같은 기술도 능동 검색과 관련이 있을 수 있습니다.
검색 단계 요약: 검색 단계의 핵심 목표는 사용자의 검색어와 가장 관련성이 높은 문서나 정보를 찾는 것입니다. 정렬에서 능동 검색에 이르기까지 시스템은 검색 전략의 정교함과 지능을 반영하여 고품질의 검색 결과를 제공하기 위해 노력합니다.
6. 세대
궁극적으로 시스템은 검색된 문서를 기반으로 답변을 생성하여 사용자에게 제시해야 합니다. 이미지의 보라색 영역은 생성 단계의 핵심 기술을 보여줍니다:
ㄱ. 능동 검색(재출현): {} -> 답변 -> 셀프-RAG, RRR -> 질문 재작성 및/또는 문서 재검색 능동 검색은 생성 단계에서도 중요한 역할을 합니다.
- 자가 검색 증강 생성(Self-RAG)은 답변 생성 과정에서 생성 모델이 필요에 따라 능동적으로 검색을 수행하고 검색 결과에 따라 생성 전략을 조정할 수 있는 자가 검색 증강 생성 방식입니다. - RRR(검색-재작성-읽기)은 여러 번의 반복을 통해 답변 품질을 최적화하기 위해 검색, 질문 재작성, 문서 읽기 등의 단계를 포함하는 반복적인 생성 프로세스입니다.
- 생성 품질을 사용하여 질문 재작성 및/또는 문서 재검색 안내: 생성된 답변의 품질을 사용하여 질문 재작성 및 문서 재검색을 안내함으로써 폐쇄 루프 최적화 프로세스를 형성할 수 있다는 점을 강조합니다.
생성 단계 요약: 생성 단계는 답변이 최종적으로 출력되는 핵심 단계입니다. 능동 검색 및 자체 검색 강화 생성(Self-RAG, RRR) 기술을 사용하면 생성 프로세스를 더욱 지능적이고 제어할 수 있으며 보다 정확하고 사용자 친화적인 답변을 생성할 수 있습니다.
전체 요약: 이 다이어그램은 최신 RAG 시스템의 복잡성과 세분성을 명확하게 보여줍니다. 쿼리 이해, 데이터 라우팅, 인덱싱 최적화, 효율적인 검색에서 최종 답변 생성에 이르는 전체 프로세스를 다루며 각 단계에서 사용할 수 있는 많은 고급 기법과 전략을 보여줍니다.
주요 하이라이트 및 트렌드
- 다중 데이터베이스 지원: 이 시스템은 관계형 데이터베이스, 그래프 데이터베이스, 벡터 데이터베이스를 지원하여 다양한 유형의 데이터와 쿼리 요구 사항을 처리할 수 있습니다.
- 쿼리 최적화 및 번역: 쿼리 분해 및 의사 문서 생성과 같은 기술을 통해 복잡하고 의미론적인 쿼리를 처리하는 시스템의 능력을 향상시킵니다.
- 지능형 라우팅: 데이터 소스의 지능적인 선택과 작업 스케줄링을 위해 LLM과 의미론적 유사성을 사용하여 라우팅 결정을 내립니다.
- 색인 최적화 다양성: 청킹, 다중 표현, 전용 임베딩에서 계층적 색인 다이제스트에 이르기까지 다양한 색인 전략과 심층 최적화를 반영합니다.
- 검색 개선 및 능동성: 정렬 알고리즘부터 능동적 검색까지, 시스템은 고품질의 관련성 높은 검색 결과를 제공하기 위해 노력합니다.
- 생성 및 검색의 심층 통합: Self-RAG, RRR 및 기타 기술은 생성 단계가 더 이상 단순한 정보 접합이 아니라 검색 프로세스와 심층 통합되어 반복적인 최적화의 폐쇄 루프를 형성한다는 것을 보여줍니다.
이 다이어그램은 현재 RAG 시스템 개발의 중요한 트렌드, 즉 시스템의 지능, 모듈성 및 확장성에 더 중점을 두는 것을 나타냅니다. 미래의 RAG 시스템은 단순한 '검색 + 생성'에 그치지 않고 사용자의 의도를 더 잘 이해하고, 멀티모달 데이터를 더 효과적으로 사용하며, 더 정확하게 검색 및 생성하고, 궁극적으로 더 나은 개인화된 사용자 경험을 제공할 수 있는 보다 지능적인 방향으로 발전할 것입니다. 이 다이어그램은 차세대 RAG 시스템을 이해하고 구축하는 데 매우 유용한 참조 프레임워크를 제공합니다.
참조:
[1] GitHub: https://github.com/bRAGAI/bRAG-langchain/
[2] https://bragai.dev/
© 저작권 정책
이 글은 저작권이 있으며 무단으로 복제해서는 안 됩니다.
관련 문서
댓글 없음...