- Retrievers는 특정 질문에 맞는 정보를 효율적으로 찾아내는 도구
- LLM이 필요로 하는 관련 데이터를 빠르게 검색해주는 역할
- 큰 데이터베이스나 여러 문서에서 적절한 답변에 필요한 정보를 추출해야 할 때 유용
LangChain의 Retrievers 주요 개념
- Retrievers의 역할:
- 사용자의 질문에 맞는 관련 정보를 데이터베이스나 문서에서 찾아 필터링하는 작업을 수행합니다. 즉, 필요한 정보만을 빠르게 검색해 모델이 처리할 수 있도록 돕습니다.
- RAG(Retrieval-Augmented Generation)과의 관계:
- RAG는 Retrieval과 Generation을 결합한 방식으로, Retrievers는 이 중 Retrieval 역할을 담당합니다. 필요한 데이터를 먼저 찾아서, 그 데이터를 바탕으로 답변을 생성하는 과정을 지원합니다.
- 동작 방식:
- Retrievers는 텍스트 데이터를 벡터로 변환하여 벡터 데이터베이스에 저장하고, 질문과 유사한 정보를 검색할 때 벡터 유사도 검색을 통해 관련 정보를 찾습니다.
- 사용자가 질문을 입력하면, Retriever가 질문의 의미와 유사한 텍스트를 벡터 공간에서 찾아 반환합니다.
- 벡터 스토어(Vector Stores)와의 통합:
- 대부분의 Retrievers는 벡터 스토어와 통합되어 동작합니다. 벡터 스토어는 텍스트를 임베딩 벡터로 저장하는 데이터베이스로, 검색할 때 질문과 유사한 임베딩을 통해 가장 관련성이 높은 문서를 반환합니다.
- 대표적인 Retriever 종류:
- BM25Retriever: 고전적인 역문서 빈도 역빈도(TF-IDF) 모델을 사용하여 텍스트 유사도를 기반으로 정보를 검색합니다.
- VectorStoreRetriever: 벡터 스토어를 활용하여 벡터 간 유사도 기반으로 데이터를 검색하는 방식. 가장 일반적이고 널리 사용되는 방식입니다.
- ElasticSearchRetriever: Elasticsearch와 통합하여 대규모 텍스트 데이터를 검색합니다.
- Retrievers의 장점:
- 효율성: 질문과 유사한 정보만 빠르게 검색하여 모델이 불필요한 데이터를 처리하지 않도록 도움.
- 정확성: 질문과 관련성 높은 정보만 제공하여 답변의 품질을 높임.
- 대용량 데이터 지원: 벡터 스토어와 결합하여 방대한 양의 데이터에서도 빠르고 정확한 검색 가능.
사용 예시
다음은 LangChain에서 VectorStoreRetriever를 사용해 문서에서 관련 정보를 검색하는 간단한 예시입니다.
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.retrievers import VectorStoreRetriever
# 문서 데이터를 벡터 스토어에 저장
texts = ["This is a document about AI.", "This document discusses machine learning.", "This is about deep learning."]
embeddings = OpenAIEmbeddings()
vector_store = FAISS.from_texts(texts, embeddings)
# VectorStoreRetriever 설정
retriever = VectorStoreRetriever(vector_store=vector_store)
# 질문에 맞는 관련 정보 검색
query = "Tell me about AI."
results = retriever.get_relevant_documents(query)
for doc in results:
print(doc.page_content)
This is a document about AI.
This document discusses machine learning.
- 위 코드에서 VectorStoreRetriever는 FAISS 벡터 스토어를 사용해 질문과 유사한 문서를 검색합니다. query와 가장 관련성이 높은 문서가 반환됩니다.
주요 활용 사례
- 질문 답변 시스템: 사용자의 질문에 맞는 문서를 검색해 답변을 제공하는 시스템에서 사용.
- 문서 요약: 대규모 데이터베이스에서 특정 주제에 대한 문서를 빠르게 찾아 요약하는 데 유용.
- 실시간 정보 제공: 최신 정보가 포함된 데이터베이스에서 검색해 최신 정보 기반의 답변 생성.
'AI ( Artificial Intelligence )' 카테고리의 다른 글
Lexical 검색과 Semantic 검색 (0) | 2025.03.30 |
---|---|
Streaming module (0) | 2024.10.31 |
Text Splitters (3) | 2024.10.25 |
Document Loader (4) | 2024.10.23 |
Retrieval-Augmented Generation (RAG) (1) | 2024.10.22 |