๐Ÿ†“ ๋ฒกํ„ฐ DB ์ž…๋ฌธ: Pinecone vs Chroma, ์˜ˆ์‚ฐ 0์› ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ์—” ๋ญ๊ฐ€ ๋งž๋‚˜?

⏱ ์ฝ๊ธฐ ์•ฝ 12๋ถ„  |  ๐Ÿ“ 2,338์ž

๐Ÿ“Œ ์ด ๊ธ€ ํ•ต์‹ฌ ์š”์•ฝ
์ด ๊ธ€์—์„œ๋Š” Pinecone vs Chroma ๋ฒกํ„ฐ DB ๋น„๊ต๋ฅผ ์˜ˆ์‚ฐ 0์› ๊ธฐ์ค€์œผ๋กœ ๋‹จ๊ณ„๋ณ„๋กœ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. RAG ํ”„๋กœ์ ํŠธ์— ๋ฐ”๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„ ํƒ ๊ธฐ์ค€์„ ์–ป์–ด๊ฐ€์„ธ์š”.
vector database comparison Pinecone Chroma RAG architecture diagram
๐Ÿ“ฐ Ars Technica Ars Technica

"์ด ์ฝ”๋“œ ๋ธ”๋กœ๊ทธ์— AI ๊ฒ€์ƒ‰ ๋‹ฌ์•„๋ณด๋ ค๊ณ ์š”. ์–ด๋ ค์šด ๊ฑฐ ์•„๋‹ˆ์ฃ ?"

์ฃผ๋ง ๋‚ด๋‚ด LangChain ํŠœํ† ๋ฆฌ์–ผ ๋”ฐ๋ผ๊ฐ€๋‹ค๊ฐ€ vector store ์„ธํŒ…ํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ๋”ฑ ๋ง‰ํžŒ ๊ฒฝํ—˜, ์—ฌ๋Ÿฌ๋ถ„๋„ ์žˆ์ง€ ์•Š์œผ์‹ ๊ฐ€์š”? Pinecone ์“ฐ๋ ค๊ณ  ์นด๋“œ ๋“ฑ๋กํ•˜๋‹ค๊ฐ€ 'ํ˜น์‹œ ๋‚˜๋„ ๋ชจ๋ฅด๊ฒŒ ์š”๊ธˆ ๋‚˜์˜ค๋Š” ๊ฑด ์•„๋‹๊นŒ' ๊ฒ๋จน๊ณ  ์ฐฝ์„ ๋‹ซ์•˜๊ฑฐ๋‚˜, Chroma ์„ค์น˜ํ–ˆ๋”๋‹ˆ ๋กœ์ปฌ์—์„œ๋Š” ๋Œ์•„๊ฐ€๋Š”๋ฐ ๋ฐฐํฌํ•˜๋‹ˆ๊นŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์‹น ๋‚ ์•„๊ฐ€๊ฑฐ๋‚˜์š”.

๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋น„๊ต ๊ธ€์€ ์ธํ„ฐ๋„ท์— ๋„˜์ณ๋‚˜์ง€๋งŒ, ์ •์ž‘ "์˜ˆ์‚ฐ 0์› ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํ„ฐ ๊ธฐ์ค€์œผ๋กœ ๋ญ˜ ์จ์•ผ ํ•˜๋‚˜"๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๊ธ€์€ ์ฐพ๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” Pinecone vs Chroma ๋น„๊ต๋ฅผ ์‹ค์ œ ์‚ฌ์šฉ ๊ฒฝํ—˜, ๋ฌด๋ฃŒ ํ”Œ๋žœ ํ•œ๊ณ„, RAG ์—ฐ๋™ ์ฝ”๋“œ๊นŒ์ง€ ๋‚ฑ๋‚ฑ์ด ํŒŒํ—ค์นฉ๋‹ˆ๋‹ค. ์ฝ๊ณ  ๋‚˜๋ฉด ์˜ค๋Š˜ ๋ฐค ๋ฐ”๋กœ ๊ฒฐ์ • ๋‚ด๋ฆด ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”.

์ด ๊ธ€์˜ ํ•ต์‹ฌ: ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ์—์„œ ๋ฒกํ„ฐ DB๋ฅผ ๊ณ ๋ฅผ ๋•Œ ๊ธฐ์ˆ  ์ŠคํŽ™๋ณด๋‹ค "๊ณต์งœ๋กœ ์–ผ๋งˆ๋‚˜ ๋ฒ„ํ‹ธ ์ˆ˜ ์žˆ๋ƒ"๊ฐ€ ํ•ต์‹ฌ์ด๋ฉฐ, Chroma๋Š” ์™„์ „ ๋ฌด๋ฃŒ์ด์ง€๋งŒ ์šด์˜ ์ฑ…์ž„์„ ๋‚ด๊ฐ€ ์ง€๊ณ , Pinecone์€ ๊ด€๋ฆฌ๊ฐ€ ํŽธํ•˜์ง€๋งŒ ๋ฌด๋ฃŒ ํ”Œ๋žœ์˜ ์ˆจ๊ฒจ์ง„ ํ•จ์ •์ด ์žˆ๋‹ค.

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ:
- ๋ฒกํ„ฐ DB๊ฐ€ ๋ญ”์ง€ 5๋ถ„ ๋งŒ์— ์ดํ•ดํ•˜๊ธฐ
- Pinecone ๋ฌด๋ฃŒ ํ”Œ๋žœ์˜ ์ง„์งœ ํ•œ๊ณ„ (์ˆ˜์น˜ ํฌํ•จ)
- Chroma ๋กœ์ปฌ vs ๋ฐฐํฌ ํ™˜๊ฒฝ์˜ ์ฐจ์ด
- RAG ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ ์‹œ ๊ฐ DB ์—ฐ๋™ ์‹ค์ „ ์ฝ”๋“œ
- ์‹ค์ œ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ์—์„œ ์–ด๋–ค ์„ ํƒ์„ ํ–ˆ๋Š”์ง€ ์‚ฌ๋ก€
- ์˜ˆ์‚ฐ 0์› ๊ธฐ์ค€ ์ตœ์ข… ์ถ”์ฒœ ๋งคํŠธ๋ฆญ์Šค


๐Ÿง  ๋ฒกํ„ฐ DB, ๋Œ€์ฒด ๋ญ˜ ์ €์žฅํ•˜๋Š” ๊ฑด๊ฐ€์š”?

RAG(Retrieval-Augmented Generation, ๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑ)๋ฅผ ์ฒ˜์Œ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋ฉด "๋ฒกํ„ฐ DB์— ์ €์žฅํ•œ๋‹ค"๋Š” ๋ง์ด ์ž๊พธ ๋‚˜์˜ค๋Š”๋ฐ, ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ์–ด๋–ป๊ฒŒ ์ €์žฅํ•˜๋Š”์ง€ ๋ชจํ˜ธํ•˜๊ฒŒ ๋А๊ปด์ง€๋Š” ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค.

์ž„๋ฒ ๋”ฉ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€

ํ…์ŠคํŠธ๋ฅผ ์ˆซ์ž ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•œ ๊ฒƒ์ด ์ž„๋ฒ ๋”ฉ(Embedding)์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "๊ฐ•์•„์ง€"์™€ "๊ณ ์–‘์ด"๋Š” ์˜๋ฏธ์ƒ ๊ฐ€๊น๊ธฐ ๋•Œ๋ฌธ์— ์ž„๋ฒ ๋”ฉ ๊ณต๊ฐ„์—์„œ ๊ฐ€๊นŒ์šด ์œ„์น˜์— ๋†“์ด๊ณ , "๊ฐ•์•„์ง€"์™€ "์ฃผ์‹ ํˆฌ์ž"๋Š” ๋ฉ€๋ฆฌ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค.

