RAG 애플리케이션을 구축할 때 메타데이터 필터링, 하이브리드 검색 또는 에이전트
RAG란 무엇인가요?
Retrieval Augmented Generation (RAG)은 추가 데이터 소스를 통합하여 LLM을 향상시키는 기술입니다. 일반적인 RAG 애플리케이션에는 다음이 포함됩니다:
인덱싱 - 소스에서 데이터를 수집하고 인덱싱하기 위한 파이프라인으로, 일반적으로 Milvus에서 데이터를 로드, 분할, 정렬하는 과정으로 구성됩니다.
검색 및 생성 - 런타임에 RAG는 사용자의 쿼리를 처리하고, Milvus에 저장된 인덱스에서 관련 데이터를 가져오며, LLM은 이렇게 보강된 컨텍스트를 기반으로 응답을 생성합니다.
RAG 애플리케이션을 개선하는 방법은 다양합니다. 이 블로그에서는 Milvus 벡터 데이터베이스가 Metadata Filtering, Hybrid Search, 그리고 Agent 기능을 통해 RAG 앱의 성능을 어떻게 높일 수 있는지 논의합니다.
Metadata Filtering
Milvus에 데이터를 삽입할 때는 데이터에 대한 메타데이터를 포함하는 것이 유용합니다. 예를 들어 PDF로 작업하는 경우, 벡터가 속한 페이지, PDF 파일 이름, 작성자 등을 삽입할 수 있습니다.
Milvus에 메타데이터를 저장하면 관련 없는 데이터를 필터링할 수 있어 검색이 더 빠르고 효율적이 됩니다. 이 접근 방식은 RAG 애플리케이션에서 특히 유용할 수 있는데, 사용자 쿼리와 관련된 콘텐츠만 LLM에 반환하도록 보장할 수 있기 때문입니다.
Milvus는 전체 문자열 메타데이터 매칭을 지원하므로 prefix, infix, postfix 또는 character wildcard 검색을 사용하여 문자열을 매칭할 수 있습니다.
# 접두사 예시, “The”로 시작하는 모든 문자열과 일치합니다.
expression='title like "The%"'
# 중위 예시, 문장 어디에든 “the”라는 단어가 포함된 모든 문자열과 일치합니다.
expression='title like "%the%"'
# 접미사 예시, “Rye”로 끝나는 모든 문자열과 일치합니다.
expression='title like "%Rye"'
# 단일 문자 와일드카드 예시, 특정 위치의 단일 문자 하나와 일치합니다.
expression='title like "Flip_ed"'
정확한 일치 또는 contains_any()를 사용해 배열의 요소 중 일치하는 것이 있는지 확인하는 방식으로 배열 값을 사용하는 것도 가능합니다.
Hybrid Search
Milvus는 단일 데이터셋 컬렉션에서 최대 10개의 벡터 필드를 허용합니다. 이 지원을 통해 하이브리드 검색이 가능해지며, 사용자는 여러 벡터 열을 동시에 검색할 수 있습니다. 이 기능은 멀티모달 검색, 하이브리드 sparse and dense 검색, 하이브리드 dense 및 전체 텍스트 검색을 용이하게 하여 다재다능하고 유연한 검색 기능을 제공합니다.
서로 다른 열의 벡터는 서로 다른 처리 방법을 가진 다양한 임베딩 모델이 생성한 데이터의 여러 측면을 나타냅니다. 그런 다음 하이브리드 검색 결과는 다양한 재순위화 전략을 사용하여 결합되고 재순위화됩니다.
Milvus에서 Hybrid Search가 작동하는 방식
정보의 여러 관점을 표현합니다. 예를 들어 전자상거래에서 제품 이미지는 정면, 측면, 상단 보기를 포함합니다. 서로 다른 보기는 서로 다른 유형 또는 차원의 벡터로 표현될 수 있습니다.
다양한 유형의 벡터 임베딩을 활용합니다. 여기에는 BERT 및 Transformers와 같은 모델의 dense 임베딩과 BM25, BGE-M3, SPLADE와 같은 알고리즘의 sparse 임베딩이 포함됩니다.
이미지, 비디오, 오디오, 텍스트 파일과 같은 다양한 비정형 데이터 유형의 멀티모달 벡터 융합을 지원합니다. 예를 들어, 범죄 수사에서 용의자는 지문, 성문, 얼굴 인식과 같은 생체 인식 모달리티를 통해 표현될 수 있으며, 이는 서로 다른 모달리티 전반에서 개인을 식별하는 데 도움이 됩니다.
벡터 검색과 전문 검색의 융합을 지원합니다.
RAG 애플리케이션의 에이전트
대규모 언어 모델은 스스로 행동을 취할 수 없습니다. 단지 텍스트를 출력할 뿐입니다. 에이전트는 LLM을 추론 엔진으로 사용하여 어떤 행동을 취할지와 해당 행동에 전달할 입력을 결정하는 시스템입니다. 행동을 실행한 후, 결과를 다시 LLM으로 전달하여 더 많은 행동이 필요한지 또는 종료해도 되는지 판단할 수 있습니다.
웹 검색, 이메일 탐색, 검색된 문서에 대한 자기 성찰 또는 자기 평가를 추가하도록 RAG 수정 등 다양한 행동을 수행하는 데 사용할 수 있습니다.
설정이 완료되면, 데이터가 아직 저장되어 있지 않은 경우 에이전트가 Milvus에 새 데이터를 추가할 수 있으며, 또는 데이터를 검색하여 LLM에 다시 전달할 수도 있습니다. 이를 통해 RAG 시스템은 계속 최신 상태를 유지할 수 있습니다. Milvus는 또한 필요한 경우 ``` upsert()` `` 함수를 사용하여 데이터를 쉽게 업데이트할 수 있게 해줍니다.
이것이 컬렉션에 메타데이터를 포함하는 것이 중요한 이유입니다. 필요한 정보만 upsert할 수 있기 때문입니다.
LangGraph, Llama 3, Milvus로 Local Agentic RAG 시스템을 구축하는 방법을 소개하는 저희 블로그를 자유롭게 확인해 보세요
결론
결론적으로, Milvus에 모두 통합된 Metadata Filtering, Hybrid Search, Agents를 사용하면 RAG 애플리케이션을 향상시킬 수 있습니다.
Metadata Filtering은 데이터에 추가 속성을 더해 풍부하게 만들어 정확하고 효율적인 검색을 가능하게 합니다. Hybrid Search는 여러 벡터 컬럼에 걸쳐 쿼리할 수 있게 하여 검색 기능을 확장합니다. Agents는 LLM의 출력에 기반해 행동을 자동화함으로써 기능을 한 단계 더 발전시킵니다.
이러한 전략을 사용하면 더 견고하고 효율적인 RAG 애플리케이션을 구축할 수 있습니다.
이 블로그 게시물이 마음에 드셨다면 Github에 스타를 주시고 Discord에 참여하여 커뮤니티와 여러분의 경험을 공유해 주세요.
계속 읽기

Milvus 2.6.x Now Generally Available on Zilliz Cloud, Making Vector Search Faster, Smarter, and More Cost-Efficient for Production AI
Milvus 2.6.x is now GA on Zilliz Cloud, delivering faster vector search, smarter hybrid queries, and lower costs for production RAG and AI applications.

Introducing Zilliz Cloud Global Cluster: Region-Level Resilience for Mission-Critical AI
Zilliz Cloud Global Cluster delivers multi-region resilience, automatic failover, and fast global AI search with built-in security and compliance.

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.



