RAG API (파일과 대화하기)
Langchain과 FastAPI를 사용하여 문서 색인 및 검색을 수행하는 Retrieval-Augmented Generation (RAG) API입니다. 이 API는 LibreChat과 통합되어 사용자가 업로드한 파일을 기반으로 문맥을 인식한 응답을 제공합니다.
RAG (Retrieval-Augmented Generation) API는 사용자가 업로드한 파일을 기반으로 문맥을 인식한 응답을 제공하기 위해 LibreChat과 통합되는 강력한 도구입니다.
LangChain, PostgresQL + PGVector 및 Python FastAPI를 활용하여 관련 문서를 인덱싱하고 검색함으로써 대화 경험을 향상시킵니다.
자세한 내용은 다음의 구성 가이드를 참조하세요: RAG API 구성
현재 이 기능은 Agents를 비롯하여 Custom Endpoints, OpenAI, Azure OpenAI, Anthropic 및 Google을 통해 사용할 수 있습니다.
OpenAI Assistants는 "Retrieval" 기능을 통해 자체적인 RAG 구현을 제공합니다. 이에 대한 자세한 내용은 여기에서 확인하세요.
OpenAI는 파일 저장과 "Retrieval" 사용 모두에 대해 요금을 부과하므로, 향후 업데이트에서 도입될 Assistants API와 함께 RAG API 사용을 구현하는 것은 여전히 유용할 것입니다.
RAG에 대해 아직 혼란스러우신가요? 아래에 제가 작성한 섹션을 읽어보세요. 일반적인 개념을 더 자세히 설명하고 유용한 영상 링크도 포함되어 있습니다.
RAG란 무엇인가요?
RAG(Retrieval-Augmented Generation, 검색 증강 생성)는 대규모 언어 모델(LLM)이 생성하는 응답의 품질과 정확성을 향상하기 위해 설계된 AI 프레임워크입니다. 이 프레임워크는 모델의 내부 정보 표현을 보완하여 외부 지식 소스를 기반으로 LLM의 응답을 생성함으로써 이를 달성합니다.
기능
- 문서 인덱싱(Document Indexing): RAG API는 사용자가 업로드한 파일을 인덱싱하여 효율적인 검색을 위한 임베딩을 생성합니다.
- Semantic Search: 사용자의 입력에 기반하여 가장 관련성 높은 정보를 찾기 위해 인덱싱된 문서에 대해 의미론적 검색을 수행합니다.
- Context-Aware Responses: 검색된 정보를 사용자의 프롬프트에 보강함으로써, API는 LibreChat이 더욱 정확하고 문맥에 맞는 응답을 생성할 수 있도록 합니다.
- 비동기 처리(Asynchronous Processing): API는 성능 및 확장성 향상을 위해 비동기 작업을 지원합니다.
- 유연한 구성: 청크 크기, 오버랩, 임베딩 모델과 같은 다양한 매개변수를 사용자 지정할 수 있습니다.
RAG의 주요 이점
- 최신 및 신뢰할 수 있는 사실에 대한 접근: RAG는 외부 지식 베이스에서 관련 사실을 검색함으로써 LLM이 가장 최신의 신뢰할 수 있는 정보에 접근할 수 있도록 보장합니다.
- 투명성 및 신뢰: 사용자는 모델의 출처에 접근할 수 있으므로, 생성된 응답의 정확성을 검증하고 시스템에 대한 신뢰를 구축할 수 있습니다.
- 데이터 유출 및 환각 감소: LLM을 검증 가능한 외부 사실 집합에 기반하게 함으로써, RAG는 모델이 민감한 데이터를 유출하거나 부정확하거나 오해의 소지가 있는 정보를 생성할 가능성을 줄여줍니다.
- 더 낮은 컴퓨팅 및 재정적 비용: RAG는 모델의 파라미터를 지속적으로 학습하고 업데이트할 필요성을 줄여주며, 기업 환경에서 LLM 기반 챗봇을 운영하는 데 드는 컴퓨팅 및 재정적 비용을 잠재적으로 낮춰줍니다.
RAG 작동 방식
RAG는 검색(retrieval)과 콘텐츠 생성(content generation)이라는 두 가지 주요 단계로 구성됩니다.
- 검색 단계(Retrieval Phase): 알고리즘이 사용자의 프롬프트나 질문과 관련된 정보 조각을 외부 지식 베이스에서 검색하고 가져옵니다. 개방형 도메인의 소비자 환경에서는 이러한 사실 정보가 인터넷에 색인된 문서에서 올 수 있습니다. 폐쇄형 도메인의 기업 환경에서는 보안과 신뢰성을 높이기 위해 일반적으로 더 제한된 소스 집합이 사용됩니다.
- 생성 단계(Generative Phase): 검색된 외부 지식은 사용자 프롬프트에 추가되어 LLM으로 전달됩니다. 그런 다음 LLM은 보강된 프롬프트와 학습 데이터의 내부 표현을 활용하여 사용자에게 맞춤화된 매력적인 답변을 합성합니다. 이 답변은 출처 링크와 함께 챗봇으로 전달될 수 있습니다.
도전 과제 및 진행 중인 연구
RAG는 현재 LLM을 최신의 검증 가능한 정보에 기반하게 하고 지속적인 재학습 및 업데이트 비용을 절감하는 가장 잘 알려진 도구 중 하나이지만, 완벽하지는 않습니다. 몇 가지 과제는 다음과 같습니다:
- 답변할 수 없는 질문 인식: LLM은 사용 가능한 정보를 바탕으로 답변할 수 없는 질문을 인식하도록 명시적으로 학습되어야 합니다. 이를 위해서는 답변 가능한 질문과 답변할 수 없는 질문에 대한 수천 개의 예시를 사용하여 파인튜닝(fine-tuning)해야 할 수도 있습니다.
- 검색 및 생성 개선: 지속적인 연구는 RAG 프로세스의 양쪽 끝에서 혁신을 이루는 데 중점을 두고 있습니다. LLM에 제공할 가장 관련성 높은 정보를 검색하는 기능을 개선하고, LLM으로부터 가장 풍부한 응답을 얻기 위해 해당 정보의 구조를 최적화하는 것입니다.
요약하자면, RAG는 LLM이 외부의 검증 가능한 지식을 기반으로 작동하도록 하여 그 능력을 향상시키는 강력한 프레임워크입니다. 이는 지속적인 모델 재학습에 드는 비용을 절감하면서도 더 정확하고 최신이며 신뢰할 수 있는 응답을 보장하도록 돕습니다. 이 분야의 연구가 진행됨에 따라, LLM 기반 대화형 AI 시스템의 품질과 효율성이 더욱 개선될 것으로 기대됩니다.
RAG에 대한 더 자세한 설명은 Youtube에 있는 IBM의 유익한 영상을 시청해 보세요:
결론
RAG API는 LibreChat에 추가된 강력한 기능으로, 사용자가 업로드한 파일을 기반으로 문맥을 인식하는 응답을 제공합니다. Langchain과 FastAPI를 활용하여 효율적인 문서 인덱싱, 검색 및 생성 기능을 제공합니다. 유연한 구성 옵션과 원활한 통합을 통해 RAG API는 LibreChat의 대화 경험을 향상시킵니다.
RAG API에 대한 자세한 정보(API endpoint, 요청/응답 형식, 고급 구성 포함)는 공식 RAG API 문서를 참조하십시오.
이 가이드는 어떤가요?