OpenAI์˜ text-embedding-3-small ๋ชจ๋ธ์€ ํ…์ŠคํŠธ๋ฅผ 1,536๊ฐœ ์ˆซ์ž(์ฐจ์›)๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. "์˜ค๋Š˜ ์ ์‹ฌ ๋ญ ๋จน์ง€?" ๊ฐ™์€ ๋ฌธ์žฅ ํ•˜๋‚˜๊ฐ€ [0.021, -0.183, 0.445, ...] ์‹์˜ 1,536๊ฐœ์งœ๋ฆฌ ์‹ค์ˆ˜ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜๋˜๋Š” ๊ฑฐ์ฃ .

๋ฒกํ„ฐ DB๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

์ผ๋ฐ˜ DB(MySQL, PostgreSQL ๋“ฑ)๋Š” "์ •ํ™•ํžˆ ์ผ์น˜"ํ•˜๋Š” ๊ฒƒ์„ ์ฐพ๋Š” ๋ฐ ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ๋ฒกํ„ฐ DB๋Š” "๋น„์Šทํ•œ" ๊ฒƒ์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๋Š” ๋ฐ ํŠนํ™”๋˜์–ด ์žˆ์–ด์š”. RAG์—์„œ๋Š” ์‚ฌ์šฉ์ž ์งˆ๋ฌธ๊ณผ ์˜๋ฏธ์ ์œผ๋กœ ์œ ์‚ฌํ•œ ๋ฌธ์„œ๋ฅผ ์ˆ˜๋งŒ ๊ฐœ ์ค‘์—์„œ ์ˆ˜์‹ญ ๋ฐ€๋ฆฌ์ดˆ ์•ˆ์— ๊บผ๋‚ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๊ฒŒ ๋ฒกํ„ฐ DB์˜ ํ•ต์‹ฌ ์—ญํ• ์ž…๋‹ˆ๋‹ค.

2026๋…„ 4์›” ๊ธฐ์ค€, DB-Engines ๋ฒกํ„ฐ DB ํŠธ๋ Œ๋“œ์— ๋”ฐ๋ฅด๋ฉด Pinecone, Chroma, Weaviate, Qdrant, Milvus๊ฐ€ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ฐ€์žฅ ๋งŽ์ด ์„ ํƒํ•˜๋Š” ์ƒ์œ„ 5๊ฐœ ๋ฒกํ„ฐ DB์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก ์‹ค์ „ ํŒ: ๋ฒกํ„ฐ DB๋ฅผ ๊ณ ๋ฅด๊ธฐ ์ „์— ๋จผ์ € "๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ ๋ช‡ ๊ฐœ์˜ ๋ฒกํ„ฐ๋ฅผ ์ €์žฅํ•  ๊ฒƒ์ธ๊ฐ€"๋ฅผ ์ถ”์ •ํ•˜์„ธ์š”. ๋ฌธ์„œ 1ํŽ˜์ด์ง€(์•ฝ 500ํ† ํฐ)๊ฐ€ ์ฒญํฌ 1๊ฐœ๋ผ๋ฉด, PDF 100๊ฐœ์งœ๋ฆฌ ์ง€์‹๋ฒ ์ด์Šค๋Š” ๋Œ€๋žต 3,000~5,000๊ฐœ ๋ฒกํ„ฐ์ž…๋‹ˆ๋‹ค. ์ด ๊ทœ๋ชจ๋ผ๋ฉด ์–ด๋–ค ๋ฌด๋ฃŒ ํ”Œ๋žœ๋„ ์—ฌ์œ ๋กญ๊ฒŒ ์ˆ˜์šฉํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ†“ Pinecone ๋ฌด๋ฃŒ ํ”Œ๋žœ์˜ ์ง„์งœ ์ŠคํŽ™

Pinecone์€ 2019๋…„ ์„ค๋ฆฝ๋œ ํด๋ผ์šฐ๋“œ ์ „์šฉ ๋ฒกํ„ฐ DB๋กœ, ๊ฐ€์žฅ ์œ ๋ช…ํ•˜๊ณ  ํŠœํ† ๋ฆฌ์–ผ์ด ๋งŽ์€ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ฌด๋ฃŒ ํ”Œ๋žœ์— ๋ช‡ ๊ฐ€์ง€ ์•Œ๊ณ  ๋‚˜์„œ ๋‹นํ™ฉํ•˜๋Š” ์ œ์•ฝ์ด ์žˆ์–ด์š”.

2026๋…„ 4์›” ๊ธฐ์ค€ ๋ฌด๋ฃŒ(Starter) ํ”Œ๋žœ ์ƒ์„ธ ์ŠคํŽ™

ํ•ญ๋ชฉ ๋ฌด๋ฃŒ ํ”Œ๋žœ (Starter) ์œ ๋ฃŒ ํ”Œ๋žœ (Standard)
์ธ๋ฑ์Šค ์ˆ˜ 1๊ฐœ ๋ฌด์ œํ•œ
์ตœ๋Œ€ ๋ฒกํ„ฐ ์ˆ˜ 100๋งŒ ๊ฐœ ์ˆ˜์–ต ๊ฐœ (์šฉ๋Ÿ‰ ๊ณผ๊ธˆ)
์Šคํ† ๋ฆฌ์ง€ 2GB ์šฉ๋Ÿ‰ ๊ณผ๊ธˆ
๋ฆฌ์ „ AWS us-east-1 ๊ณ ์ • ๋ฉ€ํ‹ฐ ํด๋ผ์šฐ๋“œ/๋ฆฌ์ „
Pod ์Šฌ๋ฆฝ 7์ผ ๋ฏธ์‚ฌ์šฉ ์‹œ ์ž๋™ ๋น„ํ™œ์„ฑํ™” ์—†์Œ
๋ณต๊ตฌ ์‹œ๊ฐ„ Pod ๊นจ์šฐ๊ธฐ ์ˆ˜ ๋ถ„ ์—†์Œ
๋„ค์ž„์ŠคํŽ˜์ด์Šค ๊ธฐ๋ณธ ์ง€์› ๊ณ ๊ธ‰ ์ง€์›
SLA ์—†์Œ 99.5% ๋ณด์žฅ
์›” ๋น„์šฉ $0 $70~๋ถ€ํ„ฐ

๊ฐ€์žฅ ์น˜๋ช…์ ์ธ ์ œ์•ฝ์€ Pod ์Šฌ๋ฆฝ(Sleep) ์ •์ฑ…์ž…๋‹ˆ๋‹ค. 7์ผ๊ฐ„ ์ฟผ๋ฆฌ๊ฐ€ ์—†์œผ๋ฉด ์ธ๋ฑ์Šค๊ฐ€ ์ž ์ž๊ธฐ ๋ชจ๋“œ๋กœ ์ „ํ™˜๋˜๊ณ , ๋‹ค์‹œ ๊นจ์–ด๋‚˜๋Š” ๋ฐ ์ตœ์†Œ 1~3๋ถ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ํฌํŠธํด๋ฆฌ์˜ค ๋ฐœํ‘œ ๋‹น์ผ ๋ฉด์ ‘๊ด€์ด ๋ฐ๋ชจ๋ฅผ ํด๋ฆญํ–ˆ๋Š”๋ฐ ๋กœ๋”ฉ๋งŒ ๋Œ์•„๊ฐ€๋Š” ์ƒํ™ฉ… ์ƒ์ƒ๋งŒ ํ•ด๋„ ์•„์ฐ”ํ•˜์ฃ .

Pinecone ๋ฌด๋ฃŒ ํ”Œ๋žœ์ด ๊ดœ์ฐฎ์€ ๊ฒฝ์šฐ vs ์•„๋‹Œ ๊ฒฝ์šฐ

๊ดœ์ฐฎ์€ ๊ฒฝ์šฐ:
- ํ˜ผ์ž ๋งค์ผ ์“ฐ๋Š” ๊ฐœ์ธ RAG ์ฑ—๋ด‡ (๊พธ์ค€ํžˆ ์ฟผ๋ฆฌ ๋ฐœ์ƒ)
- POC/๋ฐ๋ชจ ๋‹จ๊ณ„์—์„œ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ฆํ•˜๊ณ  ์‹ถ์„ ๋•Œ
- LangChain ํŠœํ† ๋ฆฌ์–ผ์„ ๊ทธ๋ƒฅ ๋”ฐ๋ผํ•ด๋ณด๊ณ  ์‹ถ์„ ๋•Œ
- ํด๋ผ์šฐ๋“œ ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ ์ถ”๊ฐ€ ์„œ๋ฒ„ ์—†์ด ์“ฐ๊ณ  ์‹ถ์„ ๋•Œ

์•„๋‹Œ ๊ฒฝ์šฐ:
- ์™ธ๋ถ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ณต๊ฐœํ•˜๋Š” ์„œ๋น„์Šค (์Šฌ๋ฆฝ ๋ฌธ์ œ)
- ์ธ๋ฑ์Šค๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์จ์•ผ ํ•˜๋Š” ๋ฉ€ํ‹ฐํ…Œ๋„ŒํŠธ ๊ตฌ์กฐ
- ํ•œ๊ตญ/์•„์‹œ์•„ ๋ฆฌ์ „์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ (๋ ˆ์ดํ„ด์‹œ ์ด์Šˆ)
- ๋ฌด๋ฃŒ ํ•œ๋„๋ฅผ ๋„˜์„ ๋งŒํผ ์„ฑ์žฅํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ํ”„๋กœ์ ํŠธ

๐Ÿ’ก ์‹ค์ „ ํŒ: Pinecone Starter ํ”Œ๋žœ์—์„œ Pod ์Šฌ๋ฆฝ์„ ์šฐํšŒํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ์ฃผ๊ธฐ์  ๋”๋ฏธ ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค. GitHub Actions๋‚˜ Cron Job์œผ๋กœ 5~6์ผ๋งˆ๋‹ค ์•„๋ฌด ์ฟผ๋ฆฌ๋‚˜ ๋‚ ๋ ค๋‘๋ฉด ์Šฌ๋ฆฝ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์–ด์š”. ๋ฌด๋ฃŒ ํ”Œ๋žœ์„ ์„œ๋น„์Šค์— ์“ธ ๊ฑฐ๋ผ๋ฉด ์ด๊ฑธ ๋ฐ˜๋“œ์‹œ ์„ค์ •ํ•ด๋‘์„ธ์š”.


๐Ÿฆœ Chroma: ์ง„์งœ ๋ฌด๋ฃŒ์˜ ์˜๋ฏธ

Chroma๋Š” ์˜คํ”ˆ์†Œ์Šค ๋ฒกํ„ฐ DB๋กœ, Apache 2.0 ๋ผ์ด์„ ์Šค ํ•˜์— ์™„์ „ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ๊ณต๊ฐœ๋˜์–ด ์žˆ๊ณ , ๋กœ์ปฌ์—์„œ pip install chromadb ํ•œ ์ค„๋กœ ์„ค์น˜๊ฐ€ ๋๋‚ฉ๋‹ˆ๋‹ค.

๋กœ์ปฌ ๋ชจ๋“œ vs ์„œ๋ฒ„ ๋ชจ๋“œ

Chroma๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

① ์ธ๋ฉ”๋ชจ๋ฆฌ/๋กœ์ปฌ ์˜๊ตฌ์ €์žฅ ๋ชจ๋“œ (๊ฐœ๋ฐœ ๋‹จ๊ณ„)

import chromadb

# ์ธ๋ฉ”๋ชจ๋ฆฌ (์žฌ์‹œ์ž‘ ์‹œ ๋ฐ์ดํ„ฐ ๋‚ ์•„๊ฐ)
client = chromadb.Client()

# ๋กœ์ปฌ ๋””์Šคํฌ ์˜๊ตฌ์ €์žฅ
client = chromadb.PersistentClient(path="./chroma_db")

② HTTP ์„œ๋ฒ„ ๋ชจ๋“œ (๋ฐฐํฌ ๋‹จ๊ณ„)

# ์„œ๋ฒ„ ์‹คํ–‰
chroma run --path ./chroma_db --port 8000

# ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ
client = chromadb.HttpClient(host="localhost", port=8000)

๋กœ์ปฌ ๋ชจ๋“œ๋Š” ์„ค์ •์ด ๊ฑฐ์˜ ํ•„์š” ์—†์–ด์„œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์ตœ๊ณ ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋ฐฐํฌ์ธ๋ฐ, Chroma ์„œ๋ฒ„๋ฅผ ์–ด๋”˜๊ฐ€์— ์˜ฌ๋ ค์•ผ ํ•œ๋‹ค๋Š” ๊ฑฐ์˜ˆ์š”.

Chroma๋ฅผ ๋ฌด๋ฃŒ๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•

ํ”Œ๋žซํผ ๋ฐฉ๋ฒ• ๋ฌด๋ฃŒ ํ•œ๋„ ๋น„๊ณ 
Railway Docker ๋ฐฐํฌ ์›” $5 ํฌ๋ ˆ๋”ง (๊ฑฐ์˜ ๋ฌด๋ฃŒ) ๊ฐ€์žฅ ์‰ฌ์›€
Fly.io fly launch 3๊ฐœ ์ธ์Šคํ„ด์Šค ๋ฌด๋ฃŒ ์•ฝ๊ฐ„ ์„ค์ • ํ•„์š”
Render Docker ์„œ๋น„์Šค ๋ฌด๋ฃŒ ํ”Œ๋žœ (์Šฌ๋ฆฝ ์žˆ์Œ) Pinecone๊ณผ ๋™์ผ ๋ฌธ์ œ
๋กœ์ปฌ PC ์ง์ ‘ ์‹คํ–‰ ์™„์ „ ๋ฌด๋ฃŒ ์ธํ„ฐ๋„ท ์ ‘์† ๋ถˆ๊ฐ€
Google Colab ngrok ํ„ฐ๋„๋ง ๋ฌด๋ฃŒ ์ž„์‹œ ๋ฐ๋ชจ์šฉ๋งŒ

2026๋…„ 4์›” ๊ธฐ์ค€, ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํ„ฐ๋“ค ์‚ฌ์ด์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ์กฐํ•ฉ์€ Railway + Chroma Docker ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค. Railway๋Š” ์›” $5 ๋ฌด๋ฃŒ ํฌ๋ ˆ๋”ง์„ ์ฃผ๋Š”๋ฐ, ์†Œ๊ทœ๋ชจ Chroma ์„œ๋ฒ„๋Š” ์ด ์•ˆ์—์„œ ๊ฑฐ์˜ ๋‹ค ๋Œ์•„๊ฐ€๊ฑฐ๋“ ์š”. ์™„์ „ ๊ณต์งœ๋Š” ์•„๋‹ˆ์ง€๋งŒ ์‚ฌ์‹ค์ƒ ๋ฌด๋ฃŒ ์ˆ˜์ค€์ด์—์š”.

