Amazon Bedrock 으로 RAG(retrieval augmented generation) Chatbot을 제작한 프로젝트입니다. 본 프로젝트를 이용해서 사용자는 LLM 모델을 사용해서 질문에 대한 응답을 생성할 수 있습니다. 또한 참고할 문서를 업로드 하고, 응답 생성시 참고하여 문서의 도메인 특화된 응답을 얻을 수 있습니다.
docker buildx build --no-cache --platform=linux/amd64 -t qarag .
docker tag qarag:latest [ACCOUNT ID].dkr.ecr.us-west-2.amazonaws.com/qarag:latest
docker push [ACCOUNT ID].dkr.ecr.us-west-2.amazonaws.com/qarag:latest
Amazon Bedrock을 이용해서 응답을 생성하고, Amazon OpenSearch를 이용해서 문서와 임베딩 벡터 값을 저장합니다. Frontend 와 Backend가 포함된 본 애플리케이션은 Amazon ECS에 배포되어 운영됩니다.
애플리케이션을 구성하고 있는 아키텍처에 대해 살펴보도록 하겠습니다.
- Store Document: 응답 생성시 참고할 문서를 업로드합니다.
- Delete Document: 업로드한 문서를 삭제합니다.
- Get Answer: LLM 과 업로드한 문서를 참고하여 응답을 생성합니다.
- Chatbot Interface: 사용자와 상호작용 할 수 있는 Chatbot 형태의 인터페이스를 제공합니다.
- Generator: Prompt 를 생성해서 LLM 으로 부터 응답 생성을 요청합니다.
- Retriever: Prompt 생성에 팔요한 사용자의 질문과 가장 관련이 있는 문서를 검색합니다.
- Knowledge Source: 문서를 임베딩 벡터와 함께 저장합니다.
- LLM(Large Language Model): 응답을 생성합니다.
참고할 문서를 Chunk 단위로 나누고 Embedding Vector 로 변환하여 원본과 함께 저장합니다.
저장된 문서와 Embedding Vector 를 제거합니다.
질문과 연관된 문서를 찾아서 Prompt 를 만들어서 응답을 생성하는데 사용합니다.