ClouderaNOW AI 에이전트, 클라우드 버스팅 및 AI용 데이터 패브릭 소개 | 4월 8일

지금 등록하기
  • Cloudera Cloudera
  • 클라우데라에 문의하기
    | 기술

    아무도 알려주지 않는 RAG의 진실

    Chris Burns Headshot

    RAG 애플리케이션 구축: 디테일에 숨은 변수들

    RAG(Retrieval-Augmented Generation) 애플리케이션 구축은 데이터 수집, 처리, 검색 과정을 세심하게 다뤄야 하기 때문에 복잡해지기 쉽습니다. 기존에는 개발자가 데이터를 청킹하고, 임베딩을 삽입하며, 벡터 데이터베이스를 통합하는 과정을 직접 수행해왔습니다.  

    그러나 RAG 솔루션을 구현할 때 가장 흔히 빠지는 함정 중 하나는, 이러한 구성 요소들이 어떻게 서로 밀접하게 연관되어 있는지 제대로 이해하지 못하는 것입니다.  개발자들은 '데이터를 있는 그대로 청킹해도 되는가, 아니면 청킹 전에 먼저 정제해야 하는가?'라는 질문을 스스로에게 던져야 합니다.   

    Cloudera Data Flow와 Cloudera 전용 RAG 파이프라인 프로세서는 비정형 데이터를 파티셔닝하여 정제하는 복잡한 프로세스를 간소화하여, 보다 효과적인 청킹과 고품질 벡터 임베딩을 가능하게 합니다. 잘못 설계된 파티셔닝이나 청킹은 성능 저하와 임베딩 품질 저하로 이어질 수 있지만, Cloudera의 도구는 이러한 복잡성을 대부분 추상화하여 효율적이고 안정적인 RAG 솔루션 개발을 간소화합니다.

    이제 RAG 워크플로의 핵심 단계인 파티셔닝, 청킹, 임베딩, 인서팅 과정을 살펴보고, Cloudera의 기술이 각 단계를 어떻게 간소화하는지 알아보겠습니다.

    데이터 파티셔닝: RAG의 기반

    RAG 워크플로의 첫 번째 핵심 단계는 파티셔닝입니다. 이 과정은 방대하고 때로는 비정형적인 데이터 소스를 의미 있는 단위로 분할함으로써, 비정형 데이터를 프로그램적으로 반복 처리할 수 있도록 합니다. 물론 파티셔닝 없이도 검색 프로세스는 여전히 가능하지만, 처리 과정을 더 세밀하게 제어할수록 다양한 데이터 소스에 대한 플로를 더 유연하게 구축할 수 있습니다. 파티셔닝을 통해 사용자가 정보를 쿼리하는 방식에 맞춰 데이터를 관리 가능한 단위로 구조화할 수 있습니다.

    파티셔닝 전략은 데이터의 특성에 따라 달라집니다. 예를 들어, 섹션 헤더 기준으로 파티셔닝을 하면, 사용자 설명서와 같이 긴 문서를 처리할 때 보다 체계적인 검색이 가능합니다. 반면, 채팅 로그와 같은 대화형 데이터의 경우, 대화 흐름을 유지하기 위해 타임스탬프별로 콘텐츠를 분할하는 방식의 파티셔닝이 사용될 수 있습니다. 또한 토큰 제한도 고려해야 합니다. 대부분의 임베딩 모델은 한 번에 처리할 수 있는 토큰 수가 정해져 있기 때문에, 최적의 성능을 위해서는 파티셔닝이 이러한 제약에 맞춰 이루어져야 합니다.

    명확하게 정의된 파티셔닝 방식은 RAG 애플리케이션의 정확성, 효율성, 사용 편의성을 유지하는 데 도움이 됩니다. 개발자는 불필요한 연산 부담을 최소화하면서도 가장 관련성이 높은 데이터만 검색하여 LLM에 전달함으로써, 응답 품질을 최적화할 수 있습니다.

    청킹: 컨텍스트 보존을 위한 설계

    파티셔닝이 완료되면, 다음 단계는 청킹입니다. 청킹은 의미 있는 컨텍스트를 유지하기 위해 서로 관련된 파티션들을 함께 묶는 작업입니다. 파티셔닝이 콘텐츠를 기본 구성 요소로 나누는 과정이라면, 청킹은 이러한 구성 요소 간의 관계를 유지하여 컨텍스트 손실을 방지합니다.

    예를 들어, 법률 문서에서는 하나의 조항이나 규정이  여러 단락에 걸쳐 있을 수 있습니다. 이러한 내용이 지나치게 좁게 파티셔닝되면, 사용자의 쿼리를 기반으로 콘텐츠를 검색할 때 의미가 손실될 수 있습니다. 청킹은 관련된 텍스트 단위를 논리적으로 완결된 구성으로 묶어주기 때문에  이 문제를 해결하는 데 도움이 됩니다. 이렇게 하면 사용자가 쿼리를 실행할 때, 모델이 정확하고 관련성 있는 응답을 생성할 수 있도록 충분한 컨텍스트 정보를 수신할 수 있습니다.

    청킹 전략은 데이터 세트의 특성에 따라 달라집니다. 일부 방식은 고정 길이 청킹과 같이, 미리 정의된 토큰 수를 기준으로 텍스트를 그룹화하는 단순한 방법을 사용합니다. 보다 고급 전략으로는 문서의 제목과 관련 텍스트를 함께 청킹하는 방법이 있습니다.  

    효과적인 청킹은 검색 정확도를 높이고, 검색 대기 시간을 최적화하며, LLM이 생성하는 응답이 컨텍스트를 정확히 이해하고 정밀하게 이루어지도록 보장합니다. 또한 컨텍스트 보존을 극대화하는 청킹 전략을 수립하면, 사전 정의한 청크 크기를 바탕으로 임베딩 모델에 대한 정교한 결정을 내릴 수 있습니다.

    임베딩: 텍스트를 검색 가능한 벡터로 변환

    구조화된 청크가 준비되면, RAG 워크플로의 다음 단계는  임베딩입니다. 임베딩은 텍스트를 수치화한 표현으로, 머신이 서로 다른 텍스트 조각의 의미를 이해하고 비교할 수 있도록 해줍니다. 임베딩이 없다면, RAG 애플리케이션은 단순한 키워드 검색에만 의존하게 되어, 진정한 의미 기반 검색에 필요한  컨텍스트 이해 능력이 부족해집니다.

    임베딩은 토큰화, 벡터 변환, 저장 단계 등을 포함한 여러 단계의 프로세스입니다. 텍스트 청크가 임베딩 모델을 통과할 때, 먼저 토큰으로 분해됩니다. 이러한 토큰들은 고차원 벡터로 변환되어, 텍스트의 핵심 의미를 유클리드 거리(L2), 코사인 유사도 등 수학적 유사도 검색에 적합한 형태로 표현됩니다.

    적절한 임베딩 모델을 선택하는 것은 매우 중요합니다. 일부 모델은 범용 검색에 최적화되어 있는 반면, 다른 모델은 법률, 의료, 기술 문서와 같은 도메인별 애플리케이션에 맞게 미세 조정되어 있습니다. 벡터 데이터베이스의 스키마와 일치해야 하는 벡터 차원 수 또한 매우 중요합니다. 벡터 크기가 일치하지 않으면 비효율적인 검색이나 호환성 문제가 발생할 수 있습니다.

    텍스트 청크가 벡터 표현으로 임베딩되면, 유사도 메트릭을 활용한 검색이 가능해집니다. 이를 통해 사용자 쿼리를 기반으로 가장 관련성이 높은 콘텐츠를 매우 효율적으로 검색할 수 있어, RAG 기반 애플리케이션의 정확성과 응답성을 크게 향상시킬 수 있습니다.

    Cloudera Data Flow는 강력하면서도 사용이 간편한 임베딩 프로세서를 제공하여 데이터 플로의 기능을 향상시키고,  프로세서 컨텍스트 내에서 모델을 직접 활용할 수 있도록 합니다.  별도의 API 호출이나 GPU 없이도 사용할 수 있습니다. 이 프로세서는 세 가지 간단한 속성을 갖추고 있습니다.

    이를 통해 각 데이터 플로에 가장 적합한 임베딩 모델을 세밀하게 선택할 수 있는 제어권이 주어집니다.

    임베딩된 청크를 벡터 데이터베이스에 인서팅: 효율적인 검색의 구현

    RAG 워크플로의 마지막 단계는 임베딩된 청크를 벡터 데이터베이스에 인서팅하는 것입니다. 벡터 데이터베이스는 고속 유사도 검색을 수행하도록 설계되어, 사용자가 쿼리를 실행할 때 관련 콘텐츠를 효율적으로 검색할 수 있도록 해줍니다.

    정확한 일치를 위해 구조화된 인덱싱에 의존하는 기존 데이터베이스와 달리, 벡터 데이터베이스는 ANN, KNN과 같은 알고리즘과 유사도 검색을 활용하여  사용자의 쿼리와 가장 유사한 임베딩을 찾아냅니다. 이러한 방식 덕분에 RAG 애플리케이션은 쿼리 문구가 저장된 텍스트와 다르더라도 의미상 관련 있는 콘텐츠를 검색할 수 있습니다.

    임베딩된 데이터가 벡터 데이터베이스에 인서팅되면, 시스템은 실시간 쿼리 처리를 위한 준비를 마치게 됩니다. 사용자가 요청을 제출하면, 해당 쿼리는 임베딩으로 변환되어 저장된 벡터와 비교되고, 가장 관련성이 높은 결과가 검색되어 LLM의 응답을 구성하는 기반이 됩니다.

    Cloudera Data Flow는 Milvus, Pinecone, Chroma 등 다양한 VectorDB 연결 프로세서를 제공하며, 앞으로도 더 많은 지원이 예정되어 있습니다.

    바로 시작하는 RAG 애플리케이션 개발의 간소화

    이제 조직은 Cloudera Data Flow와 전용 RAG 파이프라인 프로세서를 통해 RAG 애플리케이션을 그 어느 때보다 쉽게 구축, 배포, 최적화할 수 있습니다. Cloudera 솔루션은 복잡한 기술 요소를 대부분 추상화함으로써, 개발자가 검색 정확도 향상, 응답 생성 최적화, 전반적인 사용자 경험 개선 등에 집중할 수 있도록 지원합니다.

    기업은 Cloudera의 독점적인 파티셔닝, 청킹, 임베딩, 벡터DB 통합 프로세서 등을 활용하여, 효율적으로 확장하고 컨텍스트에 맞는 정확한 응답을 제공하는 RAG 솔루션을 신속하게 구현할 수 있습니다.

    Cloudera가 RAG 애플리케이션 개발을 어떻게 간소화할 수 있는지 알아보려면, 데모를 요청하거나 기술 문서를 통해 자세한 정보를 확인하세요.

    고급 RAG 최적화 기법에 대한 심층 분석도 곧 공개될 예정이니 많은 기대 부탁드립니다!

    자세히 알아보기

    Cloudera Data Flow 2.9의 새로운 기능을 살펴보고 데이터 파이프라인을 어떻게 혁신할 수 있는지 알아보려면, 이 영상을 확인하세요.

    https://community.cloudera.com/t5/What-s-New-Cloudera/Cloudera-DataFlow-now-powers-GenAI-pipelines-and-supports/ba-p/388173

    https://community.cloudera.com/t5/What-s-New-Cloudera/Cloudera-DataFlow-2-9-now-supports-building-GenAI-pipelines/ba-p/395546

    시작할 준비가 되셨나요?

    Your form submission has failed.

    This may have been caused by one of the following:

    • Your request timed out
    • A plugin/browser extension blocked the submission. If you have an ad blocking plugin please disable it and close this message to reload the page.