llm9 RAG 구현시 고려사항 : (6) 멀티턴 대화(ConversationBufferMemory) 멀티턴 RAG에서의 문맥 유지 전략멀티턴 대화란 사용자가 여러 번 연속적으로 질문을 던지는 상황을 말합니다.예를 들어, 사용자와 AI 사이에 다음과 같은 흐름이 있다고 해봅시다.User: "X100 제품의 무게는 얼마야?"User: "그보다 가벼운 모델은 있어?"User: "그 모델은 방수되니?"이처럼 두 번째 이후의 질문들은 대부분 앞선 질문의 문맥을 전제로 합니다.따라서 RAG 시스템이 이런 흐름을 정확히 파악하고 연결된 문맥을 유지하며 검색과 생성을 수행할 수 있어야 합니다.멀티턴 문맥이 필요한 이유유형설명지시어 생략“그거” “그 제품” “그 사람”처럼 이전 대상이 명시되지 않음조건 누적“그중 가장 저렴한 걸 알려줘” → 이전 질문의 결과에 기반시간 경과사용자와의 대화가 길어질수록 이전 정보 잊지 .. 2025. 7. 11. RAG 구현시 고려사항 : (5) RAG 성능 최적화 전략 5. RAG 성능 최적화 전략RAG 시스템은 구조적으로 유연하고 강력하지만, 검색 정확도와 생성 품질은 세부 구성과 튜닝 수준에 따라 천차만별입니다.이 장에서는 실제 현업 또는 서비스 환경에서 RAG 성능을 최적화하는 방법과 정량적 평가 지표를 소개합니다.✅ 1. Retriever 성능 최적화📌 핵심 튜닝 항목항목설명최적화 전략top_k검색할 문서 개수너무 크면 noise, 너무 작으면 recall↓nprobeIVF 탐색 범위 (FAISS)Recall/Latency의 트레이드오프Reranker 사용재정렬 정확도 ↑Cross-Encoder 기반 모델 추천Hybrid 검색Dense + BM25의미 + 키워드 보완 효과 📊 실전 튜닝 팁top_k=3~5로 시작하여 Recall@5 테스트nprobe는 5~2.. 2025. 7. 11. RAG 구현시 고려사항 : (4) 프롬프트 설계 및 Generator 고려사항 4. 프롬프트 설계 및 Generator 고려사항RAG 시스템에서 Retriever가 문서를 잘 가져오더라도, LLM이 그 문서를 정확히 이해하고 활용할 수 있도록 프롬프트를 잘 구성하는 것이 매우 중요합니다.이 섹션에서는 프롬프트 템플릿 구성, 문서 삽입 전략, 그리고 Generator 선택 시 고려해야 할 점을 자세히 설명합니다.✅ 1. 프롬프트 설계의 중요성프롬프트 설계는 단순한 질문 전달이 아닌, 다음 역할을 수행합니다:역할설명문맥 주입검색된 문서를 LLM이 이해할 수 있게 연결정보 정제중복 제거, 길이 조절 등행동 유도응답 형식/목표를 명확히 지시 (Instruction Prompting) ✅ 2. 프롬프트 구성 전략📌 기본 구조 예시:[사용자 질문] - 대한민국 대통령은 누구입니까? [문서 .. 2025. 7. 11. RAG 구현시 고려사항 : (3) Retriever 설계 고려사항 3. Retriever 설계 고려사항Retriever는 유사한 문서를 정확하고 빠르게 찾기 위한 핵심 컴포넌트입니다. 아래는 Retriever를 구성할 때 고려해야 할 주요 요소들입니다.✅ 1. 임베딩 모델 선택역할: 사용자 쿼리와 문서를 의미 기반 벡터로 변환선택 기준:의미 보존력 (semantic similarity 성능)다국어/한국어 지원 여부추론 속도 vs 정확도오픈소스 vs 상용 API추천 모델 예시:모델명특징text-embedding-3-small (OpenAI)상용 정확도 우수, 1536차원bge-large-en/koBEIR 성능 우수, 한국어 버전도 존재E5-mistralHugging Face 기반, RAG에 최적화 ✅ 2. 벡터 DB 선택역할: 벡터를 저장하고 유사한 벡터를 빠르게 검색선.. 2025. 7. 11. RAG 구현시 고려사항 : (2) RAG 아키텍처 구성요소 1. Query Embedding (임베딩 모델)역할: 사용자의 질문을 의미 벡터로 변환하여 검색에 활용할 수 있게 합니다.대부분의 RAG 시스템은 Dense Embedding을 사용합니다. (ex. text-embedding-ada-002, bge, E5 등)문장의 의미적 유사성을 보존하는 것이 핵심.문서 인덱싱 시에도 같은 모델로 임베딩하여 저장합니다.임베딩 모델 선택 시 고려사항:항목설명다국어 지원한국어, 영어 등 대상 언어 지원 여부성능semantic similarity 기준의 평가 (e.g. MTEB, BEIR)토큰 제한문서 단위 처리 가능 여부라이선스상용 사용 가능 여부 (OpenAI vs 오픈소스) 2. Retriever (벡터 검색기)역할: 벡터화된 쿼리와 벡터 DB에 저장된 문서 임베딩 .. 2025. 7. 11. RAG 구현시 고려사항 : (1) RAG란 무엇인가? [AI를 활용해 작성 되었습니다]1. RAG란 무엇인가?🔍 개요: Retrieval-Augmented Generation**RAG(Retrieval-Augmented Generation)**은 대규모 언어 모델(LLM)의 한계를 극복하기 위해 설계된 지식 강화형 질문 응답 및 생성 구조입니다. 단순히 프롬프트만 받아 답을 생성하는 것이 아니라, 외부 데이터 소스(문서, 웹, DB 등)로부터 정보를 검색(Retrieve) 한 후, 이를 바탕으로 정확하고 신뢰도 높은 답변을 생성(Generate) 합니다.RAG는 크게 두 구성요소로 나뉩니다:구성요소설명Retriever쿼리와 의미적으로 유사한 문서를 벡터 기반으로 검색Generator검색된 문서를 기반으로 문장을 생성 (GPT, LLaMA 등 사용) 💡 .. 2025. 7. 11. 벡터 검색 : Reranking 필요 이유 [AI를 활용해 작성되었습니다.]RAG는 검색 시간을 단축 하기 위해 Approximate Nearnest Neighbor search (ANNs) 기술을 활용하는데 이대 질문과 관계 없는 문서가 검색될 수 있기 때문에 Reranking 관련 정보를 기준으로 순위를 다시 선정해야 한다[출처] https://www.pinecone.io/learn/series/rag/rerankers/ 🔁 Reranking의 원리📌 1단계: 근사 검색 (ANN - Approximate Nearest Neighbor)IVF, HNSW, PQ 등의 인덱스는 전체 데이터 중 일부 후보 벡터만 빠르게 선택합니다.이 과정에서는 정확한 유사도/거리 계산 없이, 대략적으로 "가까울 것 같은" 벡터들을 찾습니다.예: IVF는 쿼리 벡.. 2025. 7. 11. 벡터 데이터베이스 인덱스: IVF 설명 [ chatGPT를 이용해 생성한 답변을 참고합니다. ]벡터 데이터베이스의 IVF란?벡터 데이터베이스에서 IVF (Inverted File Index, 역파일 인덱스) 는 고차원 벡터의 근사 최근접 이웃 검색 (ANN, Approximate Nearest Neighbor)을 빠르게 하기 위한 대표적인 인덱싱 기법 중 하나입니다. 특히 FAISS 같은 라이브러리에서 많이 사용됩니다.✅ IVF (Inverted File Index) 개념1. 기본 아이디어고차원 벡터들을 직접 비교하지 않고, 벡터들을 여러 개의 클러스터(버킷)로 먼저 분할해두고, 검색 시 관련된 몇 개의 클러스터에서만 비교를 수행함으로써 속도를 높이는 방식입니다. 🔧 구성 방식1. 학습 단계 (Training)전체 벡터 중 일부를 샘플링해서.. 2025. 7. 11. Embedding : Word2Vec, 임베딩 기법의 근본적인 성립 조건 [ chatGPT를 이용해 생성한 답변을 참고합니다. ]질문 : "king", "queen", "prince"는 모두 비슷한 문맥에서 등장" 하기 때문에 알 수 있다고 하나, 비슷한 문맥에서 등장을 한다는 보장이 없다면 비슷한 백터라고 하기 어려울 것 같은데 어떻게 알 수 있는가? 아주 훌륭한 질문이에요.Word2Vec, 아니 전체 임베딩 기법의 근본적인 성립 조건에 대한 본질을 짚으셨어요.당신이 지적한 대로,"비슷한 문맥에서 등장한다는 전제가 틀리면, 임베딩은 제대로 작동하지 않는다."그렇습니다. Word2Vec을 포함한 모든 분산 표현(distributed representation)은 이 전제 위에서 작동합니다.🔹 핵심 개념: Distributional Hypothesis (분포 가설)“단어의 .. 2025. 7. 10. 이전 1 다음