1. RAG의 기초
RAG(Retrieval Augmented Generation,검색 증강 생성): 환각 증상 해결을 위해 고안
LLM에게 어떤 질문을 할 때, 이에 힌트가 될만한 문장을 함께 넣어 줌으로써, 환각 현상 방지
RAG는 문서를 숫자로 변환하여 저장하는 인덱싱, 검색하고 답변을 생성하는 검색/생성 두가지 구조로 나뉜다.
2. RAG 고급 기법
2.1. 다중 재정렬, MultiQueryRetriever
=사용자 질문의 의도를 LLM이 이해하여 이를 여러 질문으로 재생성
2.2 컨텍스트 재정렬, Long-Context Reorder
LLM의 컨텍스트 사이즈가 늘어나며, 긴 입력이 가능해졌지만 중간 문서는 잘 찾지 못하는 문제가 있다.
문장의 앞, 뒤에 따라서도 정확도(Accuracy)가 달라진다.
2.3.맥락압축
유사하지 않은 문장들은 제거하여 LLM에게 전달하여, 사용자 질문에 의도한 답변을 얻어낸다.
2.4. 가상 문서로 유사 문서 탐색
질문은 의문문이고, 벡터DB에 저장된건 평문이다. (생일 휴가는 00일이다.) 이로 인해 사용자의 질문과 유사도가 높게 나오지 않는다. 따라서 사용자의 질문에 따라 가상의 답변을 작성하여 이 문장들과 벡터 DB의 문장들을 비교함으로써 LLM의 답변을 잘 갖고 오도록한다.
3. FastAPI 기초와 RESTful API 설계
3.1. Rest API
웹 서비스에서 자원을 요청하고, HTTP 메서드를 활용해 자원에 대한 행동을 표현하는 표준 인터페이스
3.2. FAST API
FAST API는 파이썬의 API를 빌드하기 위한 웹 프레임워크이며, NodeJS와 GO와 대등할 정도로 성능이 매우 높다. 현재로서는 사용가능한 파이썬 프레임 워크중에 가장 빠르다.
FastAPI
FastAPI framework, high performance, easy to learn, fast to code, ready for production
fastapi.tiangolo.com
3.2. Uvicorn
FastAPI는 Python으로 작성된 고성능 웹 프레임워크로, ASGI(Application Server Gateway Interface)를 사용합니다. FastAPI는 자체적으로 서버를 실행하는 기능이 없기 때문에, ASGI 서버를 실행시킬 수 있는 도구가 필요하다. 이때 사용하는 대표적인 도구가 바로 Uvicorn이다.
3.2.2. FastAPI는 ASGI 표준을 따르므로 ASGI 서버가 필요
3.2.2. uvloop(이벤트 루프)와 httptools(HTTP 프로토콜 구현) 같은 고성능 라이브러리를 사용하여 빠른 속도를 제공
3.2.3. FastAPI의 비동기 기능을 활용하려면 비동기 I/O를 지원하는 서버가 필요합니다. Uvicorn은 이를 완벽히 지원
3.2.4. Uvicorn을 사용하면 FastAPI 애플리케이션을 손쉽게 실행할 수 있습니다. 명령어 하나로 개발 서버를 실행하고, 프로덕션 환경에서도 배포가 용이.
'Chatbot 프로젝트 > RAG' 카테고리의 다른 글
12. Streamlit을 활용한 RAG 챗봇 구현 (0) | 2024.11.26 |
---|---|
1. RAG 기초와 파이프라인 (7) | 2024.10.31 |