Skip to content

Latest commit

ย 

History

History
105 lines (81 loc) ยท 2.84 KB

File metadata and controls

105 lines (81 loc) ยท 2.84 KB

VectorRAGLLM

๋ ˆ์‹œํ”ผ ์ถ”์ฒœ ์‹œ์Šคํ…œ - ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ LLM์„ ํ™œ์šฉํ•œ RAG(Retrieval-Augmented Generation) ๊ธฐ๋ฐ˜ ๋ ˆ์‹œํ”ผ ์ถ”์ฒœ ์„œ๋น„์Šค

์‹œ์Šคํ…œ ๊ตฌ์กฐ

  • FastAPI ๊ธฐ๋ฐ˜์˜ ์›น ์„œ๋ฒ„
  • RabbitMQ๋ฅผ ํ™œ์šฉํ•œ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง€ ํ ์‹œ์Šคํ…œ
  • Pinecone ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ™œ์šฉํ•œ ๋ ˆ์‹œํ”ผ ๊ฒ€์ƒ‰
  • HuggingFace ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ(multilingual-e5-large-instruct)์„ ์‚ฌ์šฉํ•œ ํ…์ŠคํŠธ ์ž„๋ฒ ๋”ฉ
  • OpenAI GPT ๋ชจ๋ธ์„ ํ™œ์šฉํ•œ ๋ ˆ์‹œํ”ผ ์ƒ์„ฑ

์ฃผ์š” ๊ธฐ๋Šฅ

  1. ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ

    • RabbitMQ๋ฅผ ํ†ตํ•œ ๋ฉ”์‹œ์ง€ ํ ์‹œ์Šคํ…œ
    • Publisher/Subscriber ํŒจํ„ด์œผ๋กœ ๊ตฌํ˜„๋œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ
    • ์‘๋‹ต ํ๋ฅผ ํ†ตํ•œ ๊ฒฐ๊ณผ ์ „๋‹ฌ
  2. ์žฌ๋ฃŒ ๊ธฐ๋ฐ˜ ๋ ˆ์‹œํ”ผ ๊ฒ€์ƒ‰

    • ๋ฒกํ„ฐ ์œ ์‚ฌ๋„ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰ ๊ตฌํ˜„
    • ์žฌ๋ฃŒ๋ช… ์ „์ฒ˜๋ฆฌ ๋ฐ ์ •๊ทœํ™”
    • ํšจ์œจ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋™์  ๋ชจ๋ธ ๋กœ๋”ฉ/์–ธ๋กœ๋”ฉ
  3. ๋งž์ถคํ˜• ๋ ˆ์‹œํ”ผ ์ƒ์„ฑ

    • ๊ฒ€์ƒ‰๋œ ๋ ˆ์‹œํ”ผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ LLM์ด ์ƒํ™ฉ์— ๋งž๋Š” ์ƒˆ๋กœ์šด ๋ ˆ์‹œํ”ผ ์ƒ์„ฑ
    • ๊ตฌ์กฐํ™”๋œ ์‘๋‹ต ํฌ๋งท (Pydantic ๋ชจ๋ธ ํ™œ์šฉ)
    • ์ƒ์„ธํ•œ ์กฐ๋ฆฌ ๋ฐฉ๋ฒ•๊ณผ ์žฌ๋ฃŒ ์ •๋ณด ์ œ๊ณต

์‹œ์Šคํ…œ ํŠน์ง•

  • ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™”

    • ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์˜ ํšจ์œจ์ ์ธ ๊ด€๋ฆฌ
    • ์ž๋™ ๋ฆฌ์†Œ์Šค ์ •๋ฆฌ ์‹œ์Šคํ…œ
    • GC๋ฅผ ํ†ตํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ
  • ๊ฒฌ๊ณ ํ•œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ

    • ์ปค์Šคํ…€ ์˜ˆ์™ธ ํด๋ž˜์Šค๋ฅผ ํ†ตํ•œ ์ฒด๊ณ„์ ์ธ ์—๋Ÿฌ ๊ด€๋ฆฌ
    • ์ƒ์„ธํ•œ ๋กœ๊น… ์‹œ์Šคํ…œ
    • ์šฐ์•„ํ•œ ์ข…๋ฃŒ ์ฒ˜๋ฆฌ
  • ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด

    • ๋ฆฌ์†Œ์Šค ํšจ์œจ์  ์‚ฌ์šฉ์„ ์œ„ํ•œ ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค ๊ด€๋ฆฌ
    • ์Šค๋ ˆ๋“œ ์„ธ์ดํ”„ํ•œ ๊ตฌํ˜„

์„ค์น˜ ๋ฐ ์‹คํ–‰

ํ™˜๊ฒฝ ์„ค์ •

  1. ํ•„์š”ํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ • (.env ํŒŒ์ผ)
RECIPE_DB_API_KEY=your_recipe_db_api_key
PINECONE_API_KEY=your_pinecone_api_key
PINECONE_HOST_URL=your_pinecone_host_url
OPENAI_API_KEY=your_openai_api_key
RABBITMQ_HOST=your_rabbitmq_host

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

  1. ์˜์กด์„ฑ ์„ค์น˜
pip install -r requirements.txt
  1. RabbitMQ ์„œ๋ฒ„ ์‹คํ–‰
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
  1. ์„œ๋ฒ„ ์‹คํ–‰
uvicorn app.main:app --reload

๊ธฐ์ˆ  ์Šคํƒ

  • FastAPI
  • RabbitMQ
  • Pinecone
  • LangChain
  • HuggingFace Transformers
  • OpenAI GPT
  • Pydantic

๋กœ๊น… ์‹œ์Šคํ…œ

  • ์ƒ์„ธํ•œ ๋กœ๊ทธ ๋ ˆ๋ฒจ ๊ด€๋ฆฌ
  • ๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ ํฌ๋งท
  • ๊ฐ ์„œ๋น„์Šค ๋ณ„ ๋…๋ฆฝ์ ์ธ ๋กœ๊ฑฐ

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

app/
โ”œโ”€โ”€ core/           # ํ•ต์‹ฌ ์„ค์ • ๋ฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ
โ”œโ”€โ”€ repositorie/    # ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ จ ์ฝ”๋“œ
โ”œโ”€โ”€ service/        # ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง
โ”‚   โ”œโ”€โ”€ listen/     # RabbitMQ ๋ฆฌ์Šค๋„ˆ
โ”‚   โ”œโ”€โ”€ publish/    # RabbitMQ ํผ๋ธ”๋ฆฌ์…”
โ”‚   โ”œโ”€โ”€ search/     # ๊ฒ€์ƒ‰ ์„œ๋น„์Šค
โ”‚   โ”œโ”€โ”€ llm/        # LLM ๊ด€๋ จ ์„œ๋น„์Šค
โ”‚   โ””โ”€โ”€ preprocess/ # ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ
โ””โ”€โ”€ main.py         # ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—”ํŠธ๋ฆฌํฌ์ธํŠธ