Skip to content

alwaysday4u/level2-3-nlp-finalproject-nlp-04

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

13 Commits
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“ Project ์†Œ๊ฐœ | [ Youtube ] [ ์‹œ์—ฐ ๋งํฌ ]

์ €ํฌ ์•ˆ๋…• JOBits ์„œ๋น„์Šค๋Š” IT ์ง๊ตฐ์˜ ๊ฐœ๋ฐœ์ž ์ทจ์—… ์ค€๋น„์ƒ์„ ๋•๊ธฐ ์œ„ํ•ด ํƒ„์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ƒ ๋ฉด์ ‘ ์งˆ๋ฌธ ์ƒ์„ฑ, ๋ชจ์˜๋ฉด์ ‘ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์‹ค์ œ ๋ฉด์ ‘์— ๊ฐ€๊นŒ์šฐ๋ฉด์„œ ๋” ๊ตฌ์ฒด์ ์ธ ์งˆ๋ฌธ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ”ผ๋“œ๋ฐฑ๊ณผ ํ•จ๊ป˜ ์‹ค์ œ ๋ฉด์ ‘์—์„œ ์ข€ ๋” ๊ฐœ์„ ๋œ ๋‹ต๋ณ€์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐฉํ–ฅ์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ‘€ย Back-ground

์ทจ์—…์‹œ์žฅ์—์„œ์˜ ๊ฒฝ์Ÿ๋ ฅ์„ ํ‚ค์šฐ๊ธฐ ์œ„ํ•ด AI๋ฅผ ํ™œ์šฉํ•ด ๋ฉด์ ‘ ์ค€๋น„๋ฅผ ๋„์™€์ฃผ๋Š” ์„œ๋น„์Šค๋“ค์ด ๋“ฑ์žฅํ•˜๊ณ  ์žˆ์ง€๋งŒ ๊ธฐ์กด ์„œ๋น„์Šค๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ์ ๋“ค์ด ์กด์žฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ €ํฌ ์•ˆ๋…• ์ž๋น„์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ธฐ์กด ์„œ๋น„์Šค๋“ค์˜ ๋ฌธ์ œ์ ์„ ๋ณด์™„ํ•˜์—ฌ ์‹ค์ œ ๋ฉด์ ‘ ํ™˜๊ฒฝ์— ์‚ฌ์šฉ์ž๊ฐ€ ์ต์ˆ™ํ•ด์ง€๋Š” ๋ฐ์— ๋„์›€์ด ๋˜๊ณ ์žํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์กด ์„œ๋น„์Šค๋“ค๊ณผ์˜ ์ฐจ๋ณ„์ 

  1. ์‚ฌ์šฉ์ž์˜ ์ด๋ ฅ์„œ์™€ ์ง€์› ํšŒ์‚ฌ์˜ ์ฑ„์šฉ๊ณต๊ณ ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„, ๊ฐœ์ธ ๋งž์ถคํ™” ์งˆ๋ฌธ์„ ์ œ์‹œ
  2. ์‹ค์ œ ๋ฉด์ ‘์—์„œ ์ถ”๊ฐ€ ์งˆ๋ฌธ์ด ๋‚˜์˜ค๋Š” ํฌ์ธํŠธ๋ฅผ ์‚ด๋ฆฐ, ๊ผฌ๋ฆฌ ์งˆ๋ฌธ ์ œ์‹œ
  3. ๊ฐœ๋ฐœ์ž ๊ธฐ์ˆ  ๋ฉด์ ‘ ์— ๋„์›€์„ ์ฃผ๋Š” ํŠนํ™”๋œ ์„œ๋น„์Šค
  4. LLM Generation๊ณผ ์ž์ฒด ๋ฐ์ดํ„ฐ์…‹ Retriever ๋ชจ๋ธ์„ ํ•จ๊ป˜ ํ™œ์šฉํ•œ ํ™˜๊ฐ ์ถ•์†Œ ๋ฐฉ์•ˆ

๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ Team & Members ์†Œ๊ฐœ

๐Ÿค–ย Team ์†Œ๊ฐœ

๊ฐœ์ธ์˜ ์„ฑ์žฅ๊ณผ ํŒ€์˜ ์กฐํ™”๋ฅผ ์ถ”๊ตฌํ•˜๋Š” ํŒ€, ์•ˆ๋…• ์ž๋น„์Šค์ž…๋‹ˆ๋‹ค! ๊ฐœ์ธ์˜ ์„ฑ์žฅ == ํŒ€์˜ ์„ฑ์žฅ์ด๋ผ๋Š” ๋งˆ์ธ๋“œ๋กœ ์ž˜ ๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ํ•จ๊ป˜ ์•Œ๋ ค์ฃผ๊ณ  ๋ฐฐ์›Œ๊ฐ€๋ฉด์„œ ์„ฑ์žฅํ•ด์™”์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐฐ์šด ๊ฒƒ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž์‹ ์˜ ์—ญ๋Ÿ‰์„ ํŒ€์—์„œ ์กฐํ™”๋กญ๊ฒŒ ๋…น์—ฌ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ๋ฏฟ์–ด์ฃผ๊ณ  ์‘์›ํ•ด์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’๐Ÿปโ€โ™‚๏ธ Members

