// me?
const tweek: Promise<any> = Promise.resolve(
`Hi, I'm tweek โ a pretty good developer๐`
).then(checkMyProject)
:::::
TALKIE๐ค
๋ก์ปฌ ํ๊ฒฝ์์ ๋์ํ๋ RAG LLM, ๋ฌธ์๋ฅผ ๊ฒ์ํ๊ณ ๋ต๋ณ๊น์ง ์ด์ด์ค๋๋ค.
Overview
์ฌ์ฉ์๊ฐ ๋ฌธ์๋ฅผ ์
๋ก๋ํ๋ฉด, ์์คํ
์ ์ด๋ฅผ ์๋ฒ ๋ฉยท์ธ๋ฑ์ฑํ์ฌ ๋ฒกํฐDB์ ์ ์ฅํฉ๋๋ค.
์ดํ ์ง๋ฌธ ์ ๊ฒ์๋ ๋งฅ๋ฝ์ ๋ฐํ์ผ๋ก LLM์ด ๋ต๋ณํฉ๋๋ค.
๋ชฉํ
- ๋จ์ ๊ธฐ๋ฅ ๊ตฌํ์ ๋์ด์ ํ/์กฐ์ง์ ์ง์ ๊ฒ์์ ๋์ฒดํ ์ ์๋ ์์ค์ผ๋ก ์ค๊ณ
- ๋น ๋ฅธ ์๋ต์ฑ๊ณผ ์ด์ ๊ฐ์์ฑ ํ๋ณด โ ํ์ ์ ์ฉ ๊ฐ๋ฅ
ํน์ง
- ์๋ํฌ์๋ ์๋ํ: ์ ๋ก๋ โ ์ธ๋ฑ์ฑ โ ๊ฒ์/์์ฑ ํ๋ฆ์ด ์ฌ์ฉ์๊ฐ ์์ํ์ง ์์๋ ๋์
- ์ด์ ์ค์ฌ ์ค๊ณ: JWT ์ธ์ฆ์ผ๋ก ์ ๊ทผ ์ ์ด, Grafana ์ฐ๋์ผ๋ก ํ ํฐ ์ฌ์ฉ๋ยท์ง์ฐ์๊ฐ ๋ชจ๋ํฐ๋ง
- ํ์ฅ์ฑ ๊ณ ๋ ค: Kafka ๊ธฐ๋ฐ ๋น๋๊ธฐ ์ฒ๋ฆฌ์ Redis ์บ์๋ก ๋์ ์์ฒญ ์ฒ๋ฆฌ ์ฑ๋ฅ ํฅ์
- ๊ฐ๋ฐ์ ์นํ์ฑ: Next.js & NestJS ๊ฒ์ดํธ์จ์ด๋ก ํ์ ์์ ์ฑ์ ํ๋ณดํ๊ณ , ๋ถํ์ํ ์์ฒญ ์ต์ํ
- ๋ก์ปฌ ์๋ฒ ๊ธฐ๋ฐ ๊ตฌํ: ์จํ๋ ๋ฏธ์คยท์ฌ๋ด๋ง ํ๊ฒฝ์์๋ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌยท์ด์ ๊ฐ๋ฅ
Architecture
TALKIE๋ ๊ฒ์ดํธ์จ์ดโ๋ฐฑ์๋โ์ํฌํ๋ก์ฐโ์คํ ๋ฆฌ์งโLLM์ผ๋ก ์ด์ด์ง๋ ๋ชจ๋ํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๊ฐ ๊ตฌ์ฑ ์์๋ ๋
๋ฆฝ์ ์ผ๋ก ๋์ํ๋ฉฐ, ๋ฉ์์ง ๋ธ๋ก์ปค์ ์บ์ ๊ณ์ธต์ ํตํด ํ์ฅ์ฑ๊ณผ ์์ ์ฑ์ ํ๋ณดํฉ๋๋ค.
ํ๋ก ํธ์๋ / ๊ฒ์ดํธ์จ์ด
- Next.js UI์ NestJS Gateway๋ก ์ฌ์ฉ์ ์์ฒญ์ ์์งํ๊ณ , GraphQL/REST ์ธํฐํ์ด์ค์ JWT ์ธ์ฆ์ ์ฒ๋ฆฌ
์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ
- FastAPI ๊ธฐ๋ฐ ์์ฒญ ์ฒ๋ฆฌ, Kafka๋ฅผ ํตํด ๋น๋๊ธฐ ์์ ์ ์์ปค๋ก ์์
์ํฌํ๋ก์ฐ & ์์ปค
- ๋ฌธ์ ์ ๋ก๋ โ ์๋ฒ ๋ฉ โ ๋ฒกํฐDB ์ธ๋ฑ์ฑ
- LangChain์ ํ์ฉํด ๋ฒกํฐ ๊ฒ์๊ณผ LLM ํธ์ถ์ ์ฒด์ธ ๋จ์๋ก ์กฐํฉ, ๋ชจ๋ ๊ฐ ์ฐ๊ฒฐ๊ณผ ์ ์ง๋ณด์๋ฅผ ๋จ์ํ
๋ฐ์ดํฐ ๊ณ์ธต
- Redis: ์บ์ฑ, ์ธ์ ๊ด๋ฆฌ ๋ฐ Streams ๊ธฐ๋ฐ ์ด๋ฒคํธ ํ์ดํ๋ผ์ธ
- Postgres: ๋ฉํ๋ฐ์ดํฐ์ ๋ํ ํ์คํ ๋ฆฌ ์ ์ฅ
- Weaviate: ๋ฒกํฐDB๋ก ๋ฌธ์ ๊ฒ์ ์ธ๋ฑ์ฑ
- MinIO: ๊ฐ์ฒด ์คํ ๋ฆฌ์ง, ์ ๋ก๋๋ ์๋ณธ ํ์ผ ๋ฐ ๋์ฉ๋ ๋ฐ์ดํฐ ๋ณด๊ด
LLM ์ฐ๊ฒฐ
- ํ๋กฌํํธ์ ๊ฒ์๋ ๋งฅ๋ฝ์ ๊ธฐ๋ฐ์ผ๋ก ๋ต๋ณ ์์ฑ
์ด์/๋ชจ๋ํฐ๋ง
- Grafana๋ก ํ ํฐ ์ฌ์ฉ๋, ์ง์ฐ ์๊ฐ, RAG ํํธ์จ ๋ชจ๋ํฐ๋ง
๐ป Frontend
Next.js, TypeScript, Zustand, Apollo
๐ก๏ธ Gateway
NestJS (GraphQL/REST), Zod, JWT
๐ง Backend/Infra
FastAPI, LangChain, Weaviate, Kafka, Redis, Postgres, Minio, Docker
Features
1. ์๋ ์๋ฒ ๋ฉ & ๋ฒกํฐ ์ธ๋ฑ์ฑ
- ํ์ผ ์ ๋ก๋ ์ ์๋์ผ๋ก ๋ฒกํฐํยท๋ฒกํฐ DB ์ธ๋ฑ์ฑ
- ์๋ณธ์ MinIO์ ์ ์ฅ, Weaviate์ ๊ฒ์ ๊ฐ๋ฅํ ํํ๋ก ๊ธฐ๋ก
2. RAG ๊ธฐ๋ฐ ์ง์ ์๋ต
- FastAPI๊ฐ ๋ฒกํฐ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ LLM์ ์ ๋ฌํ๊ณ , ๋งฅ๋ฝ ๊ธฐ๋ฐ ์๋ต์ ์์ฑ
3. ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ์๋ต (SSE + Redis Stream)
- LLM ํ ํฐ์ ์์ฐจ ์ ์กํด ๋น ๋ฅธ ์๋ต๊ณผ ์์ฐ์ค๋ฌ์ด ๋ํ ๊ฒฝํ ์ ๊ณต
4. ๋ณด์ ๋ฐ ์ด์
- JWT ๊ธฐ๋ฐ ์ธ์ฆ/์ธ๊ฐ, Grafana ์ฐ๋์ผ๋ก ์์ฒญยทํ ํฐ ์ฌ์ฉ๋ยท์ง์ฐ ์๊ฐ ๋ชจ๋ํฐ๋ง
Demo
General Search
- ๋ฒกํฐ ๊ฒ์ ์์ด ์ฟผ๋ฆฌ๋ฅผ LLM์ ์ง์ ์ ๋ฌ
- ์๋ต์ Redis์ ์บ์ฑ ํ ์์ปค๋ฅผ ํตํด DB์ ์ ์ฌ
- ์ฌ์ฉ์ ํ๋กฌํํธ ๊ธฐ๋ฐ์ผ๋ก ์ ๋ชฉ๊ณผ ํจ๊ป ์ธ์ ์์ฑ
Document Embedding
- ํ์ผ์ S3 ํ๋ฆฌ์ฌ์ธ URL๋ก ์ ๋ก๋
- ํ์ผ ์์ปค๊ฐ ์ฒญํน ์ฒ๋ฆฌ
- ์๋ฒ ๋ฉ ์์ปค๊ฐ ๋ฒกํฐํ ์ํ ํ DB์ ์ ์ฌ
RAG Search
- ์ฟผ๋ฆฌ๋ฅผ ๋ฒกํฐํํ์ฌ ๋ฒกํฐ DB์์ ์ ์ฌ ๋ฌธ์ ๊ฒ์
- ๊ฒ์๋ ๋ฌธ์์ ์ฟผ๋ฆฌ๋ฅผ ํจ๊ป LLM์ ์ ๋ฌ
- ์๋ต์ Redis์ ์บ์ฑ ํ ์์ปค๋ฅผ ํตํด DB์ ์ ์ฌ
- ์ฌ์ฉ์ ํ๋กฌํํธ ๊ธฐ๋ฐ์ผ๋ก ์ ๋ชฉ๊ณผ ํจ๊ป ์ธ์ ์์ฑ