LLM RAG: Retrieval-Augmented Generation
LLM RAG, RAG, Retrieval Augmented Generation, 검색 증강 생성
정의
RAG (Retrieval-Augmented Generation) 는 LLM 생성 전에 외부 지식 베이스에서 관련 문서를 검색 하여 프롬프트에 삽입하는 패턴. 최신 정보, 도메인 지식, 사설 데이터 접근 필요할 때 사용.
왜 필요한가
- 최신 정보: LLM 학습 컷오프 이후 지식
- 도메인 데이터: 회사 내부 문서, 개인 지식
- hallucination 감소: “출처” 를 명시
- 비용 절감: 파인튜닝 대신
파이프라인
질의 → embed → vector search → 상위 K 문서 → prompt 조합 → LLM → 답변
핵심 구성 요소
1. 문서 chunk 화
문서를 청크 (5001000 토큰) 로 분할. 겹치는 슬라이딩 윈도우 (100200 토큰) 로 문맥 유지.
2. Embedding
각 청크를 벡터로 변환. text-embedding-3-small, bge-large-en, nomic-embed 등.
3. Vector Store
- Redis Vector Search
- Pinecone, Weaviate, Qdrant, Milvus
- pgvector (PostgreSQL 확장)
4. Retrieval
- Dense: cosine similarity, HNSW 인덱스
- Sparse (BM25): 정확 매칭
- Hybrid: 두 점수 결합
- Reranker: cross-encoder 로 상위 K 재순위
5. Prompt Composition
Context:
[문서 1 요약]
[문서 2 요약]
Question: {질의}
Answer based on the context above.
최적화 기법
- HyDE: 가상 답변 embedding 으로 검색
- Multi-query rewriting: 질의 확장
- Contextual compression: chunk 내 관련 부분만 추출
- Query routing: 질의 종류별 다른 인덱스
평가 지표
- Retrieval: recall@k, MRR
- Generation: faithfulness (사실성), answer relevance
- Ragas 프레임워크
참고
- 관련 Redis Vector Search
- 관련 Function Calling
- 관련 HELM
이 글의 용어 (3개)
- [LLM Eval] HELM: Holistic Evaluation of Language Modelsai
- 정의 HELM (Holistic Evaluation of Language Models) 는 Stanford CRFM (Center for Research on Foundation…
- [Redis] Vector Search: HNSW, SVS-VAMANA, Semantic Cachedatabase-internals
- 정의 Vector Search 는 임베딩 벡터의 거리/유사도 기준으로 근접한 K 개 를 찾는 검색. Redis 는 RediSearch 모듈 (Redis 8 부터는 코어) 과 Va…
- Function Calling / Tool Use: LLM 도구 사용ai
- 정의 Function Calling (또는 Tool Use) 은 LLM 이 정의된 함수/도구를 호출 인자를 생성 하는 기능. JSON schema 로 함수 시그니처를 알려주면, …
💬 댓글