๐Ÿ’ป ํ”„๋กœ์ ํŠธ/๐ŸŽ“ RESUMAI

๐Ÿ’ป ํ”„๋กœ์ ํŠธ/๐ŸŽ“ RESUMAI

[RESUMAI] 6. ์„œ๋น„์Šค ๊ฐœ๋ฐœ ์‹œ์ž‘ - DRF ์นด์นด์˜ค ์†Œ์…œ๋กœ๊ทธ์ธ, ์ด๊ฒƒ๋งŒ ๋ณด๋ฉด ํ•œ๋ฒˆ์— ๋!!

์ง€๋‚œ๋ฒˆ๊นŒ์ง€ ๋ฐ๋ชจ๋ฅผ ๋งˆ์น˜๊ณ , ์ด์ œ ์ œ๋Œ€๋กœ RESUMAI ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ํ•ต์‹ฌ ์•„์ด๋””์–ด๋Š” ์ด์ „์— ๋ฐ๋ชจ์—์„œ ๋ณด์—ฌ์ค€ ์•„์ด๋””์–ด๋กœ, ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.๋ณธ ํ”„๋กœ์ ํŠธ๋Š” Django Rest Framework (DRF)๋กœ ๊ฐœ๋ฐœํ•˜์˜€์œผ๋ฉฐ, ํ”„๋ก ํŠธ์—”๋“œ๋Š” React๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. (๋‚˜๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ๋งŒ ๋งก์•˜๋‹ค.)๋ณธ ๊ธ€์€ DRF๋กœ ์นด์นด์˜ค ์†Œ์…œ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜๋ฉฐ ๊ฒช์—ˆ๋˜ ์–ด๋ ค์›€์„ ๋ชจ๋‘ ๋‹ด์•˜๋‹ค. ์•„๋งˆ DRF๋กœ ์ฒ˜์Œ ์†Œ์…œ๋กœ๊ทธ์ธ์„ ๊ฐœ๋ฐœํ•ด๋ณด๋ ค๋Š” ์‚ฌ๋žŒ๋“ค๋„ ๋ณธ ๊ธ€๋งŒ ๋ณด๋ฉด ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค !! 1. Models์นด์นด์˜ค ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜๊ธฐ์— ์•ž์„œ ๋จผ์ € user model์„ ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค. ์‚ฌ์‹ค ์ด model์€ ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ๋ณธ์ ์ธ ๊ฒƒ๋“ค์„ ์ œ์™ธํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋”ฐ๋กœ customize..

๐Ÿ’ป ํ”„๋กœ์ ํŠธ/๐ŸŽ“ RESUMAI

[RESUMAI] 5. ์ž๊ธฐ์†Œ๊ฐœ์„œ ์ƒ์„ฑ ๋ฐ๋ชจ ์„œ๋น„์Šค

