Home - bctone1/Garam_backend GitHub Wiki
Garam RAG Backend
๋ฌธ์ยทFAQ๋ฅผ ๋ฒกํฐํํ์ฌ ๋ต๋ณํ๋ FastAPI ๊ธฐ๋ฐ RAG ๋ฐฑ์๋. PostgreSQL(pgvector) + SQLAlchemy + LangChain.
๊ธฐ์ ์คํ
- Python 3.12, FastAPI, Uvicorn
- SQLAlchemy, Alembic, PostgreSQL 16 + pgvector(1536์ฐจ์)
- LangChain, PyMuPDF ๋ฑ ์ธ์ ์คํธ ํ์ดํ๋ผ์ธ
ํต์ฌ ๊ธฐ๋ฅ
- ํ์ผ ์ ๋ก๋ โ ์์ฝ/์ฒญํฌ โ ์๋ฒ ๋ฉ ์ ์ฅ โ ๋ฒกํฐ ๊ฒ์
- ์ฑ ์ธ์ /๋ฉ์์ง ๋ก๊น , ํผ๋๋ฐฑ ์์ง
- FAQ ๊ด๋ฆฌ, ์์คํ ์ค์ , ๋น ๋ฅธ ์นดํ ๊ณ ๋ฆฌ
- ๋ฌธ์ ์ ์/๋ฐฐ์ ์ด๋ ฅ ๊ด๋ฆฌ
๋ฐ์ดํฐ ๋ชจ๋ธ(TABLE)
-
๋์๋ณด๋
-
์ง์ ๋ฒ ์ด์ค ๊ด๋ฆฌ
-
AI ๋ชจ๋ธ ์ค์
-
๋ถ์ ๋ฐ ๋ณด๊ณ ์
-
์ฑ๋ด ์ด์ ์ค์
-
๋ฌธ์ ๊ด๋ฆฌ
ํด๋ ๊ฐ์
API/Endpoints/ # FastAPI ๋ผ์ฐํฐ
CORE/ # ์ค์ , ๊ณตํต ์ ํธ
CRUD/ # DB CRUD
LANGCHAIN_SERVICE/ # ์ธ๋ฑ์ฑยทQA ์ฒด์ธ
MODELS/ # SQLAlchemy ORM
SCHEMAS/ # Pydantic
SERVICE/ # app entry (main)
DATABASE/ # Alembic migrations
๋น ๋ฅธ ์์
python -m venv .venv
# Windows
. .venv/Scripts/activate
# macOS/Linux
source .venv/bin/activate
pip install -r requirements.txt
# PostgreSQL์์ pgvector ์ค์น
# CREATE EXTENSION IF NOT EXISTS vector;
# ๋ง์ด๊ทธ๋ ์ด์
alembic upgrade head
# ์คํ
uvicorn garam_backend.main:app --host 0.0.0.0 --port 5000 --reload
ํ๊ฒฝ ๋ณ์ ์์ (.env)
DATABASE_URL=postgresql+psycopg2://USER:PASS@HOST:5432/garam
OPENAI_API_KEY=...
ANTHROPIC_API_KEY=...
# ๊ธฐํ ํ๋ก๋ฐ์ด๋ ํค
.env๋ ๋ฐ๋์ ์ปค๋ฐ ์ ์ธ.
์ฃผ์ ์๋ํฌ์ธํธ(ํ๋ฆฌํฝ์ค ์์)
/api/v1/ingestion์ ๋ก๋ยท๋ถ์ยท์ถ์ถยท์คํ/api/v1/knowledge๋ฌธ์ยทํ์ด์งยท์ฒญํฌยท๋ฒกํฐ๊ฒ์/api/v1/chat์ธ์ ยท๋ฉ์์งยทํผ๋๋ฐฑ/api/v1/faqFAQ CRUD/api/v1/systemํ์๋ฌธ๊ตฌยท์ด์์๊ฐยท์นดํ ๊ณ ๋ฆฌ/api/v1/inquiry๋ฌธ์ยท๋ฐฐ์ ยท์ด๋ ฅ
Alembic ์์ฃผ ์ฐ๋ ๋ช ๋ น
alembic revision --autogenerate -m "msg"
alembic upgrade head
alembic downgrade -1
RAG ํ๋ก์ฐ
์ ๋ก๋ โ ํ์ด์ง/ํ ์คํธ ์ถ์ถ โ ์ฒญํฌ ๋ถํ โ ์๋ฒ ๋ฉ(pgvector) โ ์ง์ ์ ๋ฒกํฐ ๊ฒ์ + ์ฌ์์ฑ
์ฝ๋ ๋ฉ๋ชจ
Base๊ฒฝ๋ก:from database.base import Base- ๋ฒกํฐ ์ปฌ๋ผ:
VECTOR(1536)๊ถ์ฅ, IVFFLAT ์ธ๋ฑ์ค ์ฌ์ฉ ๊ฐ๋ฅ
ํ์ ์ ์ธ๋ถ ๋ฌธ์๋ฅผ ์ํค ํ์ ํ์ด์ง๋ก ๋ถ๋ฆฌ: ์ค์น, API ์คํ, DB ์คํค๋ง, ์ด์ ๊ฐ์ด๋