๊ตฌํฌ์ฐฌ ๊น€๋ฏผ์„ ์†์œ ๋ฆผ ์˜คํƒœ์—ฐ ์ด์ƒ์ˆ˜ ์ตœ์˜ˆ์ง„

๐Ÿ’๐Ÿปโ€โ™€๏ธย ์—ญํ•  ์†Œ๊ฐœ

์ด๋ฆ„ ์—ญํ• 
๊ตฌํฌ์ฐฌ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ํ™˜๊ฒฝ ์„ค์ •(Docker-compose), Steamlit, FastAPI๋ฅผ ํ†ตํ•œ MongoDB CRUD, ์ƒ์„ฑํ˜• ๋ชจ๋ธ๋กœ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ๊ฒ€์ˆ˜๋กœ ๋ฐ์ดํ„ฐ์…‹ ๊ตฌ์ถ•
๊น€๋ฏผ์„ย  Back-End ๊ฐœ๋ฐœ, Streamlit , FastAPI ์„ ํ†ตํ•œ ์นด์นด์˜ค ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ, ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹  ๋ฐ ํŽ˜์ด์ง€ ํ†ต์‹  ๊ตฌํ˜„, Retriever ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ ํƒ์ƒ‰, ๋ฉด์ ‘ ์งˆ๋ฌธ ๋ฐ์ดํ„ฐ์…‹ ๊ตฌ์ถ• ๋ฐ ๊ฒ€์ˆ˜
์†์œ ๋ฆผย  Rule-Based ๋ชจ๋ธ ๊ตฌํ˜„, ๋ฉด์ ‘ ์งˆ๋ฌธ ๋ฐ์ดํ„ฐ์…‹ ๊ตฌ์กฐ๋„ ๊ตฌ์ถ•, ๋ฐ์ดํ„ฐ์…‹ ์ถ”๊ฐ€ ์ˆ˜์ง‘/์ตœ์ข… ๊ฒ€์ˆ˜, FastAPI๋ฅผ ํ†ตํ•œ MongoDB CRUD, ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ํ™˜๊ฒฝ ์„ค์ •(Docker-compose)ย 
์˜คํƒœ์—ฐย  LLM , LangChain ์„ ํ™œ์šฉํ•œ ๋ฉด์ ‘์งˆ๋ฌธ Generation ๋ชจ๋ธ ๊ตฌํ˜„, Retriever ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„(FAISS, Reranker), Streamlit ์„ ์ด์šฉํ•œ Front-End ๊ฐœ๋ฐœ
์ด์ƒ์ˆ˜ย  Streamlit ์„ ์ด์šฉํ•œ Front-End ๊ฐœ๋ฐœ, Retriever ๋ชจ๋ธ(DPR) ๊ตฌํ˜„, LangChain ์„ ํ™œ์šฉํ•œ ๋ฉด์ ‘์งˆ๋ฌธ Generation ๋ชจ๋ธ ๊ตฌํ˜„, ๋ฉด์ ‘ ์งˆ๋ฌธ ๋ฐ์ดํ„ฐ์…‹ ๊ตฌ์ถ•(LLM ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ์ฆ๊ฐ•)ย 
์ตœ์˜ˆ์ง„ย  Project Manager, ํ”„๋กœ์ ํŠธ ๊ธฐํš ์ œ์•ˆ ์ง„ํ–‰, Streamlit ์„ ์ด์šฉํ•œ Front-End ๊ฐœ๋ฐœ, LLM ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง, ๋ฉด์ ‘ ์งˆ๋ฌธ ๋ฐ์ดํ„ฐ์…‹ ๊ตฌ์ถ• ๋ฐ ๊ฒ€์ˆ˜ย 

๐Ÿ“†ย Project Timeline

ํƒ€์ž„๋ผ์ธ

๐Ÿง ย Product-Serving Architecture