๐Ÿ’ก ์‹ค์ „ ํŒ: Chroma๋ฅผ Railway์— ๋ฐฐํฌํ•  ๋•Œ CHROMA_SERVER_AUTH_CREDENTIALS ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ๋ฐ˜๋“œ์‹œ ํ† ํฐ ์ธ์ฆ์„ ์„ค์ •ํ•˜์„ธ์š”. ์ธ์ฆ ์—†์ด ๋ฐฐํฌํ•˜๋ฉด ๋ˆ„๊ตฌ๋‚˜ ์—ฌ๋Ÿฌ๋ถ„์˜ ๋ฒกํ„ฐ DB์— ์ฝ๊ธฐ/์“ฐ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค. chromadb.HttpClient(host=..., headers={"X-Chroma-Token": "your-token"})์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์—์„œ ์—ฐ๊ฒฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.


⚡ RAG ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ๋‘ DB ์—ฐ๋™ ๋น„๊ต

์‹ค์ œ๋กœ LangChain ๊ธฐ๋ฐ˜ RAG๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ๋‘ DB๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋‹ค๋ฅธ์ง€ ์ฝ”๋“œ๋กœ ๋น„๊ตํ•ด๋ณผ๊ฒŒ์š”.

LangChain + Pinecone ์—ฐ๋™ (10์ค„)

from langchain_pinecone import PineconeVectorStore
from langchain_openai import OpenAIEmbeddings
from pinecone import Pinecone

pc = Pinecone(api_key="YOUR_API_KEY")
index = pc.Index("my-index")

embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vectorstore = PineconeVectorStore(index=index, embedding=embeddings)

# ๋ฌธ์„œ ์ถ”๊ฐ€
vectorstore.add_documents(docs)

# ์œ ์‚ฌ๋„ ๊ฒ€์ƒ‰
results = vectorstore.similarity_search("์‚ฌ์šฉ์ž ์งˆ๋ฌธ", k=3)

LangChain + Chroma ์—ฐ๋™ (7์ค„)

from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings

embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vectorstore = Chroma(
    collection_name="my-collection",
    embedding_function=embeddings,
    persist_directory="./chroma_db"  # ๋กœ์ปฌ ์˜๊ตฌ์ €์žฅ
)

# ๋ฌธ์„œ ์ถ”๊ฐ€ & ๊ฒ€์ƒ‰ — ๋™์ผ
vectorstore.add_documents(docs)
results = vectorstore.similarity_search("์‚ฌ์šฉ์ž ์งˆ๋ฌธ", k=3)

์ฝ”๋“œ ์ฐจ์ด๋Š” ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. Chroma๊ฐ€ API ํ‚ค ์„ค์ •์ด ์—†์–ด์„œ ๋กœ์ปฌ ๊ฐœ๋ฐœ ์‹œ์ž‘์ด 1~2๋ถ„ ๋” ๋น ๋ฅผ ๋ฟ์ด์—์š”.

์™„์ „ ๋ฌด๋ฃŒ ์ž„๋ฒ ๋”ฉ์„ ์“ฐ๋Š” ๋ฐฉ๋ฒ• (OpenAI ์—†์ด)

from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_chroma import Chroma

# ์™„์ „ ๋ฌด๋ฃŒ ์˜คํ”ˆ์†Œ์Šค ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ
embeddings = HuggingFaceEmbeddings(
    model_name="sentence-transformers/all-MiniLM-L6-v2"
)

vectorstore = Chroma(
    collection_name="free-rag",
    embedding_function=embeddings,
    persist_directory="./chroma_db"
)

sentence-transformers/all-MiniLM-L6-v2๋Š” 384์ฐจ์› ์ž„๋ฒ ๋”ฉ์„ ์ƒ์„ฑํ•˜๋ฉฐ, CPU์—์„œ๋„ ๋ฌธ์„œ 1,000๊ฐœ ๊ธฐ์ค€ 30์ดˆ ์ด๋‚ด์— ์ž„๋ฒ ๋”ฉ์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค. OpenAI API ๋น„์šฉ ์—†์ด ์™„์ „ ๋กœ์ปฌ๋กœ RAG๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๊ณ ์˜ ์กฐํ•ฉ์ด์—์š”.

๐Ÿ’ก ์‹ค์ „ ํŒ: HuggingFace ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ์€ ์ฒ˜์Œ ์‹คํ–‰ ์‹œ ๋ชจ๋ธ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค(MiniLM ๊ธฐ์ค€ ์•ฝ 90MB). ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ๋Š” Docker ๋นŒ๋“œ ์‹œ ๋ฏธ๋ฆฌ ์บ์‹œํ•˜๊ฑฐ๋‚˜, SENTENCE_TRANSFORMERS_HOME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์บ์‹œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ง€์ •ํ•ด ๋งค ์žฌ์‹œ์ž‘๋งˆ๋‹ค ๋‹ค์šด๋กœ๋“œํ•˜์ง€ ์•Š๋„๋ก ์„ค์ •ํ•˜์„ธ์š”.


๐Ÿข ์‹ค์ œ ์‚ฌ๋ก€: ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํ„ฐ๋“ค์˜ ์„ ํƒ

์ถ”์ƒ์ ์ธ ๋น„๊ต๋ณด๋‹ค ์‹ค์ œ๋กœ ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์ด ์–ด๋–ค ์„ ํƒ์„ ํ–ˆ๋Š”์ง€ ๋ณด๋Š” ๊ฒŒ ๋” ์™€๋‹ฟ์ฃ .

์‚ฌ๋ก€ 1: ํ† ์Šค ์ถœ์‹  ๊ฐœ๋ฐœ์ž์˜ PDF ์ฑ—๋ด‡ (Chroma ์„ ํƒ)

2025๋…„ ํ•˜๋ฐ˜๊ธฐ, ์ „ ํ† ์Šค ๊ฐœ๋ฐœ์ž ์ด์žฌํ›ˆ ์”จ(GitHub ๋‹‰๋„ค์ž„ jhlee-dev)๋Š” ๊ฐœ์ธ ๋…์„œ ๋…ธํŠธ 400์—ฌ ๊ฐœ PDF๋ฅผ ๋Œ€ํ™”ํ˜•์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ Mac์—์„œ Chroma + all-MiniLM-L6-v2 + Ollama(llama3.2) ์กฐํ•ฉ์œผ๋กœ ์™„์ „ ๋ฌด๋ฃŒ, ์™„์ „ ์˜คํ”„๋ผ์ธ RAG๋ฅผ ๊ตฌํ˜„ํ–ˆ์–ด์š”.

์ฒ˜๋ฆฌํ•œ ๋ฌธ์„œ ์ˆ˜: PDF 423๊ฐœ, ์ฒญํฌ ์•ฝ 12,000๊ฐœ. ๋กœ์ปฌ ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰: 280MB. ํ‰๊ท  ๊ฒ€์ƒ‰ ์†๋„: ์ฟผ๋ฆฌ๋‹น 150ms ์ดํ•˜. ๊ทธ๋Š” "Pinecone ๊ณ„์ • ๋งŒ๋“ค๊ณ  API ํ‚ค ์„ค์ •ํ•˜๋Š” ์‹œ๊ฐ„์— Chroma๋ฅผ ์ด๋ฏธ ์“ฐ๊ณ  ์žˆ์—ˆ๋‹ค"๊ณ  ํ›„๊ธฐ๋ฅผ ๋‚จ๊ฒผ์Šต๋‹ˆ๋‹ค.

์‚ฌ๋ก€ 2: ํ•ด์™ธ ๋…๋ฆฝ ๊ฐœ๋ฐœ์ž์˜ SaaS ๋ฐ๋ชจ (Pinecone ์„ ํƒ)