์ง€๋‚œ ๊ธ€์—์„œ ์ž‘์—…ํ•œ ๊ฒƒ์„ ๋ฐ”ํƒ•์œผ๋กœ, ๋ฐ๋ชจ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์€ ํ•ด๋‹น ๋ฐ๋ชจ๋ฅผ ๋งŒ๋“ค ๋•Œ์˜ ๊ธฐ๋ก์ด๋‹ค. 1. RAG ๊ณผ์ • ๊ตฌํ˜„ ์ง€๋‚œ๋ฒˆ์—๋Š” pinecone์— ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž‘์—…๊นŒ์ง€ ์™„๋ฃŒํ–ˆ์œผ๋‹ˆ, ์ด์ œ๋Š” ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ๊ธ€๊ณผ ์œ ์‚ฌ๋„๊ฐ€ ๋†’์€ k๊ฐœ์˜ ํ•ญ๋ชฉ์„ ๊ฐ€์ ธ์™€, ํ”„๋กฌํ”„ํŠธ์— ์˜ˆ์‹œ๋กœ ๋„ฃ์–ด, ์ƒˆ๋กœ์šด ์ž๊ธฐ์†Œ๊ฐœ์„œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ผ๋งŒ ๋‚จ์•˜๋‹ค. 1. Retrieve ๋จผ์ €, query๋ฅผ embedding ํ•˜๊ณ , pinecone์—์„œ ์œ ์‚ฌํ•œ 3๊ฐœ์˜ ํ•ญ๋ชฉ์„ ๊ฐ€์ ธ์˜จ๋‹ค. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. if st.button("์ƒ์„ฑํ•˜๊ธฐ!"): pinecone.init(api_key=st.secrets["PINECONE_API_KEY"], environment="gcp-starter") index = pinecone.Index("resuma..

๐Ÿ’ป ํ”„๋กœ์ ํŠธ/๐ŸŽ“ RESUMAI

[RESUMAI] 4. ๋ฐ์ดํ„ฐ ํฌ๋กค๋ง๊ณผ vectorDB ์ €์žฅ

GITHUB GitHub - resum-ai/resume-crawler: Resumai์˜ ํฌ๋กค๋Ÿฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค. Resumai์˜ ํฌ๋กค๋Ÿฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค. Contribute to resum-ai/resume-crawler development by creating an account on GitHub. github.com ์ง€๋‚œ ๊ธ€์— ์ด์–ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ํฌ๋กค๋งํ•˜๊ณ , pinecone์— ์ €์žฅํ•˜๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ์‚ฌ์‹ค ์–ด๋–ค DB๋ฅผ ์‚ฌ์šฉํ• ๊นŒ ๊ณ ๋ฏผํ–ˆ๋˜ ์ด์œ ๋Š”, vectorDB์— vector๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ค„ ์•Œ์•˜๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฐพ์•„๋ณด๋‹ˆ, ์ •๋ง ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ metadata๋กœ string, integer, bool ์ •๋„์˜ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ..

๐Ÿ’ป ํ”„๋กœ์ ํŠธ/๐ŸŽ“ RESUMAI

[RESUMAI] 3. RAG์˜ ๋„์ž…๊ณผ ์ž๊ธฐ์†Œ๊ฐœ์„œ ํฌ๋กค๋ง

๋“œ๋””์–ด ๊ธฐ๋ง๊ณ ์‚ฌ๊ฐ€ ๋๋‚ฌ๋‹ค..์–ด์ฉŒ๋ฉด ์—ฌ์œ ๋กœ์› ๊ณ , ์–ด์ฉŒ๋ฉด ํž˜๋“ค์—ˆ๋˜ ํ•œ ํ•™๊ธฐ์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ด์ œ ๊ฐœ๋ฐœํ•ด์•ผ์ง€. RAG์˜ ๋„์ž… ์ง€๋‚œ๋ฒˆ์—๋Š” ํ”„๋กฌํ”„ํŠธ๋ฅผ ์‹คํ—˜ํ•ด๋ณธ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ–ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ, 3-shot ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๊ฐ€์žฅ ์ข‹์€ ํผํฌ๋จผ์Šค๋ฅผ ๋ณด์˜€๋‹ค. ํ•ด๋‹น ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ, ๋‚˜๋Š” RAG ๊ธฐ๋ฒ•์„ ์ด์šฉํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. RAG๋Š” Retrieval Augmented Generation์˜ ์•ฝ์ž๋กœ, ๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ 3๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋ผ ์žˆ๋‹ค. Retrieve ๋จผ์ € Retrieve ๋‹จ๊ณ„์—์„œ๋Š” query๋ฅผ embedding ํ•œ ํ›„, vectorDB๋กœ๋ถ€ํ„ฐ ์œ ์‚ฌ์„ฑ์ด ๋†’์€ context๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ณผ์ •์ด๋‹ค. ์ฃผ๋กœ ์ฑ… ์•ˆ์˜ ๋‚ด์šฉ์„ ์ฑ—๋ด‡์—๊ฒŒ ์งˆ๋ฌธํ•˜๊ณ ์ž ํ•  ๋•Œ, ์ฑ… ๋‚ด์šฉ์„ pdf๋กœ ๋งŒ๋“ค์–ด ์ฒจ๋ถ€ํ•˜๊ณ , ์งˆ๋ฌธํ•˜๋Š” ๋‚ด์šฉ์— ๋Œ€ํ•ด Retrieve ๊ณผ์ •์„ ๊ฑฐ์ณ ..

์žฅ์˜์ค€
'๐Ÿ’ป ํ”„๋กœ์ ํŠธ/๐ŸŽ“ RESUMAI' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก