미세 조정(fine-tuning) 없이 LLM이 데이터에 접근하도록 하세요. RAG는 범용 언어 모델과 도메인별 지식 간의 격차를 해소합니다.

조직의 문서(계약서, 정책, 지식 기반, 제품 설명서, 의료 기록)에 대한 질문에 답변하는 AI 비서를 구축하고자 할 때입니다. LLM을 데이터에 대해 미세 조정하는 것은 비용이 많이 들고, 느리며, 학습 시점에서 고정된 모델을 생성합니다. LLM이 쿼리 시점에 최신 도메인별 정보에 접근하고, 출처를 인용하며, 문서에 없는 사실을 환각(hallucinating)하지 않도록 하는 아키텍처가 필요합니다. RAG (Retrieval-Augmented Generation)는 이 목표를 달성하는 방법입니다.
Explore more design patterns and system architectures
MicrocosmWorks는 소스 권한 순위, 타임스탬프 기반 최신성 가중치, 그리고 각 검색된 구절이 주장을 얼마나 강력하게 뒷받침하는지 평가하는 신뢰도 점수 부여를 통해 RAG 파이프라인에서 충돌 해결을 구현합니다. 상충되는 구절이 검색될 때, 당사의 파이프라인은 가장 권위 있는 답변을 제시하는 동시에 불일치 및 출처 인용을 명확하게 드러내어 사용자가 정보에 입각한 결정을 내릴 수 있도록 합니다. 당사는 또한 도메인 전문가가 잘못된 해결을 표시할 수 있는 피드백 루프를 구축하며, 이는 시간이 지남에 따라 검색 순위를 향상시킵니다.
MicrocosmWorks는 문서 구조에 따라 다른 전략을 적용하는 콘텐츠 인지 청킹을 사용합니다—산문에는 의미론적 문단 분할, 헤더 컨텍스트가 보존된 테이블에는 행 수준 또는 섹션 수준 청킹, 임포트 문(import statements)이 첨부된 코드에는 함수 수준 청킹을 적용합니다. 우리는 각 청크에 문서 제목, 섹션 계층, 콘텐츠 유형을 포함한 메타데이터를 추가하여 검색 단계에서 유형별 스코어링을 적용할 수 있도록 합니다. 이 접근 방식은 우리 고객 프로젝트의 검색 관련성 벤치마크에서 단순한 고정 크기 청킹보다 25-40% 더 우수한 성능을 일관되게 보여줍니다.
MicrocosmWorks는 세 가지 차원에서 RAG 파이프라인을 테스트하는 평가 하네스를 구축합니다: 검색 관련성(올바른 청크가 발견되는가), 답변 충실도(생성된 답변이 검색된 내용을 실제로 반영하는가), 그리고 답변 완전성(전체 질문을 다루는가)입니다. 우리는 도메인 전문가와 함께 알려진 답변 쿼리, 적대적 에지 케이스, 그리고 다중 문서 합성을 요구하는 질문을 포함하는 골든 테스트 세트를 생성합니다. 이 평가는 CI/CD에서 자동으로 실행되므로, 모든 파이프라인 변경 사항은 배포 전에 기준 품질 지표에 대해 벤치마킹됩니다.
MicrocosmWorks는 고객의 규모, 쿼리 패턴, 운영 요구 사항에 따라 벡터 데이터베이스를 선정합니다. 관리 용이성을 위한 Pinecone, 하이브리드 키워드-벡터 검색을 위한 Weaviate, 이미 PostgreSQL에 투자한 팀을 위한 pgvector, 그리고 고성능 자체 호스팅 배포를 위한 Qdrant가 있습니다. 1천만 개 미만의 vectors 규모에서는 대부분의 옵션이 100ms 미만의 지연 시간을 제공하지만, 수억 개의 vectors 규모에서는 index type, quantization, sharding strategy가 매우 중요해지면서 그 차이가 크게 나타납니다. 저희는 architecture design phase에서 고객의 실제 embedding dimensions와 query patterns를 최종 후보 옵션들과 비교하여 벤치마킹합니다.
MicrocosmWorks는 원본 문서 저장소의 변경 사항을 감지하여 수정된 섹션만 재청크 및 재임베딩하고 전체 재인덱싱 없이 벡터 스토어를 업데이트하는 증분 수집 파이프라인을 구축합니다. 저희는 섹션 수준에서 콘텐츠 변경을 감지하는 문서 핑거프린팅을 구현하여, 단일 단락 편집이 전체 200페이지 문서의 재처리를 유발하지 않도록 합니다. 실시간 최신성 요구 사항이 있는 고객을 위해서는 최근 수정된 문서를 원본 시스템에 직접 질의하고 해당 결과를 벡터 검색 결과와 병합하는 실시간 검색 레이어를 추가합니다.
RAG는 지식 기반에서 검색된 컨텍스트로 LLM 생성을 보강합니다. 쿼리 시점에 시스템은 사용자 질문을 임베딩으로 변환하고, 벡터 데이터베이스에서 의미적으로 유사한 문서 청크를 검색하며, 가장 관련성 높은 청크를 LLM 프롬프트의 컨텍스트로 포함합니다. 이를 통해 모델의 응답은 실제 문서에 기반을 두게 되고, 출처 인용이 가능하며, 재학습 없이 지식 기반을 업데이트할 수 있습니다. 프로덕션 RAG 파이프라인은 수집(파싱, 청킹, 임베딩), 검색(벡터 검색, 재순위화, 하이브리드 검색), 그리고 생성(프롬프트 구성, 스트리밍, 가드레일)을 처리합니다.
이 아키텍처는 두 가지 파이프라인을 가집니다. 수집 파이프라인은 파싱(PDF, DOCX, HTML 추출), 청킹(의미론적 또는 중복을 포함한 고정 크기), 임베딩(임베딩 모델을 통해), 그리고 저장(벡터 데이터베이스 + 문서 저장소)을 통해 문서를 처리합니다. 쿼리 파이프라인은 사용자 질문을 받아 쿼리 임베딩을 생성하고, 벡터 데이터베이스에서 후보 청크를 검색하며, 관련성을 위해 재순위화하고, 상위 청크를 컨텍스트로 포함하는 프롬프트를 구성하며, 출처 인용과 함께 LLM 응답을 스트리밍합니다.
text-embedding-3-large, Cohere embed-v4 또는 오픈 소스 대안(BGE, E5)과 같은 모델을 사용합니다. 수집을 위한 배치 처리, 검색을 위한 단일 쿼리 처리.| 레이어 | 기술 |
|---|---|
| 문서 파싱 | Unstructured, Apache Tika, LlamaParse, Docling, custom OCR (Tesseract, AWS Textract) |
| 임베딩 | OpenAI text-embedding-3-large, Cohere embed-v4, BGE-M3, E5-large-v2 |
| 벡터 데이터베이스 | Milvus, Pinecone, Qdrant, Weaviate, pgvector (소규모용) |
| 키워드 검색 | Elasticsearch, OpenSearch, PostgreSQL full-text search |
| 재순위화 | Cohere Rerank, BGE Reranker, ColBERT v2, FlashRank |
| LLM | Claude (AI Gateway 경유), GPT-4, Gemini — AI SDK를 통한 공급업체 독립적 |
| 오케스트레이션 | LangChain, LlamaIndex 또는 사용자 지정 파이프라인 (프로덕션 환경에서 MW 선호) |
| 사용 시점 | 피해야 할 시점 |
|---|---|
| 사용자가 조직의 특정 문서에 기반한 답변을 필요로 할 때 | 지식 기반이 50페이지 미만일 때 — 시스템 프롬프트에 바로 넣으세요. |
| 문서가 자주 업데이트되고 AI가 최신 정보를 필요로 할 때 | 모델이 새로운 사실에 접근하는 것이 아니라 새로운 기술/행동을 학습해야 할 때 (대신 미세 조정) |
| 출처 인용 및 감사 가능성이 요구 사항일 때 (법률, 규정 준수, 의료) | 질문이 순전히 대화형이며 사실적 근거가 필요하지 않을 때 |
| 여러 사용자 그룹이 다른 문서 하위 집합에 접근해야 할 때 (권한 필터링 RAG) | 사실적 정확성이 목표가 아닌 창의적 글쓰기 도구를 구축할 때 |
MW는 검색 품질을 중심으로 RAG 파이프라인을 구축합니다. LLM 프롬프트를 건드리기 전에 검색 정밀도를 벤치마킹합니다. 평범한 검색과 훌륭한 LLM을 가진 RAG 시스템은 자신감 있는 소리를 내는 잘못된 답변을 생성합니다. 저희의 표준 파이프라인에는 검색 평가 하네스가 포함됩니다: 알려진 관련 문서가 있는 테스트 쿼리 세트이며, MRR@5 및 NDCG@10으로 측정됩니다. 생성 최적화 전에 청킹, 임베딩 모델 및 재순위화를 반복하여 검색 메트릭이 목표 임계값에 도달하도록 합니다. 저희는 법률 문서 검토, 의료 지식 기반, 다국어 고객 지원 분야에서 RAG 시스템을 구축해왔으며, 공통적인 교훈은 검색 품질이 답변 품질의 80%를 차지한다는 것입니다.
1만 개의 벡터에서는 임베딩 검색이 쉽습니다. P99 지연 시간이 100ms 미만인 1억 개의 벡터에서는 인프라 문제가 되며, 이 패턴이 바로 이 문제를 해결합니다.