ํ”„๋กœ์ ํŠธ๋Š” Streamlit๊ณผ FastAPI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ๋ฅผ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” Streamlit์„ ํ†ตํ•ด ์งˆ๋ฌธ ์ƒ์„ฑ ๋ฐ ๋ชจ์˜ ๋ฉด์ ‘์„ ์ง„ํ–‰ํ•˜๋ฉฐ, Kakao OAuth๋ฅผ ํ†ตํ•ด ๋กœ๊ทธ์ธํ•˜๊ณ  MongoDB๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ํŽธ๋ฆฌํ•˜๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Š Model

๐Ÿ‘€ย Overview

์‚ฌ์šฉ์ž๊ฐ€ JD์™€ ์ด๋ ฅ์„œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด Retrieval Model๊ณผ Generation Model ๋‘ ๊ฐ€์ง€๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Generation ๋ชจ๋ธ์—์„œ๋Š” ํ”„๋กœ์ ํŠธ์™€ ๊ด€๋ จ๋œ ์งˆ๋ฌธ์„ ์ƒ์„ฑํ•˜๋ฉฐ, Retrieval ๋ชจ๋ธ์€ Rule-based ๋ชจ๋ธ๊ณผ Semantic Search๋กœ ๊ตฌ์„ฑ๋˜์–ด ๊ธฐ์ดˆ ๊ธฐ์ˆ ๋ฉด์ ‘ ์งˆ๋ฌธ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์˜ˆ์ƒ ๋ฉด์ ‘ ์งˆ๋ฌธ N๊ฐœ๊ฐ€ ์„ ์ •๋˜๋ฉฐ, ๋ชจ์˜๋ฉด์ ‘ ์„œ๋น„์Šค์™€ ๋ฉด์ ‘์˜ˆ์ƒ ์งˆ๋ฌธ ์ƒ์„ฑ ์„œ๋น„์Šค 2๊ฐ€์ง€๋กœ ์„œ๋น„์Šค๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

img (3) img (1)

1๏ธโƒฃ Retriever Model

์ง์ ‘ ๊ตฌ์ถ•ํ•œ ์‹ค์ œ ๊ธฐ์ˆ ๋ฉด์ ‘ ๋ฐ์ดํ„ฐ์…‹์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ธฐ์ˆ ๋ฉด์ ‘ ์งˆ๋ฌธ์„ ์ถ”์ถœ

  • Semantic Search img (7)

    1. [FAISS] ๊ธฐ์ˆ ๋ฉด์ ‘ ์งˆ๋ฌธ ๋ฐ์ดํ„ฐ์…‹ ์ค‘ JD์™€ ๊ด€๋ จ์„ฑ ๋†’์€ ํ›„๋ณด๊ตฐ n*k๊ฐœ ์งˆ๋ฌธ ๊ฒ€์ƒ‰
    2. [๏ปฟReranker] ๊ฒ€์ƒ‰๋œ ๋ฉด์ ‘ ์งˆ๋ฌธ๋“ค ํ›„๋ณด๊ตฐ์— ๋Œ€ํ•ด reranking๋ฅผ ํ†ตํ•ด JD ์ „์ฒด์™€์˜ ๊ด€๋ จ๋„ ์žˆ๋Š” k๊ฐœ์˜ ์งˆ๋ฌธ ์ถ”์ถœ
  • Rule-Based ๋ฐฉ์‹ img (8)

    • ์ฑ„์šฉ ๊ณต๊ณ  ๋ฐ ์ด๋ ฅ์„œ์— ํŠน์ • ํ‚ค์›Œ๋“œ๊ฐ€ ๋“ฑ์žฅํ•  ๊ฒฝ์šฐ, ํ•ด๋‹น ํ‚ค์›Œ๋“œ์™€ ๊ด€๋ จ๋œ ์งˆ๋ฌธ์„ ์ถ”์ถœ
    • ์—ฐ๊ด€์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๊ทœ์น™ ์ถ”๊ฐ€

    ๐Ÿ’ฟ Data

img (9)

  • 900๊ฐœ ์ด์ƒ์˜ ๋ฉด์ ‘ ์งˆ๋ฌธ ๋ฐ์ดํ„ฐ์…‹์„ ์ง์ ‘ ์Šคํฌ๋žฉํ•œ ํ›„ ๊ฒ€์ˆ˜ํ•˜์—ฌ ๋ฐ์ดํ„ฐ์…‹์„ ๊ตฌ์ถ•, ์ง๊ตฐ์˜ ๊ฒฝ์šฐ AI, ๋ฐฑ์—”๋“œ, ํ”„๋ก ํŠธ์—”๋“œ, CS ์ง€์‹ ๊ด€๋ จ ์งˆ๋ฌธ์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘
  • ๋˜ํ•œ, IT Tech ์ง๊ตฐ์˜ ์ฑ„์šฉ ๊ณต๊ณ ๋ฅผ ํฌ๋กค๋งํ•˜์—ฌ ์–ป์€ ๋ฐ์ดํ„ฐ์—์„œ, ์ง๋ฌด์™€ ๊ด€๋ จ๋œ ์ฃผ์š” ํ‚ค์›Œ๋“œ๋ฅผ ์ถ”์ถœํ•˜์—ฌ, ํ‚ค์›Œ๋“œ์™€ ๋ฉด์ ‘ ์งˆ๋ฌธ ๋ฐ์ดํ„ฐ์…‹์„ ๋งค์นญ์‹œ์ผœ ๋ฃฐ๋ฒ ์ด์Šค๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ Retriever์— ํ™œ์šฉ