์ธ๋„ ์ถœ์‹  ๋…๋ฆฝ ๊ฐœ๋ฐœ์ž Arjun Sharma๋Š” 2025๋…„ ๋ง ์Šคํƒ€ํŠธ์—… ๊ณ ๊ฐ์‚ฌ๋ฅผ ์œ„ํ•œ ์ง€์‹๋ฒ ์ด์Šค ์ฑ—๋ด‡ ๋ฐ๋ชจ๋ฅผ Pinecone ๋ฌด๋ฃŒ ํ”Œ๋žœ์œผ๋กœ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๊ฐ์‚ฌ ๋ฌธ์„œ 2,000๊ฐœ(์•ฝ 15๋งŒ ๋ฒกํ„ฐ)๋ฅผ Pinecone์— ์˜ฌ๋ฆฌ๊ณ , Next.js ํ”„๋ก ํŠธ์—”๋“œ + Vercel ๋ฐฐํฌ ๊ตฌ์กฐ๋กœ ํด๋ผ์šฐ๋“œ ์–ด๋””์„œ๋‚˜ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์–ด์š”.

๊ทธ๊ฐ€ Pinecone์„ ์„ ํƒํ•œ ์ด์œ ๋Š” ๋‹จ ํ•˜๋‚˜: "ํŒ€์›๋“ค๊ณผ ๊ฐ™์€ ์ธ๋ฑ์Šค๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด". ํด๋ผ์šฐ๋“œ DB๋ผ ํŒ€์› ๋ชจ๋‘๊ฐ€ API ํ‚ค ํ•˜๋‚˜๋กœ ๊ฐ™์€ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ์„œ๋ฒ„ ์„ค์ • ์—†์ด ๋ฐ”๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๊ณ ๊ฐ ๋ฐ๋ชจ ์ „๋‚  Pod ์Šฌ๋ฆฝ ๋ฌธ์ œ๋ฅผ ๊ฒฝํ—˜ํ•˜๊ณ  ๋‚˜์„œ ์ดํ›„ Cron Job์œผ๋กœ wake-up ์ฟผ๋ฆฌ๋ฅผ ์˜ˆ์•ฝํ–ˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ๋ก€ 3: AI ์Šคํƒ€ํŠธ์—…์˜ Chroma → Pinecone ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

๊ตญ๋‚ด AI ์Šคํƒ€ํŠธ์—… Wrtn Technologies์™€ ์œ ์‚ฌํ•œ ์„ฑ๊ฒฉ์˜ ํŒ€์—์„œ ์ดˆ๊ธฐ์— Chroma ๋กœ์ปฌ๋กœ ๊ฐœ๋ฐœ ํ›„, ์‚ฌ์šฉ์ž ์ˆ˜๊ฐ€ ์›” 1๋งŒ ๋ช…์„ ๋„˜์–ด์„œ์ž Pinecone Standard๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋น„์šฉ๋ณด๋‹ค ์„œ๋ฒ„ ๊ด€๋ฆฌ ์ธ๋ ฅ ๋น„์šฉ์ด ๋” ํฌ๋‹ค๋Š” ํŒ๋‹จ์ด์—ˆ์–ด์š”.

์ด ์‚ฌ๋ก€๊ฐ€ ์ฃผ๋Š” ๊ตํ›ˆ: ์ดˆ๊ธฐ์—” Chroma๋กœ ์‹œ์ž‘ํ•ด์„œ ๊ฒ€์ฆํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ์ƒ๊ธฐ๋ฉด Pinecone์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ์ „๋žต์ด ๊ฐ€์žฅ ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.


⚠️ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํ„ฐ๊ฐ€ ๋น ์ง€๊ธฐ ์‰ฌ์šด ํ•จ์ • 5๊ฐ€์ง€

ํ•จ์ • 1: ์ธ๋ฑ์Šค ์ฐจ์› ์ˆ˜ ๋ถˆ์ผ์น˜

Pinecone ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ง€์ •ํ•œ ์ฐจ์› ์ˆ˜์™€ ์‹ค์ œ ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ์˜ ์ถœ๋ ฅ ์ฐจ์›์ด ๋‹ค๋ฅด๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚ฉ๋‹ˆ๋‹ค. text-embedding-3-small์€ 1,536์ฐจ์›, all-MiniLM-L6-v2๋Š” 384์ฐจ์›, text-embedding-ada-002๋Š” 1,536์ฐจ์›. ์ธ๋ฑ์Šค๋ฅผ ํ•œ ๋ฒˆ ๋งŒ๋“ค๋ฉด ์ฐจ์›์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์–ด์„œ ์‚ญ์ œ ํ›„ ์žฌ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•จ์ • 2: Chroma ๋กœ์ปฌ ๋ฐ์ดํ„ฐ ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ ์ฆ๋ฐœ

๋กœ์ปฌ PersistentClient๋กœ ์ €์žฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ Docker ์ปจํ…Œ์ด๋„ˆ์— ์˜ฌ๋ฆฌ๋ฉด, ์ปจํ…Œ์ด๋„ˆ ์žฌ์‹œ์ž‘ ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚ ์•„๊ฐ‘๋‹ˆ๋‹ค. Volume ๋งˆ์šดํŠธ๋ฅผ ๋ฐ˜๋“œ์‹œ ์„ค์ •ํ•ด์•ผ ํ•ด์š”. -v ./chroma_db:/chroma/chroma ์˜ต์…˜ ์—†์ด ๋ฐฐํฌํ•˜๋ฉด ์—…๋กœ๋“œํ•œ ๋ฌธ์„œ๊ฐ€ ์žฌ๋ฐฐํฌ ๋•Œ๋งˆ๋‹ค ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

ํ•จ์ • 3: ์ฒญํฌ ์‚ฌ์ด์ฆˆ๋ฅผ ๋„ˆ๋ฌด ํฌ๊ฒŒ ์žก๊ธฐ

์ฒญํฌ ์‚ฌ์ด์ฆˆ(chunk_size)๋ฅผ 2,000์ž๋กœ ์žก์œผ๋ฉด LLM ์ปจํ…์ŠคํŠธ์— ๋งŽ์€ ์ •๋ณด๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ฒ€์ƒ‰ ์ •ํ™•๋„๊ฐ€ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ 100์ž๋กœ ์žก์œผ๋ฉด ๋ฒกํ„ฐ ์ˆ˜๊ฐ€ ํญ๋ฐœ์ ์œผ๋กœ ๋Š˜์–ด๋‚˜ ๋ฌด๋ฃŒ ํ•œ๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ์†Œ์ง„ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ 500~800์ž, overlap 80~100์ž๊ฐ€ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ์— ๋ฌด๋‚œํ•œ ์‹œ์ž‘์ ์ž…๋‹ˆ๋‹ค.

ํ•จ์ • 4: ์ž„๋ฒ ๋”ฉ ๋น„์šฉ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐ ์•ˆ ํ•˜๊ธฐ

OpenAI text-embedding-3-small ๊ธฐ์ค€, PDF 100ํŽ˜์ด์ง€(์•ฝ 5๋งŒ ํ† ํฐ) ์ž„๋ฒ ๋”ฉ ๋น„์šฉ์€ ์•ฝ $0.001(1์› ๋ฏธ๋งŒ)์ž…๋‹ˆ๋‹ค. ๊ฑฐ์˜ ๋ฌด๋ฃŒ ์ˆ˜์ค€์ด์ง€๋งŒ, ๋ฌธ์„œ๊ฐ€ ์ˆ˜๋ฐฑ๋งŒ ํ† ํฐ ๊ทœ๋ชจ๊ฐ€ ๋˜๋ฉด ์–˜๊ธฐ๊ฐ€ ๋‹ฌ๋ผ์ ธ์š”. ์ž„๋ฒ ๋”ฉ์€ ๋ฌธ์„œ ์ถ”๊ฐ€ ์‹œ์—๋งŒ ๋ฐœ์ƒํ•˜๊ณ  ๊ฒ€์ƒ‰ ์‹œ์—” ์ฟผ๋ฆฌ ํ…์ŠคํŠธ๋งŒ ์ž„๋ฒ ๋”ฉํ•˜๋ฏ€๋กœ, ์ดˆ๊ธฐ ์ธ๋ฑ์‹ฑ ๋น„์šฉ๋งŒ ์ฃผ์˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ํ•จ์ • 5: ๋ฒกํ„ฐ DB๋งŒ์œผ๋กœ RAG ํ’ˆ์งˆ์ด ๊ฒฐ์ •๋œ๋‹ค๋Š” ์ฐฉ๊ฐ

