"링쳇"은 "Ring"과 "Chatbot의 합성어 입니다. "Ring"은 URL 링크가 담고 있는 문서, 챗봇 그리고 사용자를 연결한다는 것을 상징합니다. "Ring"과 "Link"의 첫 음절이 동일하여 자연스럽게 연상이 됩니다. 또한, "Ring"은 반지의 이미지를 연상시키고, 링쳇에서 제공하는 답변이 신뢰성있음을 암시합니다.
1️⃣ 3가지 지표와 함께 링크 추천
- 평점
- 첨부된 수
- 총 북마크 수
2️⃣ 맞춤화된 문서 분석
3️⃣ 답변 내용 정리
이 부분에서는 프로젝트의 핵심 구성요소에 대한 개요를 설명합니다.
각 기술 스택에 해당하는 장점, 단점 및 이 프로젝트를 위해 선택한 이유를 소개합니다.
| 기술 | 선택한 이유 | 장점 | 한계 |
|---|---|---|---|
| Docker | 개발환경의 일관성 및 빠른 배포 | 서로 다른 개발환경에서 발생하는 라이브러리 종속성 문제 해결 배포시 확장에 용이함 |
컨테이너 이미지 관리의 복잡성 docker 사용에 익숙하지 않으면 개발 시간 지연 가능성 초래 |
| FastAPI | API 개발 시 자동 문서화 기능 및 비동기 처리를 지원하기 때문에 개발 생산성이 높음. 본 프로젝트에 필수 사항들을 쉽게 충족시켜줌. |
비동기 처리 지원 효율적인 리소스 활용 Swagger 지원 Pydantic 활용으로 데이터 유효성 검사 용이 |
비동기 프로그래밍에 대한 학습이 필요. flask에 비해 커뮤니티 규모가 작음. |
| Langchain | 본 프로젝트는 기존에 가지고 있던 llm의 한계를 극복하고자 하는 기능이 포함되어 있음. in-context learning 방식을 쉽게 구현할 수 있는 프레임워크 중 하나인 langchain이 가장 대중적이고 구현이 직관적임. | 다양한 도구 지원으로 여러가지 기능 확장이 용이 직관적인 API로 개발이 비교적 쉬움 |
추상화 수준이 높아 세밀한 제어는 어려울 수 있다. 개발된지 오래되지 않은 프레임워크라 정보 습득의 어려움 그리고 잦은 버그 발생 가능성 |
| Next.js | frontend 기술 보유자의 기술 스택이었기 때문. 비교적 빠른 개발이 가능했기 때문. |
SSR, SSG 지원 검색 엔진 최적화 개선 풍부한 커뮤니티 |
데이터가 자주 변경되는 페이지에서는 SSR시 매번 서버에서 렌더링 해야 하므로 성능 저하가 발생할 수 있음. React에 대한 이해가 필요하여 진입장벽이 있음. |
| Oracle 23ai | Vector 컬럼을 지원하고, DB내 유사도 검색이 가능했기 때문에. 본 프로젝트에서는 url 추천 시 유사도 검색이 빈번할 것으로 예상되었기 때문에. | AI 모델을 DB 내에서 직접 실행이 가능함. 데이터 이동 없이 실시간 AI 분석이 가능. AI Vector Search 기능 지원. SQL Firewall 지원으로 보안 강화 |
비교적 높은 라이선스 비용 다른 DB에 비해 다루기가 까다로워 진입장벽이 있음. 참고 자료가 비교적 적음 |
| OpenAI | 모델 성능 대비 크레딧 비용이 저렴함. 충전된 크레딧을 모두 사용하면 추가 과금이 발생하지 않음. 코드 관련 답변이 Gemini에 비해 우수함 |
답변이 중간에 생략되는 문제가 덜함 비용대비 준수한 성능 |
최대 토큰량이 Gemini에 비해 적음 멀티모달 처리 능력이 Gemini에 비해 부족 |
| OCI free tier | AMD cpu 1, RAM 1GB 스펙의 VM 2개를 무료로 지원하기 때문에. | 평생 무료 과금에 대한 부담감 없음. |
서비스를 운영하기에는 턱없이 부족한 컴퓨팅 리소스이기 때문에 실제 운영 환경을 가정하려면 유료 결제가 필요함. |
시작 하기
- Github의 레포지토리를 클론합니다.
.env과.env.local파일을 추가하고 설정값을 입력합니다.- 오라클 클라우드에 접속하기 위한 wallet 폴더를 추가합니다.
- 컨테이너를 실행합니다.
Github의 레포지토리 클론
git clone https://github.com/Rimember/ringchat.git # clone.env과 .env.local 파일 추가 및 설정값을 입력
# create .env file
cd ringchat/backend
echo "# API
OPENAI_API_KEY = \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"
# oracle
DB_USER = \"USER_NAME\"
DB_PWD = \"PASSWORD\"
DB_DSN = \"DATA_SOURCE_NAME\"
DB_CONFIG_DIR = \"WALLET_FOLDER_PATH\"
DB_WALLET_LOCATION = \"WALLET_FOLDER_PATH\"
DB_WALLET_PWD = \"WALLET_PASSWORD\"" > .env# create .env.local file
cd ringchat/frontend
echo "NEXT_PUBLIC_API_URL=http://backend:8000/api/v0" > .env.local wallet 폴더를 추가
mv WALLET_FOLDER_PATH ringchat/backend 컨테이너를 실행
cd ringchat
docker compose up API 문서
아래 계신분들의 노고에 감사드립니다.
|
강동훈 🛠️ |
선경은 🛠️ |
이찬호 🛠️ |
임승원 🛠️ |
정지혁 🛠️ |