2๏ธโƒฃ Generation Model

  • ํ”„๋กœ์ ํŠธ ๊ด€๋ จ ์งˆ๋ฌธ ์ƒ์„ฑ, ๊ผฌ๋ฆฌ์งˆ๋ฌธ, ํ”ผ๋“œ๋ฐฑ , ํžŒํŠธ ์ œ๊ณต
  • OpenAI์˜ ChatGPT APIํ™œ์šฉ
  • Langchain์„ ์ด์šฉํ•˜์—ฌ ์•„ํ‚คํ…์ณ ๊ตฌ์ถ•
  • Prompt Engineering ํ™œ์šฉ

โœ…ย ์˜ˆ์ƒ ๋ฉด์ ‘ ์งˆ๋ฌธ ์ƒ์„ฑ

img (4)

3๋‹จ๊ณ„์˜ ์ฒด์ธ์„ ํ†ตํ•ด ๋ฉด์ ‘ ์งˆ๋ฌธ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. Chain1,2์—์„œ๋Š” Job Description๊ณผ ์ด๋ ฅ์„œ์—์„œ ์ฃผ์š” ๋‚ด์šฉ์„ ์ถ”์ถœํ•ด์˜ค๋ฉฐ, ์ด๋ฅผ ํ™œ์šฉํ•ด ์˜ˆ์ƒ ๋ฉด์ ‘ ์งˆ๋ฌธ์„ ์ƒ์„ฑํ•˜๋Š” Chain3๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

โœ…ย  ๋ชจ์˜๋ฉด์ ‘ ์„œ๋น„์Šค

img (5)

Langchain์˜ memory ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด ์ด์ „ ๋Œ€์งˆ๋ฌธ๊ณผ ๋ฉด์ ‘์ž์˜ ๋‹ต๋ณ€์„ ๊ธฐ์–ตํ•˜์—ฌ ๊ผฌ๋ฆฌ์งˆ๋ฌธ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

โœ…ย ์˜ˆ์ƒ ๋ฉด์ ‘ ์งˆ๋ฌธ ์ƒ์„ฑ-ํ”ผ๋“œ๋ฐฑ ์„œ๋น„์Šค

img (10)

๐Ÿ“Šํ‰๊ฐ€์ง€ํ‘œ

  • ์ƒ์„ฑํ˜• ๋ชจ๋ธ ํŠน์„ฑ ์ƒ ์ •๋Ÿ‰์  ์ง€ํ‘œ ์‚ฌ์šฉ์ด ์–ด๋ ค์›Œ, ํœด๋จผ ํ”ผ๋“œ๋ฐฑ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ์˜ˆ์ƒ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ํ‰๊ฐ€๋ฅผ ํ†ตํ•ด ๋ชจ๋ธ ํ‰๊ฐ€๋ฅผ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ์œ ์‚ฌ ์„œ๋น„์Šค 3๊ฐœ์™€ ์ €ํฌ ํ”„๋กœ์ ํŠธ์˜ ์˜ˆ์ƒ ๋ฉด์ ‘ ์งˆ๋ฌธ์„ ๋ธ”๋ผ์ธ๋“œ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณตํ•œ ๋’ค, ์„œ๋น„์Šค์—์„œ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋Š” ๋‹ค์Œ ์ง€ํ‘œ(metric)์— ๋Œ€ํ•˜์—ฌ ํ‰๊ฐ€๋ฅผ ์š”์ฒญํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ๊ทธ ๊ฒฐ๊ณผ, ์ „๋ฐ˜์ ์ธ ํ‰๊ฐ€์—์„œ ์ €ํฌ ์•ˆ๋…•์ž๋น„์Šค ํŒ€์˜ ์ƒ์„ฑ ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ€์žฅ ์ข‹์€ ํ‰๊ฐ€๋ฅผ ๋ฐ›์€ ์ ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. image

About

level2-3-nlp-finalproject-nlp-04 created by GitHub Classroom

Resources

Stars

Watchers

Forks

Packages

No packages published