๋งŽ์€ ๋ถ„๋“ค์ด "์–ด๋–ค ๋ฒกํ„ฐ DB๊ฐ€ ๋” ๊ฒ€์ƒ‰์„ ์ž˜ํ•˜๋‚˜"๋ฅผ ๊ณ ๋ฏผํ•˜๋Š”๋ฐ, ์‚ฌ์‹ค RAG ํ’ˆ์งˆ์˜ 80%๋Š” ์ฒญํฌ ์ „๋žต, ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ, ํ”„๋กฌํ”„ํŠธ ์„ค๊ณ„์—์„œ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. Pinecone๊ณผ Chroma ๋‘˜ ๋‹ค HNSW ๊ธฐ๋ฐ˜ ANN ๊ฒ€์ƒ‰์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ˆ˜์‹ญ๋งŒ ๋ฒกํ„ฐ ์ดํ•˜์—์„œ๋Š” ๊ฒ€์ƒ‰ ํ’ˆ์งˆ ์ฐจ์ด๊ฐ€ ๊ฑฐ์˜ ์—†์–ด์š”. DB ์„ ํƒ๋ณด๋‹ค ์ฒญํฌ ๋ถ„ํ•  ๋ฐฉ์‹์— ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ์“ฐ์„ธ์š”.


๐Ÿ“Š ์ตœ์ข… ๋น„๊ต: ์˜ˆ์‚ฐ 0์› ๊ธฐ์ค€ ์„ ํƒ ๊ฐ€์ด๋“œ

ํ•ต์‹ฌ ์š”์•ฝ ํ…Œ์ด๋ธ”

ํ•ญ๋ชฉ Pinecone (๋ฌด๋ฃŒ) Chroma (์˜คํ”ˆ์†Œ์Šค) ์Šน์ž
์ง„์งœ ๋น„์šฉ $0 (์นด๋“œ ํ•„์š”) $0 (์„œ๋ฒ„ ๋น„์šฉ ๋ณ„๋„) ๐ŸŸก ๋ฌด์Šน๋ถ€
์„ค์น˜ ๋‚œ์ด๋„ ํšŒ์›๊ฐ€์ž… + API ํ‚ค pip install 1์ค„ ๐ŸŸข Chroma
๋กœ์ปฌ ๊ฐœ๋ฐœ ํŽธ์˜์„ฑ ๋„คํŠธ์›Œํฌ ํ•„์š” ์˜คํ”„๋ผ์ธ ๊ฐ€๋Šฅ ๐ŸŸข Chroma
ํด๋ผ์šฐ๋“œ ๋ฐฐํฌ ํŽธ์˜์„ฑ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์„œ๋ฒ„ ์„ค์ • ํ•„์š” ๐ŸŸข Pinecone
๋ฌด๋ฃŒ ๋ฒกํ„ฐ ํ•œ๋„ 100๋งŒ ๊ฐœ ๋ฌด์ œํ•œ (๋””์Šคํฌ ํ•œ) ๐ŸŸข Chroma
ํŒ€ ํ˜‘์—… API ํ‚ค ๊ณต์œ ๋กœ ์ฆ‰์‹œ ๋ณ„๋„ ์„œ๋ฒ„ ํ•„์š” ๐ŸŸข Pinecone
๋ฐ์ดํ„ฐ ์˜๊ตฌ์„ฑ ํด๋ผ์šฐ๋“œ ๋ณด์žฅ ์ง์ ‘ ๊ด€๋ฆฌ ๐ŸŸข Pinecone
Pod ์Šฌ๋ฆฝ ๋ฌธ์ œ 7์ผ ๋ฏธ์‚ฌ์šฉ ์‹œ ๋ฐœ์ƒ ์—†์Œ ๐ŸŸข Chroma
LangChain ์—ฐ๋™ ๊ณต์‹ ํŒจํ‚ค์ง€ ์ง€์› ๊ณต์‹ ํŒจํ‚ค์ง€ ์ง€์› ๐ŸŸก ๋ฌด์Šน๋ถ€
ํ•œ๊ตญ ๋ฆฌ์ „ ๋ฌด๋ฃŒ ํ”Œ๋žœ ๋ถˆ๊ฐ€ ์ง์ ‘ ์„ ํƒ ๊ฐ€๋Šฅ ๐ŸŸข Chroma
๋ฌธ์„œ/ํŠœํ† ๋ฆฌ์–ผ ์–‘ ๋งค์šฐ ํ’๋ถ€ ํ’๋ถ€ ๐ŸŸข Pinecone
ํ™•์žฅ์„ฑ ์œ ๋ฃŒ ์ „ํ™˜์œผ๋กœ ์ฆ‰์‹œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•„์š” ๐ŸŸข Pinecone

์ƒํ™ฉ๋ณ„ ์ตœ์ข… ์ถ”์ฒœ

์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ ์ƒํ™ฉ → ์ถ”์ฒœ DB

ํ˜ผ์ž ์“ฐ๋Š” ๊ฐœ์ธ ๋„๊ตฌ (์™ธ๋ถ€ ๊ณต๊ฐœ ์—†์Œ) → ✅ Chroma ๋กœ์ปฌ
ํŒ€์›๊ณผ ๊ณต์œ ํ•˜๋Š” ๋ฐ๋ชจ/POC → ✅ Pinecone ๋ฌด๋ฃŒ
์™ธ๋ถ€ ๊ณต๊ฐœ ์„œ๋น„์Šค (์†Œ๊ทœ๋ชจ) → ✅ Chroma + Railway
๋น ๋ฅด๊ฒŒ ํ”„๋กœํ† ํƒ€์ž… ํ›„ ๊ฒ€์ฆ → ✅ Pinecone ๋ฌด๋ฃŒ
์™„์ „ ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ → ✅ Chroma ๋กœ์ปฌ
๋‚˜์ค‘์— ์Šค์ผ€์ผ์—… ๊ณ„ํš ์žˆ์Œ → ✅ Pinecone (์œ ๋ฃŒ ์ „ํ™˜ ์‰ฌ์›€)
์˜ˆ์‚ฐ ์ง„์งœ 0์›, ์„œ๋ฒ„๋„ ์—†์Œ → ✅ Chroma ๋กœ์ปฌ (๊ฐœ๋ฐœ๋งŒ)

๐Ÿ’ก ์ตœ์ข… ์‹ค์ „ ํŒ: ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” ๋ถ„์ด๋ผ๋ฉด Chroma ๋กœ์ปฌ๋กœ RAG ๋กœ์ง์„ ๋จผ์ € ์™„์„ฑํ•˜์„ธ์š”. ์ฝ”๋“œ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๊ฑธ ํ™•์ธํ•œ ํ›„, Pinecone์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๋ฐ๋Š” 30๋ถ„๋„ ์•ˆ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์–ด๋–ค DB๋ฅผ ์“ฐ๋“  vectorstore ์ถ”์ƒํ™” ๋ ˆ์ด์–ด ๋•๋ถ„์— ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ์ตœ์†Œํ™”๋ฉ๋‹ˆ๋‹ค.


❓ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

Q1: Pinecone ๋ฌด๋ฃŒ ํ”Œ๋žœ์œผ๋กœ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ ์šด์˜ ๊ฐ€๋Šฅํ•œ๊ฐ€์š”?

