Jump to content

Search the Community

Showing results for tags 'rag'.

  • Search By Tags

    태그는 ,로 구분됩니다.
  • Search By Author

Content Type


Forums

  • CLOVA Studio
    • CLOVA Studio
  • Maps
    • Maps
  • ARC eye
    • ARC eye

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me

Found 3 results

  1. 이번 포스팅은 'RAG(Retrieval-Augmented Generation)'을 주제로 한 3부작 시리즈의 두 번째 글입니다. 1부에서 RAG(Retrieval-Augmented Generation)의 개념과 핵심 구성 요소에 대해 살펴보았다면, 이번 2부에서는 RAG를 실제로 구현하는 과정을 단계별로 상세히 파헤쳐 보겠습니다. 또한, 각 단계에서 CLOVA Studio의 다양한 기능들이 어떻게 활용될 수 있는지 면밀히 분석해 보는 시간을 갖도록 하겠습니다. RAG 3부작 시리즈 ✔︎ (1부) RAG란 무엇인가 링크 ✔︎ (2부) RAG 구현 단계 알아보기 ✔︎ (3부) CLOVA Studio를 이용해 RAG 구현하기 Cookbook 1부에서 소개한 RAG 구조를 자세히 들여다보면, CLOVA Studio는 RAG의 핵심 기능 3가지를 효과적으로 지원하고 있습니다. 첫째, 방대한 텍스트를 적절한 크기로 분할하는 데 사용되는 문단 나누기 API. 둘째, 분할된 데이터와 사용자의 질문을 벡터로 변환할 때 사용되는 임베딩 API. 셋째, 사용자에게 최종 답변을 제공할 때 활용되는 하이퍼클로바X의 Chat Completion API. 이제 RAG의 작동 과정을 살펴보면서, CLOVA Studio의 API들이 어떻게 유기적으로 연계되어 활용될 수 있는지 알아보겠습니다. 1. Raw Data → Connecting 데이터 소스를 가져오는 과정은 RAG 구조를 적용하기 위한 첫 단계입니다. HTML이나 PDF 등 원본 데이터의 형식을 컴퓨터가 처리 가능한 형태로 변환해야 합니다. 이렇게 로딩된 데이터는 문단 나누기 API와 임베딩 API 등을 거쳐 최종적으로 HyperCLOVA X에 전달되어 활용됩니다. 이번 Cookbook에서는 네이버 클라우드 플랫폼의 CLOVA Studio 사용 가이드에 포함된 '개요', '사용 준비', '개념', '시나리오' 4개 페이지의 HTML 형식 데이터를 Raw Data로 사용하였습니다. 그리고 데이터를 효과적으로 연결하고 처리하기 위해 Langchain 라이브러리의 몇 가지 모듈을 활용하였습니다. 이를 통해 원활한 데이터 처리 및 RAG 구조 적용이 가능해졌습니다. 2. Connecting → Embedding 현존하는 모델들은 대용량 데이터를 한 번에 처리하기 어렵기 때문에, 데이터를 모델이 처리 가능한 작은 단위로 나누는 과정이 필요합니다. 이를 일반적으로 Chunking이라고 하며, CLOVA Studio 익스플로러의 문단 나누기 API가 이 기능을 지원합니다. RAG에 활용할 데이터 가져오기에 성공했다면, 문단 나누기 API를 통해 데이터를 적절한 크기로 분할할 수 있습니다. 이 API는 모델이 문장 간 유사도를 파악하여 나누거나, 사용자가 직접 원하는 크기를 설정해서 글을 나눌 수도 있습니다. 문단 나누기 API를 활용하면, 긴 텍스트 데이터를 작은 단위로 효과적으로 분할할 수 있습니다. 이렇게 분할된 데이터는 RAG 구조에서 효율적으로 활용될 수 있습니다. 3. Embedding 임베딩은 자연어를 벡터로 변환하는 과정입니다. RAG(Retrieval-Augmented Generation)에서는 작은 덩어리로 나누어진 데이터와 사용자의 질문을 모두 임베딩해야 하는데, CLOVA Studio의 임베딩 API를 통해 입력한 텍스트를 1024차원의 벡터로 변환할 수 있습니다. 데이터와 질문을 효과적으로 관리하고 검색을 구현하기 위해서는 임베딩이 필수적입니다. CLOVA Studio의 임베딩 API는 RAG 구현에 있어 중요한 역할을 할 것입니다. 4. Vector DB 벡터 DB는 임베딩으로 변환된 벡터를 저장하는 데이터베이스로, 고차원 벡터 데이터를 효율적으로 관리하고 검색하는 데 특화되어 있습니다. 현재 다양한 기업에서 벡터 DB를 지원하고 있어, 사용자는 목적에 맞는 벡터 DB를 선택할 수 있습니다. 벡터 DB에 임베딩된 데이터와 질문을 저장하면 대규모 데이터 세트에서도 유사도 검색을 통해 정확한 결과를 얻을 수 있습니다. 5. Retrieval 이 단계에서는 벡터 데이터베이스(DB)에 저장된 데이터와 사용자의 질문을 매칭하여, 질문에 가장 적합한 데이터를 검색합니다. 검색 로직은 직접 구현하거나, 벡터 DB에서 제공하는 기능을 활용할 수 있습니다. 이렇게 선정된 후보 데이터들은 HyperCLOVA X에 전달되어 최종 답변 생성에 활용됩니다. 6. 하이퍼클로바 X의 답변 HyperCLOVA X는 Retrieval 단계에서 선정된 후보 데이터를 참고하여 사용자에게 제공할 최종 답변을 생성합니다. 이 과정에서 CLOVA Studio의 Chat Completion API가 활용되는데, 이는 RAG 구현에 있어 핵심적인 역할을 합니다. 앞선 과정들을 아무리 잘 구현하더라도 우수한 LLM이 없다면 RAG를 완성할 수 없습니다. CLOVA Studio의 장점 중 하나는 시스템 프롬프트 팔로잉 능력이 뛰어나고 한글 성능이 우수한 HyperCLOVA X 모델을 API로 연결하여 활용할 수 있다는 점입니다. CLOVA Studio의 플레이그라운드에서와 마찬가지로 파라미터를 자유롭게 설정하고 시스템 프롬프트를 원하는 대로 작성함으로써 답변의 품질을 더욱 높일 수 있습니다. 이는 RAG 구현 과정에서 개발자에게 큰 유연성과 편의성을 제공합니다. 이번 예제에서 활용한 시스템 프롬프트는 다음과 같습니다. - 너의 역할은 사용자의 질문에 reference를 바탕으로 답변하는거야. - 너가 가지고있는 지식은 모두 배제하고, 주어진 reference의 내용만을 바탕으로 답변해야해. - 만약 사용자의 질문이 reference와 관련이 없다면, {제가 가지고 있는 정보로는 답변할 수 없습니다.}라고만 반드시 말해야해. 여기서 'reference'는 Retrieval 단계에서 추출한 몇 개의 후보 데이터들을 모아놓은 리스트를 의미합니다. 이제 CLOVA Studio와 함께 활용한 RAG의 작동 방식을 보여드리겠습니다. ▲ CLOVA Studio 사용 가이드 페이지에 수록된 내용을 활용해서 똑똑하게 답변하는 것을 알 수 있습니다. ▼ 반면, 사용 가이드 페이지에 있지 않은 질문들을 했을 때 어떻게 답변하는지 살펴볼까요? CLOVA Studio의 사용 가이드에서 다루지 않은 CLOVA X의 기능에 대해서는 답변할 수 없다고 답변하고 있습니다. 심지어 RAG 구조를 사용하지 않았다면 완벽하게 대답했을 법한 '부산 1박 2일 여행 계획'에 대해서도 응답을 자제하는 태도는 시스템 프롬프트를 충실히 따르는 HyperCLOVA X의 특징을 엿볼 수 있게 해줍니다. CLOVA Studio가 제공하는 다양한 API와 무한한 잠재력을 지닌 HyperCLOVA X를 활용해 RAG를 구현해 보는 것은 매우 흥미로운 도전이 될 것입니다. 3부에서는 CLOVA Studio를 활용한 RAG의 각 단계를 코드와 함께 알아보며, 더욱 구체적으로 살펴보는 시간을 갖겠습니다! RAG 3부작 시리즈 ✔︎ (1부) RAG란 무엇인가 링크 ✔︎ (2부) RAG 구현 단계 알아보기 ✔︎ (3부) CLOVA Studio를 이용해 RAG 구현하기 Cookbook
  2. 이번 포스팅은 'RAG(Retrieval-Augmented Generation)'을 주제로 한 시리즈의 첫 번째 글입니다. 총 3부로 구성된 이 시리즈에서는 RAG가 등장하게 된 배경과 RAG의 개념에 대해 자세히 알아보고자 합니다. RAG 3부작 시리즈 ✔︎ (1부) RAG란 무엇인가 ✔︎ (2부) RAG 구현 단계 알아보기 링크 ✔︎ (3부) CLOVA Studio를 이용해 RAG 구현하기 Cookbook LLM의 등장과 한계 대규모 언어 모델(LLM)의 등장은 인간만이 가능하다고 여겨졌던 많은 분야에서 인공지능의 잠재력을 보여주었습니다. 방대한 양의 데이터를 기반으로 학습한 LLM은 인간 수준의 텍스트를 생성하고, 다양한 질문에 답변을 제공하며, 나아가 창의성이 요구되는 예술 분야에서도 두각을 나타내고 있습니다. 그러나 LLM이 보편화된 지 약 2년이 지난 지금, 이를 상용화하려는 많은 기업은 오랜 문제에 직면하고 있습니다. 그 문제는 바로 '할루시네이션'입니다. 인공지능 챗봇과의 대화에 큰 기대를 품었던 사용자들은 LLM이 제공하는 부정확하고 불완전한 답변에 실망하곤 합니다. 이는 할루시네이션 문제와 밀접한 관련이 있습니다. 할루시네이션은 단순히 사실이 아닌 내용을 만들어내는 문제를 넘어, LLM이 데이터의 최신성이나 출처의 투명성 확보와 같은 '정보 검색 방식의 질적 전환'에 필수적인 기능을 갖추지 못했음을 시사합니다. 아무리 그럴듯해 보여도 실제로는 도움이 되지 않는 답변으로는 기존의 정보 검색 패러다임을 변화시킬 수 없을 것입니다. *할루시네이션: 편향되거나 불충분한 학습 데이터, 모델의 과적합 등으로 인해 LLM이 부정확한 정보를 생성하는 현상 LLM의 한계를 뛰어넘는 방법: RAG 이러한 LLM의 한계를 극복하기 위해 여러 방법이 제안되고 있습니다. 그중 하나는 Fine tuning으로, 사전 학습 모델(pre-trained model)에 특정 도메인(예: 의료, 법률, 금융)의 데이터를 추가 학습시켜 모델을 최적화하는 방식입니다. 이를 통해 모델은 특정 분야에 대한 전문 지식을 습득하고 정확하고 전문적인 답변을 제공할 수 있습니다. 그러나 Fine tuning은 시간과 비용이 많이 소요되고, 모델의 범용성이 저하될 수 있습니다. 반면 RAG는 외부 지식 소스와 연계하여 모델의 범용성과 적응력을 유지하면서도 정확하고 신뢰할 수 있는 답변을 생성할 수 있습니다. 즉, RAG는 LLM의 한계를 극복하면서도 그 장점을 살릴 수 있는 접근 방식이라고 할 수 있습니다. RAG의 작동 방식은 다음과 같습니다. 사용자가 질문을 입력합니다. RAG는 외부 데이터베이스(예: 웹 문서, 기업 내부 문서)에서 질문과 관련된 정보를 검색합니다. 검색된 정보를 기반으로 LLM이 답변을 생성합니다. RAG는 다음과 같은 장점을 가지고 있습니다. Fine tuning에 비해 시간과 비용이 적게 소요됩니다. 외부 데이터베이스를 활용하기 때문에 별도의 학습 데이터를 준비할 필요가 없습니다. 모델의 일반성을 유지할 수 있습니다. 특정 도메인에 국한되지 않고 다양한 분야에 대한 질문에 답변할 수 있습니다. 답변의 근거를 제시할 수 있습니다. 답변과 함께 정보 출처를 제공하여 답변의 신뢰도를 높일 수 있습니다. 할루시네이션 가능성을 줄일 수 있습니다. 외부 데이터를 기반으로 답변을 생성하기 때문에 모델 자체의 편향이나 오류를 줄일 수 있습니다. 이를 비유하자면, Fine tuning은 언어 모델(A)이 사용자의 질문에 정확히 답하기 위해 특정 도메인 지식을 공부하고 학습하여 암기한 상태로 성장시키는 것이라면, RAG는 언어 모델(A)과 도서관 사서가 협업하는 것과 같습니다. 사용자가 질문을 하면, 사서가 도서관의 책 중에서 그 질문에 대한 정보를 담고 있는 책을 찾아낸 후, 언어 모델(A)이 그 책의 내용을 참고하여 질문에 답변하는 것이라고 볼 수 있습니다. Fine tuning과 RAG는 기술적 차이는 있지만, 모두 LLM의 한계를 극복하고 인공지능 기술의 발전을 이끄는 중요한 방법입니다. 상황에 따라 적합한 방법을 선택하고 활용한다면 LLM의 잠재력을 최대한 발휘할 수 있을 것입니다. RAG 자세히 알아보기 그렇다면 RAG에 대해서 조금 더 자세하게 알아볼까요? RAG의 작동 과정을 단계별로 더욱 자세히 살펴보면 다음과 같습니다. 데이터 임베딩 및 벡터 DB 구축 RAG의 첫 번째 단계는 자체 데이터를 임베딩 모델에 통합하는 것입니다. 텍스트 데이터를 벡터 형식으로 변환하여 벡터 DB를 구축합니다. 이렇게 벡터화된 정보가 풍부한 데이터베이스는 Retriever(문서 검색기) 부분에서 사용자의 쿼리와 관련된 정보를 찾는 데 활용됩니다. 쿼리 벡터화 및 관련 정보 추출 (증강 단계) 사용자의 질문(쿼리)을 벡터화합니다. 벡터 DB를 대상으로 다양한 검색 기법을 사용하여 소스 정보에서 가장 관련성이 높은 부분 또는 상위 K개의 항목을 추출합니다. 추출된 관련 정보는 쿼리 텍스트와 함께 LLM에 제공됩니다. LLM을 통한 답변 생성 LLM은 쿼리 텍스트와 추출된 관련 정보를 바탕으로 최종 답변을 생성합니다. 이 과정에서 정확한 출처에 기반한 답변이 가능해집니다. 아직 어려우신가요? 좀 더 쉬운 이해를 위해 앞선 도서관과 사서의 비유를 다시 가져와보겠습니다. 벡터 DB 구축: 수많은 책을 보관한 도서관 RAG의 첫 번째 단계는 자체 데이터를 임베딩 모델에 통합하여 벡터 DB를 구축하는 것으로, 이는 마치 사서가 방대한 양의 책을 정리하고 분류하여 도서관에 보관하는 것과 같습니다. 책은 텍스트 정보이며, 임베딩 모델은 책을 벡터라는 숫자 형식으로 변환하는 도구입니다. 벡터화된 정보는 책의 요약본과 같아서 사용자가 책의 내용을 쉽게 이해하고 찾을 수 있도록 도와줍니다. 정보 검색: 사용자에게 딱 맞는 책 추천 사용자가 도서관에 방문하여 질문을 하면, 사서는 사용자의 질문을 이해하고 관련된 책을 찾아주듯이, RAG의 두 번째 단계에서는 사용자의 질문(쿼리)을 벡터화하여 벡터 DB에서 가장 관련성이 높은 정보를 찾아냅니다. 이는 마치 사서가 책의 요약본을 바탕으로 사용자에게 딱 맞는 책을 추천하는 것과 유사합니다. 답변 생성: 사용자를 위한 지식 활용 사서가 추천한 책을 바탕으로 사용자는 새로운 지식을 얻듯이, RAG의 마지막 단계에서 LLM은 벡터 데이터베이스에서 추출된 정보와 사용자의 질문을 기반으로 새로운 답변을 생성합니다.이는 사용자가 책을 읽고 새로운 지식을 얻어 자신의 생각을 바탕으로 새로운 아이디어를 창조하는 것과 같습니다. RAG는 Retrieval(검색), Augmentation(증강), Generation(생성)의 세 단계로 이루어져 있으며, 각 단계가 협력하여 사용자의 질문에 빠르고 정확하게 답변할 수 있도록 돕습니다. 최신 정보 검색, 벡터화, 벡터 유사성 검색을 사용한 정보 증강, 그리고 생성형 AI를 결합함으로써 LLM은 더 최신이고 간결하며 근거에 기반한 결과를 얻을 수 있게 됩니다. RAG 기술은 인공지능 분야에서 새로운 가능성을 제시하는 기술로 평가받고 있습니다. LLM의 한계를 극복하고 더욱 정확하고 신뢰할 수 있는 답변을 생성할 수 있다는 점에서 그 잠재력이 매우 크다고 할 수 있습니다. 지금까지 RAG 기술의 등장 배경과 작동 원리에 대해 알아보았는데요. 다음 편에서는 CLOVA Studio를 통해 RAG 기술을 어떻게 구현할 수 있는지 좀 더 자세히 알아보겠습니다. RAG 3부작 시리즈 ✔︎ (1부) RAG란 무엇인가 ✔︎ (2부) RAG 구현 단계 알아보기 링크 ✔︎ (3부) CLOVA Studio를 이용해 RAG 구현하기 Cookbook
  3. 네이버 클라우드 입니다. LLM을 활용하여 정해진 문서에 대하여 묻고 답변을 하는 챗봇을 만들고 싶은데, 어떻게 해야하는지 막막하시다구요? Hallucination(그럴싸한 거짓말)이 나오면 안 되는 챗봇을 만들고 싶은데, 어떻게 해야하는 것일까요? 아마 RAG(Retieval-augmented Generation)을 들어보셨을 것 같습니다. RAG Architecture를 활용하여, 이러한 챗봇을 만들 수 있습니다. 상세한 내용은 첨부한 가이드파일을 참고 부탁 드립니다.^^ HyperCLOVAX_RAG_검색증강생성_Workshop_231027.pdf
×
×
  • Create New...