NLP

LLM with RAG

LYShin 2024. 5. 7. 19:30

본 글은 Retrieval-Augmented Generation에 대한 개념을 적용한 웹 데모 생성을 위한 베이스라인 글 입니다.

 

해당 프로젝트는 llama_cpp, milvus, gradio, docker를 사용합니다.

 

1. 구현 컨셉

 

 

구현하고자 하는 프로젝트의 컨셉입니다. 먼저, 유저는 Gradio에 접속하여 질문을 입력합니다. 질문은 BGE-M3 모델을 통해 임베딩되고, milvus DB 내부의 문서 중 가장 관련 높은 문서를 찾습니다. 이후 질문과 문서를 LLM에 입력하여 응답을 받아 유저에게 전달합니다.

 

이 과정에서 구현해야하는 3가지 서버는 gradio, milvus, llama_cpp(llama3)입니다.

 

베이스라인에서 gradio, milvus는 PC-1, llama3는 PC-2에 구축되며, 두 PC은 같은 망에 속합니다.

 

 

2. 구현 순서

 

1) milvus 서버 구축 & 데이터 적재(with milvus python sdk)

 - PC1에 docker compose로 milvus 서버 구축

 - milvus server에 collection 생성

 - 원본 텍스트를 임베딩하여 DB에 적재(with bge-m3)

 

2) llama3 서버 구축

 - PC2에 docker container 생성

 - llama-cpp 서버를 위한 가상환경 구축(with conda)

 - llama-cpp 서버 구축 및 fastapi swagger로 구동 확인

 

3) Gradio 서버 구축 & 서버 간 연결 확인

 - PC1에 docker container 생성

 - milvus, llama-cpp 서버 간 연결 확인

 - gradio 서버 구축

 

4) 데모 웹에서 결과 확인

 

 

** Window 환경에서 구축 / Docker desktop 사용