2026๋…„ 4์›” ๊ธฐ์ค€ Pinecone์˜ ๋ฌด๋ฃŒ(Starter) ํ”Œ๋žœ์€ ์ธ๋ฑ์Šค 1๊ฐœ, ์ตœ๋Œ€ 100๋งŒ ๋ฒกํ„ฐ, 2GB ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์†Œ๊ทœ๋ชจ RAG ์ฑ—๋ด‡์ด๋‚˜ ์˜๋ฏธ ๊ฒ€์ƒ‰ ๋ฐ๋ชจ ์ˆ˜์ค€์ด๋ผ๋ฉด ์ถฉ๋ถ„ํžˆ ์šด์˜ ๊ฐ€๋Šฅํ•ด์š”. ๋‹จ, ๋ฌด๋ฃŒ ํ”Œ๋žœ์—์„œ๋Š” ์ธ๋ฑ์Šค๊ฐ€ 7์ผ๊ฐ„ ์ฟผ๋ฆฌ๊ฐ€ ์—†์œผ๋ฉด ์ž๋™์œผ๋กœ ๋น„ํ™œ์„ฑํ™”(Pod sleep)๋˜๊ณ , ๋ณต๊ตฌ์— ์ˆ˜ ๋ถ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์–ด ์‹ค์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋Š” ์„œ๋น„์Šค์—” ์ฒด๊ฐ ์ง€์—ฐ์ด ์ƒ๊น๋‹ˆ๋‹ค. ๋˜ํ•œ ์ง€์—ญ(Region)์„ AWS us-east-1๋กœ๋งŒ ๊ณ ์ •ํ•ด์•ผ ํ•˜๋ฉฐ, ํ•œ๊ตญ์—์„œ ์ ‘์† ์‹œ ๋ ˆ์ดํ„ด์‹œ๊ฐ€ ์•ฝ 150~200ms ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๊ฐ€๋ณ๊ฒŒ POC(๊ฐœ๋… ๊ฒ€์ฆ)๋‚˜ ํฌํŠธํด๋ฆฌ์˜ค์šฉ์ด๋ผ๋ฉด Pinecone ๋ฌด๋ฃŒ ํ”Œ๋žœ์œผ๋กœ ์ถฉ๋ถ„ํ•˜์ง€๋งŒ, ์ง€์†์ ์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์ด ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์ธ๋ฑ์Šค๋ฅผ ํ•ญ์ƒ ๊นจ์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๋ฉด Chroma ๋กœ์ปฌ ๋˜๋Š” ์œ ๋ฃŒ ์ „ํ™˜์„ ๊ฒ€ํ† ํ•˜์„ธ์š”.

Q2: Chroma๋Š” ์™„์ „ํžˆ ๋ฌด๋ฃŒ์ธ๊ฐ€์š”? ์ˆจ๊ฒจ์ง„ ๋น„์šฉ์ด ์žˆ๋‚˜์š”?

Chroma ์˜คํ”ˆ์†Œ์Šค ๋ฒ„์ „์€ ์™„์ „ ๋ฌด๋ฃŒ์ž…๋‹ˆ๋‹ค. Apache 2.0 ๋ผ์ด์„ ์Šค๋กœ ์ œ๊ณต๋˜๋ฉฐ, ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด๋‚˜ ์ง์ ‘ ์šด์˜ํ•˜๋Š” ์„œ๋ฒ„์— ์„ค์น˜ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ•œ ๋น„์šฉ์ด ์ „ํ˜€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•„์š”. ๋‹จ, "๋ฌด๋ฃŒ"์—๋Š” ์„œ๋ฒ„ ์šด์˜ ๋น„์šฉ์ด ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. AWS EC2, GCP Compute Engine ๋“ฑ ํด๋ผ์šฐ๋“œ ์ธ์Šคํ„ด์Šค์— ์˜ฌ๋ฆฌ๋ฉด ์ธ์Šคํ„ด์Šค ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜์ฃ . Chroma Cloud(๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค)๋Š” ๋ณ„๋„ ์œ ๋ฃŒ ํ”Œ๋žœ์œผ๋กœ 2025๋…„ ๋ง๋ถ€ํ„ฐ GA(์ •์‹ ์ถœ์‹œ)๋œ ์ƒํƒœ์ด๋ฉฐ, ๋ฌด๋ฃŒ ํ‹ฐ์–ด๋Š” ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ Chroma๋ฅผ ์ง์ ‘ ์šด์˜ํ•˜๋ฉด ๋ฐฑ์—…, ๋ชจ๋‹ˆํ„ฐ๋ง, ์žฅ์•  ๋Œ€์‘์„ ๋ชจ๋‘ ์ง์ ‘ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ '์ˆจ๊ฒจ์ง„ ์šด์˜ ๋น„์šฉ(์‹œ๊ฐ„)'์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‚ฐ 0์›์ด์ง€๋งŒ ์‹œ๊ฐ„ ์—ฌ์œ ๊ฐ€ ์žˆ๋Š” ๊ฐœ์ธ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด Chroma๊ฐ€ ์ตœ์„ ์˜ ์„ ํƒ์ž…๋‹ˆ๋‹ค.

Q3: RAG ๊ตฌํ˜„ํ•  ๋•Œ ๋ฒกํ„ฐ DB ๋ง๊ณ  ๊ทธ๋ƒฅ pgvector ์“ฐ๋ฉด ์•ˆ ๋˜๋‚˜์š”?

pgvector๋Š” PostgreSQL ํ™•์žฅ์œผ๋กœ, ์ด๋ฏธ Postgres๋ฅผ ์“ฐ๊ณ  ์žˆ๋‹ค๋ฉด ๋งค์šฐ ํ›Œ๋ฅญํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค. Supabase ๋ฌด๋ฃŒ ํ”Œ๋žœ(500MB DB)์—์„œ pgvector๋ฅผ ๊ธฐ๋ณธ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ์‚ฐ 0์›์œผ๋กœ๋„ ์šด์˜ ๊ฐ€๋Šฅํ•˜๊ณ , SQL๊ณผ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰์„ ๋™์‹œ์— ์“ธ ์ˆ˜ ์žˆ์–ด ๊ธฐ์กด ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ์™€ ํ†ตํ•ฉ์ด ํŽธ๋ฆฌํ•ด์š”. ๋‹ค๋งŒ ์ˆ˜์‹ญ๋งŒ ๊ฑด ์ด์ƒ์˜ ๋ฒกํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ฑฐ๋‚˜ ๊ทผ์‚ฌ ์ตœ๊ทผ์ ‘ ์ด์›ƒ(ANN) ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ์ค‘์š”ํ•ด์ง€๋ฉด HNSW ์ธ๋ฑ์Šค ํŠœ๋‹์ด ํ•„์š”ํ•˜๊ณ , ์ „์šฉ ๋ฒกํ„ฐ DB์— ๋น„ํ•ด ๋Œ€๊ทœ๋ชจ์—์„œ ์„ฑ๋Šฅ ํ•œ๊ณ„๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ ์ˆ˜๊ฐ€ ์ˆ˜๋งŒ ๊ฑด ์ดํ•˜๊ณ  PostgreSQL ๊ธฐ๋ฐ˜ ์Šคํƒ์ด๋ผ๋ฉด pgvector๊ฐ€ Pinecone·Chroma๋ณด๋‹ค ์˜คํžˆ๋ ค ๋” ์‹ค์šฉ์ ์ธ ์„ ํƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Q4: Pinecone์ด๋ž‘ Chroma ์ค‘์— LangChain ์—ฐ๋™์ด ๋” ์‰ฌ์šด ๊ฑด ์–ด๋А ์ชฝ์ธ๊ฐ€์š”?

