반응형
RAG 시스템의 핵심, 검색기(Retriever)란?
검색기(Retriever)는 RAG(Retrieval-Augmented Generation) 시스템에서 5번째 단계에 해당하며, 사용자의 질문과 관련된 정보를 벡터 데이터베이스에서 찾아주는 역할을 합니다. 이 단계의 성능은 전체 시스템의 정확도와 응답 속도에 직접적인 영향을 미칩니다.
검색기의 필요성
- 정확도 향상: 사용자 질문과 높은 관련도를 가진 문서를 선택해, 보다 정밀한 답변을 생성합니다.
- 응답 속도 개선: 효율적인 검색 알고리즘으로 빠르게 문서를 탐색하여 전체 시스템 응답 시간을 줄입니다.
- 시스템 최적화: 관련된 문서만 선택해 불필요한 연산과 자원 낭비를 줄입니다.
검색기의 동작 방식
- 질문의 벡터화: 질문을 임베딩 기법으로 벡터화
- 유사도 비교: 저장된 문서 벡터와 질의 벡터 간 유사도를 계산 (Cosine Similarity, MMR 등)
- 상위 문서 선정: 가장 유사한 문서 N개를 선택
- 문서 정보 전달: 선택된 문서의 내용과 메타데이터를 다음 단계로 전달
Sparse Retriever vs Dense Retriever
Sparse Retriever
전통적인 정보 검색 기법(TF-IDF, BM25)을 사용해 키워드 기반의 벡터로 문서와 쿼리를 표현합니다.
- 계산 비용이 낮고 구현이 간단함
- 의미 파악보다는 키워드 일치 여부에 의존
Dense Retriever
딥러닝 임베딩을 통해 문서와 쿼리를 고차원 벡터로 표현하여, 의미 기반 검색이 가능합니다.
- 문맥과 의미를 더 깊이 파악
- 키워드 일치하지 않아도 관련 문서를 검색 가능
- 복잡한 쿼리에 더 적합
Dense & Sparse Retriever 코드 예시 (LangChain 기반)
# Dense Retriever
from langchain_community.vectorstores import FAISS
vectorstore = FAISS.from_documents(documents=split_documents, embedding=embeddings)
faiss_retriever = vectorstore.as_retriever()
# Sparse Retriever
from langchain_community.retrievers import BM25Retriever
bm25_retriever = BM25Retriever.from_documents(split_documents)
참고 자료
01. 벡터스토어 기반 검색기(VectorStore-backed Retriever)
.custom { background-color: #008d8d; color: white; padding: 0.25em 0.5…
wikidocs.net
How-to guides | 🦜️🔗 LangChain
Here you’ll find answers to “How do I….?” types of questions.
python.langchain.com
출처 : 패스트캠퍼스 테디노트
https://fastcampus.co.kr/data_online_teddy?utm_source=google&utm_medium=cpc&utm_campaign=fassker
728x90
반응형
'AI > RAG' 카테고리의 다른 글
임베딩(Embeddings)이란 무엇인가요? (1) | 2025.05.02 |
---|---|
RAG에서 텍스트 분할(Text Splitting)이 중요한 이유 (1) | 2025.05.02 |
RAG 시스템의 핵심 단계: 텍스트 분할(Text Splitter)이란? (0) | 2025.04.01 |
RAG(Retrieval Augmented Generation)를 사용해야 하는 이유와 장점 (0) | 2025.03.28 |