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)

ํด๋” ๊ฐœ์š”

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/faq FAQ 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 ์Šคํ‚ค๋งˆ, ์šด์˜ ๊ฐ€์ด๋“œ

DB