본문 바로가기

Programming!

간단한 RAG 를 로컬 환경에서 구성해보자.

이번에 요금제 추천을 진행해보면서 간단한 로컬 RAG를 구성해 봤는데, 가벼운 즐거움을 느꼈달까..ㅎㅎ

우선 재미가 있어서 향후에 좀 더 해보기로 했다.
- Exaone / Ollama 로컬 API 를 이용한 Model 적용. (개인적으로는 익시젠을 사용하고 싶은데.. 오픈소스가 아니다)
- Langchain4J의 History 에 Redis를 얹어서 채팅 유지하고 삭제하기.

 

이번 요금제 추천은 용량기준으로 만들어 봤는데, 기본적인 흐름은 아래와 같다.

 

 

1. 임베딩

- 먼저 요금제 전체 데이터를 특정 포맷에 맞춰 TXT 파일로 생성해둔다.

- TXT 파일을 읽어서 초기 한번 임베딩을 해둔다.  

 

2. 사용량 확인.

- 사용자가 웹에서 자신의 인터넷 사용 패턴을 자연스럽게 입력할 수 있도록 한다.

- 물론 사용자의 입력 데이터도 임베딩으로 넣어둔다.

- 사용자의 인터넷 사용패턴을 GPT 에 질의하고 한달 평균 데이터 사용량을 구하도록 한다.

 

3. 사용량으로 임베딩 데이터의 한달 총 요금제 목록 조회.

- 2번에서 나온 사용량을 기준으로 임베딩된 요금제에서 가능한 요금제 목록을 가져온다. ( 이때 메타데이터를 이용해 필터 처리 가능. )

- 조회된 요금제 목록과 사용자 한달 평균 사용량을 AI 모델에 보내 가장 적합한 요금제는 BEST, 그외 HIGH, LOW 로 타입을 지정해 결과요청을 한다.
- 3개의 데이터를 사용자에게 보여주면서 가입을 유도 한다.

 

 

시스템 구성은 Docker 를 사용하여 로컬에 구성.

- Postgresql 17 / Kotlin / Spring Boot / Langchain4j / ChatGPT 

- docker-compose.yml 확인.

- 코드는 Github

Git: https://github.com/KimHyeongi/spring-kotlin-rag

 

GitHub - KimHyeongi/spring-kotlin-rag: 간단한 로컬 RAG를 만들어보자.

간단한 로컬 RAG를 만들어보자. Contribute to KimHyeongi/spring-kotlin-rag development by creating an account on GitHub.

github.com

 

 

웹을 띄우고 확인 

http://localhost:8080