Solar LLM과 몽고DB Atlas를 사용하여 엔드투엔드 RAG 시스템 구축하기
2024/07/01 | 작성자: 손주형
들어가는 말
전 세계 주요 기업을 위한 대규모 AI 솔루션을 구축하는 엔터프라이즈 AI 스타트업인 Upstage AI는 문서 AI(주요 정보 추출기, 레이아웃 분석, OCR을 통해 비정형 문서를 기계 판독 가능한 데이터로 변환), 임베딩 모델, Solar LLM, 접지 검사기 등 풀스택 LLM 구성 요소 제품군을 제공합니다. 이러한 구성 요소와 다음과 같은 강력한 벡터 DB를 사용하면 몽고DB 아틀라스와 같은 강력한 벡터 DB를 통해 개발자는 검색 증강 생성(RAG) 애플리케이션을 구축할 수 있습니다.
RAG 애플리케이션은 특히 Upstage와 같은 기업 사용자에게 유용합니다. 개인 데이터베이스에서 검색된 데이터를 기반으로 LLM에서 답변을 생성하므로 환각의 위험을 낮추고 생산성을 높일 수 있습니다.
이 블로그에서는 기업이 내부 RAG 애플리케이션을 구축하는 방법을 설명합니다. 직원들의 정보 접근성을 개선하고 업무 생산성을 높이기 위해 Solar LLM과 MongoDB Atlas를 사용할 것입니다. RAG 시스템은 구글 워크스페이스, Notion, GitHub, 리니어와 같은 별도의 소스에서 관련 정보를 찾습니다. 그런 다음 이 데이터를 사용하여 답변을 생성합니다. 최종 인터페이스는 챗봇이 될 것입니다. 직원들은 질문을 하고 정보를 검색할 수 있습니다. 업스테이지에서는 내부용으로 '김솔라'라는 애플리케이션도 개발했는데, 이 블로그에서 그 예로 소개합니다.
이제 실제로 Solar와 MongoDB Atlas를 살펴보겠습니다!
MongoDB Atlas 및 Solar
RAG 시스템의 핵심은 세 부분으로 구성되어 있습니다. 첫째, 문서를 벡터로 저장하는 벡터 데이터베이스입니다. 둘째, 문서를 벡터에 임베딩하는 임베딩 모델입니다. 셋째, 답을 생성하는 LLM입니다. 업스테이지와 몽고DB는 RAG의 핵심 구성 요소 개발의 일부입니다. Upstage는 문서 벡터화 임베딩과 RAG에 특화된 LLM을 제공합니다. MongoDB는 RAG를 위한 벡터 데이터베이스 기능을 자사의 문서 데이터베이스 Atlas에 통합했습니다.
Atlas는 벡터 검색 기능으로 기존 문서 기반 데이터베이스를 개선하여 많은 이점을 제공합니다. 이 프로젝트는 이러한 장점을 완벽하게 활용했습니다. 이 프로젝트에 특히 유용했던 몇 가지 주요 기능을 소개해드리겠습니다. 이러한 장점은 MongoDB가 벡터 DB일 뿐만 아니라 전체 텍스트 검색이 가능한 문서 기반 데이터베이스이기 때문에 발생합니다.
기존 문서 기반 데이터베이스와 벡터 검색의 장점을 결합한 다양한 기능을 제공합니다.
Lucene을 지원합니다.
안정적이고 운영 비용을 절감할 수 있는 완전 관리형 서비스입니다.
익숙하고 유연한 쿼리로 전환 비용을 줄일 수 있습니다.
Solar 임베딩은 32k 컨텍스트를 지원하는 Solar 기반 임베딩 모델입니다. Solar 임베딩은 다른 임베딩 모델보다 성능이 월등히 뛰어납니다. 영어, 한국어, 일본어에 강합니다. 이러한 성능으로 인해 점점 더 많은 고객들이 RAG에서 Solar 임베딩을 채택하고 있습니다. [ → 자세히 알아보기 솔라 임베딩.]
Solar LLM은 초고속, 고성능 LLM 모델입니다. 또한 레이아웃 분석 및 접지 확인과 같은 RAG 사용 사례에 유용한 추가 기능도 있습니다. 또한 LangChain과 LlamaIndex는 Solar를 공식 파트너 패키지로 추가했습니다. 이를 통해 이러한 프레임워크 내에서 원활하고 쉽게 사용할 수 있습니다.
RAG 시스템 구축
오픈 소스 통합의 Solar 및 Atlas
업스테이지의 Solar 임베딩 및 Solar LLM은 OpenAI 패키지와 호환됩니다. 또한 LangChain과 LlamaIndex에 원활하게 통합됩니다. 아래는 임베딩과 채팅에 LlamaIndex를 사용하는 예시입니다. 자세한 내용은 업스테이지 패키지 설명서를 참조하세요. 업스테이지 랭체인 와 업스테이지 라마 인덱스. 또한 몽고DB 설명서를 참조하십시오. Atlas LangChain 과 아틀라스 라마 인덱스.
라마인덱스에서 Solar 및 몽고DB 설정하기
Solar 및 Atlas는 LlamaIndex와 호환됩니다. Solar 및 Atlas를 LlamaIndex와 함께 사용하려면 아래 그림과 같이 초기 설정을 수행하세요.
솔라 임베딩으로 임베딩하기
RAG 시스템에서는 몇 가지 이유로 문서가 더 작은 덩어리로 분할됩니다. 첫째, 임베딩 모델은 전체 문서가 아닌 보다 정확한 의미를 가진 벡터에 적당한 길이의 텍스트를 임베딩합니다. 둘째, LLM 모델이 정확한 답변을 제공하기 위해서는 불필요한 부분을 제외하고 텍스트의 가장 중요한 부분에 대한 컨텍스트를 제공하는 것이 더 낫습니다. 게다가 토큰 수가 적으면 비용적인 이점도 있습니다.
문서를 청크로 분할하는 전략에는 여러 가지가 있습니다. 문서 유형, 형식 또는 의미론적 내용에 따라 전략이 달라질 수 있습니다. 김솔라에서는 임베딩 유사성을 사용하여 문장 사이의 중단점을 적응적으로 선택하는 시맨틱 청킹을 사용합니다. 이 방법은 의미적으로 유사한 문장 덩어리를 구성합니다.
Atlas로 색인 생성
벡터 데이터베이스에 문서를 저장할 때 벡터와 메타데이터를 모두 통합했습니다. 메타데이터에는 제목, 작성자, 작성 날짜 등 문서에 대한 추가 정보가 포함되어 있습니다. Atlas는 기본적으로 문서 데이터베이스입니다. 루씬으로 구동되는 다양한 색인 분석기를 제공합니다. 임베딩 벡터 이외의 필드에 대해 작동합니다. '검색'과 '벡터검색'이라는 두 가지 인덱스 유형은 다양한 검색 전략을 지원합니다. 이 프로젝트에서는 벡터 인덱스와 문서 제목 및 작성자에 대한 인덱스를 사용했습니다.
Atlas로 검색
RAG 시스템에서 검색은 사용자의 쿼리와 가장 관련성이 높은 문서를 검색하는 데 중요한 역할을 합니다. Atlas는 Lucene을 사용해 데이터베이스 수준에서 텍스트 검색과 벡터 검색을 모두 제공합니다. Lucene은 MongoDB 쿼리를 사용해 복잡한 문서 검색을 가능하게 합니다. 또한 LangChain 및 LlamaIndex와 같은 LLM 프레임워크와 통합되어 있습니다. 이러한 프레임워크와 함께 사용할 수 있습니다.
이 RAG 시스템에서는 하이브리드 검색 방법을 사용해 문서를 검색했습니다. 먼저 임베디드 벡터를 사용한 벡터 검색과 Atlas의 Lucene을 사용한 bm25 검색을 통해 문서를 필터링합니다. 그런 다음 RRF(상호 순위 융합) 알고리즘을 통해 최종 문서를 선택합니다.
각 방법의 장점과 한계를 평가하면서 라마인덱스와 몽고DB 쿼리를 모두 살펴봤습니다. 후자의 섹션에서는 RAG 시스템이 데이터를 검색하는 방법을 보여줍니다. 여기서는 LlamaIndex와 Atlas 쿼리를 모두 사용합니다.
따라서 Atlas는 대부분의 RAG 프레임워크와 잘 통합되어 있어 사용하기 쉽습니다. 더 복잡한 쿼리가 필요하거나 프레임워크에서 지원하지 않는 기능이 필요한 경우, MongoDB 기본 쿼리를 사용할 수 있습니다.
Solar와 채팅하기
Solar는 사용자의 쿼리와 리트리버가 선택한 청크를 컨텍스트로 수신합니다. 핵심은 주어진 정보만으로 응답할 수 있는 LLM 모델의 능력입니다. 착각을 일으킬 수 있는 과거 지식을 사용해서는 안 됩니다.
김솔라의 사례
결과적으로 김솔라는 Slack 플랫폼 내에서 원활하고 손쉽게 정보에 액세스할 수 있습니다. 사용자는 멘션을 사용하여 봇에게 정보를 요청할 수 있습니다. 봇은 리니어, 구글 드라이브, 깃허브와 같은 소스에서 관련 데이터를 가져옵니다.
결론
이 문서에서는 Solar와 Atlas를 다루었습니다. 두 제품 모두 문서 임베딩, 저장 및 검색, 응답 생성 기능을 수행했습니다. 저희는 이 두 가지 훌륭한 제품을 사용했습니다. 이 두 제품을 통해 프로덕션에 바로 사용할 수 있는 안정적인 RAG 시스템을 구축할 수 있었습니다. 이 RAG 시스템은 업무 처리 속도를 높여 생산성을 향상시켰습니다. 업무용 인공 지능(AGI)을 실현하기 위해 이 프로젝트를 개발하게 되어 기대가 큽니다.