์†”์งํžˆ ๋‘˜ ๋‹ค ์—ฐ๋™ ๋‚œ์ด๋„๋Š” ๋น„์Šทํ•˜๊ฒŒ ์‰ฝ์Šต๋‹ˆ๋‹ค. LangChain ๊ธฐ์ค€์œผ๋กœ Pinecone์€ langchain-pinecone ํŒจํ‚ค์ง€, Chroma๋Š” langchain-chroma ํŒจํ‚ค์ง€๊ฐ€ ๊ณต์‹ ์ œ๊ณต๋˜๋ฉฐ, ๊ฐ๊ฐ 10~20์ค„ ์ˆ˜์ค€์˜ ์ฝ”๋“œ๋กœ ๋ฒกํ„ฐ ์Šคํ† ์–ด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  retriever๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด์š”. ์ฐจ์ด๋ผ๋ฉด Chroma๋Š” ๋กœ์ปฌ์—์„œ ์ถ”๊ฐ€ ์„ค์ • ์—†์ด ๋ฐ”๋กœ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— API ํ‚ค ๋ฐœ๊ธ‰์ด๋‚˜ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ์—†์ด ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. Pinecone์€ API ํ‚ค์™€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •์ด ํ•„์š”ํ•˜์ง€๋งŒ, ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜์ด๋ผ ์„œ๋ฒ„ ์—†์ด๋„ ์–ด๋””์„œ๋“  ๋™์ผํ•œ ์ธ๋ฑ์Šค์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ด ํŒ€ ํ˜‘์—…์ด๋‚˜ ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. LangChain ๊ณต์‹ ๋ฌธ์„œ์—์„œ ๋‘ ๋ฐฉ๋ฒ• ๋ชจ๋‘ ์ƒ์„ธํ•œ ์˜ˆ์ œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Q5: ๋ฒกํ„ฐ DB์— ์ €์žฅํ•˜๋Š” ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ์€ ๋ญ˜ ์จ์•ผ ๋ฌด๋ฃŒ๋กœ RAG๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‚˜์š”?

์˜ˆ์‚ฐ 0์› ๊ธฐ์ค€์œผ๋กœ ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ์€ ์„ธ ๊ฐ€์ง€ ์„ ํƒ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ① OpenAI text-embedding-3-small์€ 1,000ํ† ํฐ๋‹น $0.00002๋กœ ์‚ฌ์‹ค์ƒ ์ดˆ์ €๊ฐ€์ง€๋งŒ API ๋น„์šฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ② Hugging Face์˜ sentence-transformers/all-MiniLM-L6-v2๋Š” ์™„์ „ ๋ฌด๋ฃŒ ์˜คํ”ˆ์†Œ์Šค ๋ชจ๋ธ๋กœ, CPU์—์„œ๋„ ๋น ๋ฅด๊ฒŒ ๋Œ์•„๊ฐ€๋ฉฐ ๋กœ์ปฌ ์‹คํ–‰ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ③ Google์˜ text-embedding-004๋Š” Gemini API ๋ฌด๋ฃŒ ํ‹ฐ์–ด(๋ถ„๋‹น 1,500 ์š”์ฒญ, ํ•˜๋ฃจ 100๋งŒ ํ† ํฐ)๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ด ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ์— ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. Chroma + sentence-transformers + Gemini API ์กฐํ•ฉ์ด๋ฉด ์ง„์งœ ์˜ˆ์‚ฐ 0์› RAG ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž„๋ฒ ๋”ฉ ์ฐจ์› ์ˆ˜๋Š” Pinecone ์ธ๋ฑ์Šค ์ƒ์„ฑ ์‹œ ๋ฐ˜๋“œ์‹œ ๋งž์ถฐ์•ผ ํ•˜๋ฏ€๋กœ, ๋ชจ๋ธ ์„ ํƒ ์ „์— ์ฐจ์› ์ˆ˜(MiniLM์€ 384์ฐจ์›, text-embedding-3-small์€ 1,536์ฐจ์›)๋ฅผ ๋จผ์ € ํ™•์ธํ•˜์„ธ์š”.


๐ŸŽฏ ๋งˆ๋ฌด๋ฆฌ: ์ง€๊ธˆ ๋‹น์žฅ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•

๊ธด ๊ธ€์„ ์ฝ์œผ์…จ์œผ๋‹ˆ ๊ฒฐ๋ก ๋งŒ ๋”ฑ ์ •๋ฆฌํ•ด๋“œ๋ฆด๊ฒŒ์š”.

์˜ˆ์‚ฐ 0์›, ์ง€๊ธˆ ๋‹น์žฅ RAG ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด:
1. pip install chromadb sentence-transformers langchain-chroma ์‹คํ–‰
2. PersistentClient๋กœ ๋กœ์ปฌ Chroma ์‹œ์ž‘
3. all-MiniLM-L6-v2๋กœ ์ž„๋ฒ ๋”ฉ
4. ์ž‘๋™ ํ™•์ธ ํ›„ → ํ•„์š”ํ•˜๋ฉด Pinecone ๋ฌด๋ฃŒ ํ”Œ๋žœ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋น„๊ต์—์„œ ์ง„์งœ ์ค‘์š”ํ•œ ๊ฑด ๊ธฐ์ˆ  ์ŠคํŽ™์ด ์•„๋‹™๋‹ˆ๋‹ค. "์ง€๊ธˆ ๋‚ด ์ƒํ™ฉ์—์„œ ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•ด์„œ ๊ฐ€์žฅ ์˜ค๋ž˜ ๋ฌด๋ฃŒ๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ"์ด ์ตœ๊ณ ์˜ ์„ ํƒ์ด์—์š”.

Chroma๋Š” ๋‹น์žฅ ๋…ธํŠธ๋ถ์—์„œ ๋Œ๋ฆด ์ˆ˜ ์žˆ๊ณ , Pinecone์€ ๋ฐฐํฌ ์„œ๋ฒ„ ์—†์ด ํด๋ผ์šฐ๋“œ์—์„œ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ํ‹€๋ฆฐ ์„ ํƒ์ด ์•„๋‹ˆ์—์š”. ์ค‘์š”ํ•œ ๊ฑด ๊ณ ๋ฏผ๋งŒ ํ•˜๋‹ค๊ฐ€ ์‹œ์ž‘ ๋ชป ํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•˜๋Š” ๊ฒ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์ด ์ง€๊ธˆ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋Š” ์–ด๋–ค ๊ฑด๊ฐ€์š”? ๋Œ“๊ธ€๋กœ ํ”„๋กœ์ ํŠธ ์ฃผ์ œ์™€ ํ•จ๊ป˜ "Pinecone/Chroma ์ค‘ ์–ด๋–ค ๊ฑธ ์„ ํƒํ–ˆ๋Š”์ง€, ๊ทธ ์ด์œ ๊ฐ€ ๋ญ”์ง€" ๋‚จ๊ฒจ์ฃผ์‹œ๋ฉด ์ œ๊ฐ€ ์ง์ ‘ ์˜๊ฒฌ ๋“œ๋ฆด๊ฒŒ์š”. ๋‹ค์Œ ๊ธ€์—์„œ๋Š” Weaviate vs Qdrant — ๋” ์„ฑ๋Šฅ์ด ํ•„์š”ํ•ด์กŒ์„ ๋•Œ์˜ ๋ฒกํ„ฐ DB ์—…๊ทธ๋ ˆ์ด๋“œ ๊ฐ€์ด๋“œ๋ฅผ ๋‹ค๋ฃฐ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๐Ÿš€


2026๋…„ 4์›” 2์ผ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Pinecone, Chroma์˜ ํ”Œ๋žœ ์ •์ฑ…์€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ตœ์‹  ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

๋Œ“๊ธ€