โœจ From vibe coding to vibe deployment. UBOS MCP turns ideas into infra with one message.

Learn more

RAG API

์ด ํ”„๋กœ์ ํŠธ๋Š” ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ์งˆ์˜์‘๋‹ต ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•œ FastAPI ๊ธฐ๋ฐ˜์˜ API ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ

  1. ๋ฌธ์„œ ์—…๋กœ๋“œ ๋ฐ ๋ฒกํ„ฐ ์Šคํ† ์–ด ์ €์žฅ

    • PDF ๋ฐ CSV ํŒŒ์ผ ์ง€์›
    • ๋ฌธ์„œ ์ž๋™ ๋ถ„ํ•  ๋ฐ ์ž„๋ฒ ๋”ฉ
    • Chroma ๋ฒกํ„ฐ ์Šคํ† ์–ด์— ์ €์žฅ
  2. ๋ฌธ์„œ ๊ฒ€์ƒ‰

    • ์ž์—ฐ์–ด ์ฟผ๋ฆฌ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰
    • ์œ ์‚ฌ๋„ ๊ธฐ๋ฐ˜ ๋ฌธ์„œ ๊ฒ€์ƒ‰

์„ค์น˜ ๋ฐฉ๋ฒ•

  1. ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜:
pip install -r requirements.txt
  1. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •:
export OPENAI_API_KEY="your-api-key"

์‹คํ–‰ ๋ฐฉ๋ฒ•

python main.py

์„œ๋ฒ„๊ฐ€ http://localhost:8000 ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

API ์—”๋“œํฌ์ธํŠธ

  1. ๋ฌธ์„œ ์—…๋กœ๋“œ

    • POST /upload
    • multipart/form-data ํ˜•์‹์œผ๋กœ ํŒŒ์ผ ์—…๋กœ๋“œ
    • ์ง€์› ํ˜•์‹: PDF, CSV
    • ํŒŒ๋ผ๋ฏธํ„ฐ:
      • files: ์—…๋กœ๋“œํ•  ํŒŒ์ผ ๋ชฉ๋ก (ํ•„์ˆ˜)
      • vector_store_dir: ๋ฒกํ„ฐ ์Šคํ† ์–ด๋ฅผ ์ €์žฅํ•  ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ (์„ ํƒ, ๊ธฐ๋ณธ๊ฐ’: โ€œvector_storeโ€)
  2. ๋ฌธ์„œ ๊ฒ€์ƒ‰

    • POST /query
    • form-data ํ˜•์‹์œผ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ ์ „๋‹ฌ
    • ํŒŒ๋ผ๋ฏธํ„ฐ:
      • query: ๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ (ํ•„์ˆ˜)
      • vector_store_dir: ๋ฒกํ„ฐ ์Šคํ† ์–ด ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ (์„ ํƒ, ๊ธฐ๋ณธ๊ฐ’: โ€œvector_storeโ€)
      • k: ๊ฒ€์ƒ‰ํ•  ๋ฌธ์„œ ์ˆ˜ (์„ ํƒ, ๊ธฐ๋ณธ๊ฐ’: 2)

API ๋ฌธ์„œ

FastAPI์˜ ์ž๋™ ์ƒ์„ฑ ๋ฌธ์„œ๋Š” ๋‹ค์Œ URL์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • http://localhost:8000/docs
  • http://localhost:8000/redoc

๋ฒกํ„ฐ ์Šคํ† ์–ด ์ด์ „

๋ฒกํ„ฐ ์Šคํ† ์–ด์— ์ €์žฅ๋œ ํŒŒ์ผ์„ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ ์žฌ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค:

  1. ์›ํ•˜๋Š” ๋ฒกํ„ฐ ์Šคํ† ์–ด ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์˜ ๋™์ผํ•œ ๊ฒฝ๋กœ๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  2. ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ๋‹ค์Œ ํŒจํ‚ค์ง€๋“ค์ด ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
    • langchain-chroma
    • langchain-openai
    • ๊ธฐํƒ€ ํ•„์š”ํ•œ ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋“ค
  3. ๋™์ผํ•œ ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ(OpenAIEmbeddings)์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  4. ํ•„์š”ํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜(์˜ˆ: OpenAI API ํ‚ค)๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฒกํ„ฐ ์Šคํ† ์–ด๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋กœ ์ด์ „ํ•  ๋•Œ๋Š” ๋‹จ์ˆœํžˆ ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฌธ์„œ์˜ ์ž„๋ฒ ๋”ฉ๊ณผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ๋ณด์กด๋˜์–ด ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ๋ฒกํ„ฐ ์Šคํ† ์–ด ์‚ฌ์šฉํ•˜๊ธฐ

์ด ํ”„๋กœ์ ํŠธ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฒกํ„ฐ ์Šคํ† ์–ด๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ฒกํ„ฐ ์Šคํ† ์–ด๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋˜๋ฉฐ, API ํ˜ธ์ถœ ์‹œ vector_store_dir ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ๋ฒกํ„ฐ ์Šคํ† ์–ด๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋‚˜ ๋ฌธ์„œ ์„ธํŠธ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ๋ฒกํ„ฐ ์Šคํ† ์–ด๋ฅผ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

project1_docs -> vector_store_project1
project2_docs -> vector_store_project2
research_papers -> vector_store_research

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐ ๋ฌธ์„œ ์„ธํŠธ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Featured Templates

View More

Start your free trial

Build your solution today. No credit card required.

Sign In

Register

Reset Password

Please enter your username or email address, you will receive a link to create a new password via email.