Cloudera와 Milvus를 사용한 실시간 데이터용 RAG 파이프라인 구축
현재 빅데이터 시대에 기업은 엄청난 양의 데이터를 생성하며, 그 잠재력을 최대한 끌어내기 위해서는 효율적인 처리가 필요합니다. 따라서 대규모 데이터 처리 수행, 다양한 클라우드 환경에 대한 적응성, 데이터 거버넌스와 보안을 유지하면서 실시간으로 의사 결정을 내릴 수 있는 능력은 데이터 관리 플랫폼에 필요한 필수 기능 중 일부입니다.
최근 Zilliz가 주최한 Unstructured Data Meetup에서 Cloudera의 수석 Gen AI 엔지니어인 Chris Burns는 엔드투엔드 데이터 수명 주기를 관리하기 위한 엔터프라이즈 데이터 클라우드 플랫폼인 Cloudera를 사용하여 효율적인 Retrieval Augmented Generation(RAG) 파이프라인을 구축하는 방법에 대해 이야기했습니다. 그는 Large Language Model (LLM) 애플리케이션에서 RAG의 중요성, 직면할 수 있는 과제, 그리고 더 나은 데이터를 생성하기 위해 Milvus로 RAG 파이프라인을 구축하는 단계에 대해 논의했습니다.
이 블로그에서는 그의 핵심 내용을 요약하고, RAG 파이프라인의 주요 기능 중 일부를 효과적으로 구현하기 위해 Cloudera를 Milvus와 통합하는 방법을 살펴보겠습니다. 자세한 내용은 YouTube에서 그의 발표 전체 다시보기를 시청하세요.
Cloudera에 대한 간략한 소개
Cloudera는 수집 및 저장부터 분석까지 전체 데이터 수명 주기를 지원하는 포괄적인 엔터프라이즈 데이터 플랫폼입니다. 모든 데이터 센터 또는 클라우드 플랫폼 전반에서 비용과 위험을 줄이면서 빠른 배포와 대규모 AI 구축 능력을 제공합니다. 실시간 스트리밍, 데이터 엔지니어링, 멀티-티어 스토리지, 멀티모달 데이터에 대한 적응성과 같은 역량을 갖춘 Cloudera는 기업을 위한 유연한 Gen AI 애플리케이션을 구축하기에 훌륭한 플랫폼입니다.
실시간 데이터로 RAG 파이프라인 구축하기
Retrieval Augmented Generation(RAG)은 데이터베이스와 같은 외부 소스의 정보에 접근하여 LLM의 성능을 향상시키는 기술입니다. 이러한 추가 정보(lake)는 LLM이 특정 도메인 지식에 기반한, 더 맥락적으로 관련성 있고 정확한 응답을 생성하도록 하며, 이는 LLM의 학습 데이터만으로는 제공되지 않았던 것입니다. 이는 매번 재학습하지 않고도 LLM이 특정 사용 사례를 처리하도록 만드는 효율적인 기술입니다. 과제는 높은 정확도와 함께 낮은 지연 시간과 비용을 유지하면서 실시간 데이터 수집, 처리, 검색의 복잡성을 처리할 수 있는 파이프라인을 구축하는 데 있습니다. 바로 여기서 프라이빗 AI와 실시간 검색을 지원하는 Cloudera의 강력한 인프라와 Milvus와 같은 도구가 중요한 역할을 합니다.
RAG 파이프라인을 위한 준비된 워크플로를 살펴보기 전에, 먼저 관련된 몇 가지 이론적 개념을 이해해 보겠습니다.
RAG 파이프라인 구축은 어떻게 시작해야 할까요?
RAG 파이프라인 구축에는 기본 이론 이해부터 고급 구성 구현까지 여러 단계가 포함됩니다. 이를 세분화해 보겠습니다:
RAG - 101 - 일반적인 과제와 기본 설정
Chris는 대부분의 LLM이 겪는 일반적인 과제인 환각에 대해 이야기하며 시작합니다. 그러나 여기서 그는 이를 confabulation과 fabrication이라고 바꿔 표현합니다. Confabulation은 LLM이 누락된 정보를 그럴듯하게 들리지만 잘못된 정보로 채워 넣는 것을 의미하는 반면, fabrication은 어떤 상상의 텍스트를 만들어내는 것을 의미합니다. 이러한 문제를 처리하기 위해 Chris는 멀티홉 머신 추론을 수행하고 데이터나 객체의 흐름을 추적하기 위한 추적성을 유지하는 것 외에도, 쿼리를 맥락적으로 이해하는 것이 매우 중요하다고 언급합니다.
과제에 대해 이야기했으니, RAG 시스템의 기본 구성을 이해해 봅시다. 핵심적으로 RAG 파이프라인은 두 가지 주요 구성 요소로 이루어져 있습니다:
Retriever: 이 구성 요소는 쿼리를 기반으로 관련 정보를 찾기 위해 대규모 데이터셋(예: 벡터 데이터베이스)을 검색합니다.
Generator: 이 구성 요소는 검색된 정보를 사용하여 일관되고 맥락적으로 정확한 응답을 생성합니다.
Retriever와 Generator는 시스템이 복잡한 쿼리를 다룰 때도 정확하고 관련성 있는 답변을 제공하도록 함께 작동합니다. 그러나 Chris가 지적하듯이, 성공적인 ML 프로젝트에는 좋은 데이터뿐만 아니라 도메인 전문성도 필요합니다. 데이터는 관련성이 있고 일관되어야 하며, 관련성을 보장하는 데 도메인 지식이 매우 중요합니다.
RAG - 201 - 통계 분석 및 하이브리드 추론
통계 분석 - RAG 파이프라인의 성능을 개선하기 위해, 일부 통계 분석을 수행하면 LLM의 응답 품질을 더 잘 이해하는 데 도움이 될 수 있습니다.
Gen AI의 맥락에서 혼동 행렬을 사용하면 검색 성공률을 정량적으로 이해하는 데 도움이 될 수 있습니다.
알려지지 않은 답변에 대해 거짓 진술을 만들어내기보다 답변을 거부함으로써 LLM 응답을 의인화하면 답변에 더 인간적인 느낌을 더할 수 있습니다.
- 하이브리드 추론 - 하이브리드 추론은 기업이 예산 제약 내에서 성능과 보안의 균형을 맞추기 위한 훌륭한 기법입니다. 이는 사전 정의된 규칙과 머신러닝 모델의 조합을 사용하여 엣지 케이스를 처리하고 응답 품질을 개선합니다. 여기서 목표는 서로 다른 플랫폼에서 결과를 재현할 수 있게 하는 것이므로, 민첩하고 확장 가능하며 실시간에 적합한 아키텍처에 초점을 맞춰야 합니다.
RAG - 301 - 데이터 유형 고려 사항
벡터 데이터베이스에 데이터를 효율적으로 저장하려면 적절한 파티셔닝 및 청킹 전략을 고안하는 것이 필수적입니다. 파티셔닝은 데이터를 더 작고 관리하기 쉬운 단위로 나누는 것을 의미하는 반면, 청킹은 요소의 콘텐츠를 기반으로 이러한 파티션을 함께 묶는 것을 의미합니다. 두 가지를 모두 결정하려면 데이터 유형을 아는 것이 중요합니다.
청킹 전략의 유형
청킹 전략의 유형
소설, 기술 문서 또는 이메일 형태의 데이터는 밀집 데이터로 분류됩니다. 즉, null 값이 매우 적다는 뜻이며, 이는 각 요소가 중요하다는 것을 의미합니다. 반면, 센서 데이터, 범주형 데이터 또는 그래프 데이터와 같은 데이터는 null 값이 많기 때문에 희소 데이터라고 합니다.
밀집 데이터와 희소 데이터의 예
밀집 데이터와 희소 데이터의 예
RAG 파이프라인에서 사용되는 데이터 유형은 성능과 정확도에 상당한 영향을 미칠 수 있습니다. 텍스트, 이미지, 오디오와 같은 다양한 유형의 데이터는 서로 다른 처리 및 검색 기법을 필요로 합니다. 사용되는 데이터 유형과 이를 효과적으로 처리하는 방법을 이해하는 것은 성공적인 RAG 파이프라인을 구축하는 데 매우 중요합니다.
RAG - 401 - Milvus Vector DB 구성
Milvus는 고차원 벡터 임베딩의 효율적인 저장, 인덱싱 및 검색을 위해 설계된 오픈 소스 벡터 데이터베이스입니다. 유사도 검색에 최적화되어 있어 추천 시스템, 이미지 검색 애플리케이션 및 RAG 파이프라인에 이상적입니다. Milvus는 대규모 데이터셋을 지원할 수 있으며 확장성이 뛰어나 엔터프라이즈 애플리케이션에 적합합니다. Milvus의 다음 기능들은 RAG 파이프라인에 특히 유용합니다 -
- 하이브리드 검색 - Milvus는 동일한 데이터셋 내의 여러 벡터 필드에 대해 동시 쿼리를 수행하고 결과를 재순위화 전략과 통합하는 하이브리드 검색(다중 벡터 검색)을 지원합니다. 이를 통해 개별 벡터가 서로 다른 임베딩 모델, 데이터 처리 기술 또는 기타 사용자 지정 작업을 사용할 수 있는 유연성을 제공합니다.
Milvus를 사용한 하이브리드 검색
Milvus를 사용한 하이브리드 검색
- 다중 트립 쿼리 - Milvus는 하이브리드 검색에서 사용되는 다양한 검색 방법 간의 트레이드오프를 균형 있게 조정할 수 있는 복잡한 쿼리를 위한 고급 검색 기술을 지원합니다. 다중 트립 쿼리를 통해 검색 결과를 개선하기 위해 쿼리를 여러 단계에 걸쳐 반복적으로 처리할 수 있습니다. 쿼리의 초기 실행 후, 재순위화(결과를 우선순위 순서로 정렬), 쿼리 확장(특정 속성에 대해 확장), 또는 필터링을 기반으로 추가 쿼리를 실행할 수 있습니다.
Milvus를 사용한 다중 트립 쿼리
Milvus를 사용한 다중 트립 쿼리
마지막으로, Milvus는 게이트키퍼의 사용을 지원하는데, 이는 생성기로 전달하기 전에 관련 정보만 검색되도록 검색 프로세스에 적용할 수 있는 필터입니다. 이는 데이터 양이 매우 클 수 있고 관련 없는 정보를 빠르게 걸러내는 것이 중요한 실시간 RAG 파이프라인에서 특히 유용할 수 있습니다.
RAG 파이프라인을 위한 Milvus와 Cloudera 통합
Cloudera는 Apache NiFi 2.0(흐름 기반 프로그래밍에 기반한 데이터플로우 시스템)으로 구동되는 RAG용 준비된 워크플로를 제공합니다. 이 워크플로는 Milvus를 포함한 다양한 데이터 저장소, 모델 및 벡터 데이터베이스를 지원합니다. 그중 일부를 간단히 살펴보겠습니다.
- S3에서 Milvus로 - RAG의 첫 번째 단계는 소스에서 데이터를 수집하고, 전처리하고, 임베딩으로 변환한 다음, 벡터 데이터베이스에 저장하는 것입니다.
Data to VectorDB workflow
Data to VectorDB workflow
예를 들어, 이 Cloudera 워크플로는 S3에서 pdf 문서를 가져와 huggingface 모델을 사용해 벡터화하고 결과를 Milvus에 기록합니다. 파티셔닝 및 청킹과 같은 모든 데이터 처리 단계는 관련 커넥터를 드래그, 드롭 및 실행하는 것만으로 간단히 수행할 수 있습니다.
Cloudera의 S3에서 Milvus로 워크플로
Cloudera의 S3에서 Milvus로 워크플로
- RAG Query Milvus - RAG의 두 번째 단계는 쿼리를 입력으로 받아 임베딩으로 변환한 다음, 벡터 데이터베이스에 이미 저장된 임베딩과 유사도 검색을 수행하는 것입니다. 임베딩이 쿼리 임베딩에 가장 가까운 데이터가 가져와집니다. 이 정보는 LLM이 응답을 생성하는 데 추가 컨텍스트로 작용합니다. Cloudera는 RAG를 위해 Milvus를 쿼리하는 준비된 워크플로를 제공합니다.
Cloudera의 RAG Query Milvus 워크플로
Cloudera의 RAG Query Milvus 워크플로
결론
이 블로그에서는 Unstructured Data Meetup에서 Chris Burns가 발표한 내용을 바탕으로 Cloudera를 사용해 실시간 RAG 파이프라인을 구축하는 방법에 대해 이야기했습니다. 기업이 날마다 더 큰 규모로 진화함에 따라, 방대한 양의 정보에서 효율적으로 가치를 도출하기 위한 고급 솔루션이 필요합니다. Cloudera와 같은 데이터 수명 주기 관리 플랫폼을 통해 Gen AI 애플리케이션을 최소한의 노력으로 기업용으로 쉽게 개발할 수 있습니다. 또한 Milvus를 Cloudera와 함께 통합하면 RAG 파이프라인을 구축하기 위한 강력한 프레임워크를 제공합니다.
Chris는 먼저 LLM이 직면하는 일반적인 과제인 작화와 조작, 그리고 이를 처리하는 방법에 대해 이야기했습니다. 또한 그는 RAG 파이프라인의 성능을 향상시키기 위해 통계 분석과 하이브리드 추론을 수행하는 것의 중요성을 강조했습니다. Milvus는 정확하고 맥락을 인식한 응답을 보장하면서 보안을 유지하기 위해 하이브리드 추론, 멀티트립 쿼리, 게이트키퍼를 지원하므로 RAG 사용 사례에 적합한 훌륭한 벡터 데이터베이스입니다.
계속 읽기

Why and How to Migrate from Self-Hosted Milvus to Zilliz Cloud
A simple, step-by-step guide to migrating from Milvus to Zilliz Cloud. Learn both endpoint and backup methods for a smooth, scalable vector database migration.

How to Build an Enterprise-Ready RAG Pipeline on AWS with Bedrock, Zilliz Cloud, and LangChain
Build production-ready enterprise RAG with AWS Bedrock, Nova models, Zilliz Cloud, and LangChain. Complete tutorial with deployable code.

Balancing Precision and Performance: How Zilliz Cloud's New Parameters Help You Optimize Vector Search
Optimize vector search with Zilliz Cloud’s level and recall features to tune accuracy, balance performance, and power AI applications.


