๋ฒกํ„ฐ ๊ฒ€์ƒ‰ (Vector Search)

๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ๋งค์ปค๋‹ˆ์ฆ˜์€ AI๊ฐ€ ๋ถ€์ƒํ•˜๋ฉด์„œ ํ•จ๊ป˜ ๋Œ์ถœ๋˜๊ธฐ ์‹œ์ž‘ํ•œ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜๋‹ค.

ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋‚˜ ์ด๋ฏธ์ง€ ๊ฐ™์€ ๋ฏธ๋””์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์ •ํ•œ ํฌ๊ธฐ์˜ ์ˆซ์ž ๋ฒกํ„ฐ๋กœ ๋ณ€ํ™˜ํ•œ ๋’ค์— ์ €์žฅํ•ด๋†“๊ณ , ๊ฒ€์ƒ‰ํ•  ๋•Œ๋„ ์ž…๋ ฅ์„ ๋ฒกํ„ฐ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๊ฐ’์˜ ํŒจํ„ด์ด "์œ ์‚ฌํ•œ" ๊ฒƒ์„ ์ฐพ๋Š” ์‹์œผ๋กœ ์‘์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.




๋ฒกํ„ฐ ๊ฒ€์ƒ‰ (์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ)

๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฐ€์žฅ ๋งŽ์€ ์‚ฌ์šฉ์‚ฌ๋ก€๊ฐ€ ์ด๋Ÿฐ ๊ฒฝ์šฐ๋‹ค.
์ด๋ฏธ์ง€ ์œ ์‚ฌ๋„ ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ์ผ๋ จ์˜ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ด์„œ ์ด๋ฏธ์ง€๋ฅผ "๋ฒกํ„ฐ" ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ๊ทธ๊ฑธ ๋ฒกํ„ฐDB์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ฟผ๋ฆฌํ•ด์„œ ์œ ์‚ฌ์„ฑ์ด ๋†’์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด๋‹ค.

์—ฌ๊ธฐ์„œ ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒกํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ ์ž์ฒด๋ฅผ ๋ฒกํ„ฐ ์ž„๋ฒ ๋”ฉ์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.

๋‹น์—ฐํžˆ ์ด๋Ÿฐ ์‚ฌ์šฉ์‚ฌ๋ก€์— ์žˆ์–ด์„œ๋Š” ๋ฒกํ„ฐ ๋ณ€ํ™˜์„ ์œ„ํ•œ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•˜๋‹ค. ์• ์ดˆ์— AI ๊ธฐ์ˆ ์˜ ๋ณด์กฐ์šฉ์œผ๋กœ ๋“ฑ์žฅํ•œ ๋งค์ปค๋‹ˆ์ฆ˜์ด๊ธฐ๋„ ํ•˜๊ณ .




๋ฒกํ„ฐ ๊ฒ€์ƒ‰ (ํ…์ŠคํŠธ์˜ ๊ฒฝ์šฐ)

์š”์ฆ˜์€ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ๋„ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰์„ ์ ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฝค ์žˆ๋‹ค.
์ด ๊ฒฝ์šฐ์—๋„ AI ๋ชจ๋ธ์„ ํ†ตํ•ด์„œ ์ผ๋ จ์˜ ํ…์ŠคํŠธ๋ฅผ ๋ฒกํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ๊ทธ ๋ฒกํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰์— ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ฏธ์ง€๋กœ ๊ฒ€์ƒ‰์„ ๋Œ๋ฆฌ๋Š” ๊ฒƒ๊ณผ ๋ณธ์งˆ์ ์œผ๋กœ ์ ‘๊ทผ๋ฒ•์€ ๊ฐ™๋‹ค. ๋‹ค๋งŒ ๋ฐ์ดํ„ฐ์˜ ํฌ๋งท๋งŒ ๋‹ค๋ฅผ ๋ฟ์ด๋‹ค.

AI ๋ชจ๋ธ์— ๋ณ€ํ™˜์„ ์œ„์ž„ํ•˜๊ณ , ๋ชจ๋ธ์—์„œ ์ถ”์ถœํ•œ ํŒจํ„ด์„ ๊ธฐ์ค€์œผ๋กœ ์œ ์‚ฌ๋„๋ฅผ ์ฐพ์•„๋‚ธ๋‹ค.


vs ์ „ํ†ต์ ์ธ ํ…์ŠคํŠธ ๊ฒ€์ƒ‰
๋ฒกํ„ฐ ํ…์ŠคํŠธ ๊ฒ€์ƒ‰์„ ๊ธฐ์กด์˜ ๊ฒ€์ƒ‰ ๋ฐฉ๋ฒ•๊ณผ ๋น„๊ตํ•˜๋ฉด ์–ด๋–จ๊นŒ? ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ์ˆ  ์„ ํƒ์ด ๊ทธ๋ ‡๋“ฏ, ์ด๊ฒƒ๋„ trade-off๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๋ญ๊ฐ€ ๋šœ๋ ทํ•˜๊ฒŒ ์šฐ์›”ํ•˜๋‹ค๊ณ  ๋งํ•˜๊ธฐ๋Š” ์–ด๋ ต๋‹ค.

์ „ํ†ต์ ์ธ ๊ฒ€์ƒ‰
์–ดํœ˜์ ์ธ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์—„๊ฒฉํ•œ ์ฒ˜๋ฆฌ๋‚˜, ์ •ํ™•ํžˆ ํฌํ•จ๋˜๋Š” ํ…์ŠคํŠธ๋ฅผ ์ฐพ๋Š”๋‹ค๊ฑฐ๋‚˜ ํ•˜๋Š” ๋ถ€๋ถ„์—์„œ๋Š” ์ „ํ†ต์ ์ธ ๋ฐฉ์‹์ด ๋”์šฑ ๊ฐ•๋ ฅํ•˜๊ณ , ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค๋„ ์ ๊ฒŒ ๋จน๋Š”๋‹ค.
๋Œ€์‹  ์œ ์—ฐํ•œ ํ˜•ํƒœ์˜ ์ฟผ๋ฆฌ ์ ์šฉ์—๋Š” ์–ด๋ ค์›€์ด ์กด์žฌํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "red apple" ํ…์ŠคํŠธ๋ฅผ "fruit"๋กœ ์ฐพ์„ ์ˆ˜๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ฌผ๋ก  ์ด๊ฒƒ๋„ ๋ฐ์ดํ„ฐ์— ์นดํ…Œ๊ณ ๋ฆฌ๋‚˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋•์ง€๋•์ง€ ๋ฐ”๋ฅด๊ณ  ๋™์˜์–ด๋‚˜ ๊ทธ๋Ÿฐ๊ฑฐ ๋ถ™์ด๋ฉด ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ๋ชจ๋“  ์ƒ์‹์ ์ธ ๊ฒฝ์šฐ๋ฅผ ์ปค๋ฒ„ํ•˜๊ธฐ๋Š” ํž˜๋“ค๋‹ค.

๋ฒกํ„ฐ ํ…์ŠคํŠธ ๊ฒ€์ƒ‰
๋ฒกํ„ฐ ๊ฒ€์ƒ‰์„ ์‘์šฉํ•œ ํ…์ŠคํŠธ ๊ฒ€์ƒ‰์€ ์œ ์—ฐํ•œ ํ™•์žฅ์„ ๊ฐ€๋Šฅ์ผ€ ํ•œ๋‹ค. (๋ชจ๋ธ๋งŒ ์ž˜ ์“ด๋‹ค๋ฉด) fruit๋ฅผ ๊ฒ€์ƒ‰ํ–ˆ์„๋•Œ "red apple"์ด ๋†’์€ ์œ ์‚ฌ๋„๋กœ ๊ฑธ๋ฆฌ๊ฒŒ ํ•  ์ˆ˜๋„ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
ํ•˜์ง€๋งŒ ๋‹จ์ ๋„ ์žˆ๋‹ค.
์ผ๋‹จ ๊ฒ€์ƒ‰์˜ ์ •ํ™•์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค. ๋ชจ๋ธ์— ์˜ํ•ด ๊ทผ์‚ฌ์น˜๋ฅผ ๋ฝ‘์•„๋‚ด๋Š” ๊ฒƒ์ด๋ผ์„œ, "๊ตฌ์ฐŒ ์•„๋ฅด๋งˆ๋”œ๋กœ"๋ฅผ ์ณค์„๋•Œ "๊ตฌ์ฐŒ ์•„๋ฅด๋งˆ๋”œ๋กœ ๊ฐ€๋ฐฉ"์ด ๊ฐ€์žฅ ๋†’์€ ์œ ์‚ฌ๋„๋กœ ๋‚˜์˜จ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†๋‹ค. ์ด๋ ‡๊ฒŒ ์ •ํ™•ํ•˜๊ฒŒ ํฌํ•จ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š”๊ฑด ์ „ํ†ต์ ์ธ ๋ฐฉ์‹์ด ๋” ํ™•์‹คํ•˜๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋ฌด์—‡๋ณด๋‹ค. ๋ฒกํ„ฐ ๊ฒ€์ƒ‰์˜ ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ›จ์”ฌ ๋น„์‹ธ๋‹ค. ๋ชจ๋ธ ๊ตด๋ฆฌ๋Š” ๊ฒƒ๋„ ๋น„์‹ธ๊ณ , ๋ฒกํ„ฐDB ์ž์ฒด์˜ ๋ฆฌ์†Œ์Šค๋„ ๋น„์‹ผ ํŽธ์ด๋‹ค.




๋ฒกํ„ฐ ์œ ์‚ฌ๋„ ์•Œ๊ณ ๋ฆฌ์ฆ˜

์†Œ์Šค๋ฅผ ๋ฒกํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š”๊ฑด ๊ฑฐ์˜ ์ˆœ์ˆ˜ํ•œ AI ๋ชจ๋ธ์˜ ์˜์—ญ์ด์ง€๋งŒ, ๋ฒกํ„ฐ๊ฐ’๋“ค์„ ์„œ๋กœ ๋น„๊ตํ•ด์„œ ์œ ์‚ฌ๋„ ์ˆ˜์น˜๋ฅผ ๋ฝ‘์•„๋‚ด๋Š”๊ฑด ๋˜ ๋ณ„๊ฐœ์˜ ์˜์—ญ์ด๋‹ค.



ANN

๋ฒกํ„ฐ ์œ ์‚ฌ๋„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ ํ†ต์ƒ์ ์œผ๋กœ AI์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์–ด๋А ์ •๋„ ์ •ํ•ด์ ธ์žˆ๋Š”๋ฐ, ๊ทธ๊ฒŒ ANN(Approximate Nearest Neighbor)๋‹ค.
์ด๊ฑด.. ๋ญ๋ผ๊ณ  ํ•ด์•ผํ• ๊นŒ? ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์œ„ํ•ด์„œ ๋น„๊ต์˜ ์ •ํ™•๋„๋ฅผ ์กฐ๊ธˆ ํฌ๊ธฐํ•œ ์ ‘๊ทผ๋ฒ•์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

https://velog.io/@minchoul2/RecSys-ANN-Approximate-Nearest-Neighbor-%EA%B8%B0%EB%B2%95
ANN์€ ํŠน์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ํ™•ํ•˜๊ฒŒ ์ง€์นญํ•˜๋Š”๊ฑด ์•„๋‹ˆ๊ณ , ๊ทธ๋Ÿฐ ๋ฐฉ๋ฒ•๋ก  ์ž์ฒด๋ฅผ ๋งํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
์ •ํ™•๋„๋ฅผ ํฌ๊ธฐํ•˜๊ณ  ๊ทผ์‚ฌ์น˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋น ๋ฅด๊ฒŒ ์œ ์‚ฌ๋„๋ฅผ ๊ฐ€์ ธ์˜ค๊ฒŒ๋” ๊ตฌํ˜„ํ–ˆ๋‹ค๋ฉด, ๊ทธ ๋ชจ๋‘๋ฅผ ANN ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ ๋ถ€๋ฅผ ์ˆ˜ ์žˆ๋‹ค.


๊ทธ๋ฆฌ๊ณ  ๋Œ€ํ‘œ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฑฐ๋ฆฌ(distance), ํ˜น์€ ์œ ์‚ฌ๋„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ผ๋ถ€๋งŒ ์†Œ๊ฐœํ•ด๋ณด๊ฒ ๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฒกํ„ฐ ์œ ์‚ฌ๋„ ๊ณ„์‚ฐ ๋ฐฉ๋ฒ•๋ก ์—๋Š” 3๊ฐ€์ง€ ๋ฐฉํ–ฅ์„ฑ์ด ์žˆ๋‹ค. ๋‚˜๋จธ์ง€๋Š” ์ด 3๊ฐ€์ง€์˜ ๋ณ€์ข…์ผ ๋ฟ์ด๋‹ค.



A. ์œ ํด๋ฆฌ๋“œ ๊ฑฐ๋ฆฌ (Euclidean Distance)

์•ฝ๊ฐ„ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰์— ์žˆ์–ด์„œ ๋ผˆ๋Œ€๊ฐ€ ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜๋‹ค.
L2๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ๋„ ๋ถˆ๋ฆฌ๊ณ , ๋Œ€๋ถ€๋ถ„์˜ ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ต์…˜๋“ค์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณต๋œ๋‹ค.
๊ฐ€์žฅ ์ง๊ด€์ ์ด๊ณ  ์‹ฌํ”Œํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์กŒ๋‹ค.
๋น„๊ตํ•  ๋ฒกํ„ฐ๊ฐ’๋“ค์„ ์š”์†Œ๋ผ๋ฆฌ ๋บ€ ๋‹ค์Œ์— ์ œ๊ณฑํ•˜๊ณ , ๊ทธ๊ฑธ ๋‹ค์‹œ ๋”ํ•ด์„œ ๋‹ค์‹œ ๋ฃจํŠธ ์”Œ์šฐ๋Š” ๊ฒƒ์ด๋‹ค. a์™€ b๊ฐ€ ๊ธธ์ด 3์งœ๋ฆฌ ๋ฒกํ„ฐ๋ผ๋ฉด, ์ด๋Ÿฐ ์‹์ด ๋œ๋‹ค.
root( (a[0]-b[0])^2 + (a[1]-b[1])^2 + (a[2]-b[2])^2 )
๊ทธ๋ฆฌ๊ณ  ์ด ๊ฒฐ๊ณผ๊ฐ’์ด ๊ฑฐ๋ฆฌ(distance) ๊ฐ’์ด ๋˜๊ณ , ์ด ๊ฐ’์ด ์ž‘์„ ์ˆ˜๋ก ์œ ์‚ฌ๋„๊ฐ€ ๋†’์€, ๊ฐ€๊นŒ์šด ๋ฒกํ„ฐ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

๋‹จ์ˆœํ•˜๊ณ  ์ ์šฉํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ, ์ˆœ์ˆ˜ํ•œ ์š”์†Œ๊ฐ’๋“ค์˜ ํฌ๊ธฐ์— ๋ฏผ๊ฐํ•ด์„œ AI ๊ธฐ๋ฐ˜ ๋ถ„์•ผ์—์„œ ์ง€๋ฐฐ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€๋Š” ์•Š๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์‹ค์งˆ์ ์œผ๋กœ๋Š” ์ˆœ์ˆ˜ํ•œ ๋ฒกํ„ฐ๊ฐ„ ๊ฑฐ๋ฆฌ๋ณด๋‹จ ๋ฒกํ„ฐ์˜ ๋ฐฉํ–ฅ์ด ๋” ์ค‘์š”ํ•œ ๊ฒฝ์šฐ๋„ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.



B. ์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„ (Cosine Similiarity)

๋‘ ๋ฒกํ„ฐ ์‚ฌ์ด ๊ฐ๋„์˜ ์ฝ”์‚ฌ์ธ์„ ์ธก์ •ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.

๋ฒกํ„ฐ ๊ฐ„ ๊ฑฐ๋ฆฌ ํฌ๊ธฐ์— ๋ฏผ๊ฐํ•˜์ง€ ์•Š๊ณ , ๋ฒกํ„ฐ์˜ ๋ฐฉํ–ฅ์ด ์–ผ๋งˆ๋‚˜ ๋น„์Šทํ•œ์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค๋Š”๊ฒŒ ํŠน์ง•์ด๋‹ค.
๊ทธ๋ž˜์„œ ๋ชจ๋ธ์„ ํ™œ์šฉํ•œ Vector search์—์„œ๋Š” ์ฝ”์‚ฌ์ธ ๊ฑฐ๋ฆฌ, ํ˜น์€ ์ฝ”์‚ฌ์ธ์— ๊ธฐ๋ฐ˜ํ•œ ์œ ์‚ฌ๋„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฝค ์‚ฌ์šฉํ•œ๋‹ค.



C. dot product

negative inner product๋‚˜ ๊ทธ๋ƒฅ inner product๋กœ๋„ ๋ถˆ๋ฆฐ๋‹ค.
๋ฒกํ„ฐ์˜ ํฌ๊ธฐ์™€ ๋‘ ๋ฒกํ„ฐ ์‚ฌ์ด์˜ ๊ฐ๋„์˜ ์ฝ”์‚ฌ์ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฒกํ„ฐ ์œ ์‚ฌ๋„๋ฅผ ์ธก์ •ํ•˜๋Š” ์ ‘๊ทผ๋ฒ•์ด๋‹ค.

์ด๊ฑด ์ฝ”์‚ฌ์ธ ๊ฑฐ๋ฆฌ์™€ ์œ ํด๋ฆฌ๋“œ ๊ฑฐ๋ฆฌ์˜ ํŠน์ง•์ด ์–ด๋А ์ •๋„ ํ˜ผ์žฌ๋œ ๊ฒฝํ–ฅ์ด ์žˆ๋‹ค. ๋ฒกํ„ฐ์˜ ๋ฐฉํ–ฅ์—๋„ ๋ฏผ๊ฐํ•˜์ง€๋งŒ, ๋ฒกํ„ฐ์˜ ๊ฑฐ๋ฆฌ์—๋„ ์˜ํ–ฅ์„ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์š”์ฆ˜์—๋Š” ์ด๊ฒŒ vector search์—์„œ ๊ฐ€์žฅ ๋†’์€ ๋นˆ๋„๋กœ ์“ฐ์ด๋Š” ๊ฒƒ ๊ฐ™๋”๋ผ.

๋ณ€์ข…์œผ๋กœ๋Š” max inner product ๊ฐ™์€ ๊ฒƒ๋„ ์žˆ๋‹ค. (Elasticsearch์˜ ๊ฒฝ์šฐ)




๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

ANN์— ๊ธฐ๋ฐ˜ํ•œ ๊ทผ์‚ฌ์น˜ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ๋™์ž‘์€ ์ผ๋ฐ˜์ ์ธ DB ๊ตฌ์กฐ์—์„œ๋Š” ํšจ์œจ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค.
์ด๊ฑด ์• ์ดˆ์— ๋™๋“ฑ ๊ฒ€์ƒ‰๋„ ์•„๋‹ˆ๊ณ , ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ์˜ ์ •๋ ฌ ๊ฒ€์ƒ‰๋„ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋ž˜์„œ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ๋ฒกํ„ฐ ๊ฒ€์ƒ‰์„ ์ง€์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์„ ํƒ์ด๋‹ค.

์ „๋ฌธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ์„œ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ๊ฒƒ์€ milvus, qdrant, pinecone ์ •๋„๊ฐ€ ์žˆ๋‹ค.
milvus์™€ qdrant๊ฐ€ ์˜คํ”ˆ์†Œ์Šค๋กœ์„œ๋Š” ๊ฐ€์žฅ ์ธ์ง€๋„๊ฐ€ ์žˆ๊ณ , pinecone์€ ์˜คํ”ˆ์†Œ์Šค๊ฐ€ ์•„๋‹ˆ๋‹ค.
milvus์™€ qdrant ๋‘˜ ๋‹ค ์ˆ˜์‹ญ์–ต๊ฐœ ๋‹จ์œ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ธ๋“ค๋งํ•˜๋Š” ๊ฒƒ์„ ์ „์ œ๋กœ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰์„ ์ง€์›ํ•œ๋‹ค.

๋น„-์ „๋ฌธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ค‘์—์„œ๋„ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ๋“ค์ด ์žˆ๋‹ค.
Elasticsearch, PostgreSQL, Redis, MongoDB, CassandraDB ์ •๋„๊ฐ€ ๋Œ€ํ‘œ์ ์ด๋‹ค.
์ด ์ค‘์—์„œ๋Š” Elasticsearch๊ฐ€ ๊ฐ€์žฅ ์œ ๋ช…ํ•˜๊ณ , ํ”„๋กœ๋•์…˜ ์‚ฌ๋ก€์—์„œ๋„ ๋งŽ์ด ์“ฐ์ธ๋‹ค.
๊ทธ ๋‹ค์Œ ์ธ์ง€๋„๋กœ๋Š” PostgreSQL์˜ ํ™•์žฅ์ธ pgvector๊ฐ€ ์žˆ๊ณ , ๋ฉ”์ธ DB๋ฅผ PostgreSQL๋กœ ์“ฐ๋˜ ๊ณณ์—์„œ๋Š” ๊ฐ€์žฅ ์‰ฝ๊ฒŒ ๋„์ž…ํ• ๋งŒํ•˜๋‹ค.
๊ทธ ์™ธ์—๋„ MongoDB, Redis ๋“ฑ์ด Vector Search๋ฅผ ์ง€์›ํ•˜๋‚˜, ๊ทธ๋ ‡๊ฒŒ ๊ฐ•๋ ฅํ•˜๋‹ค๋Š” ๋ง์€ ๋“ค์–ด๋ณด์ง€ ๋ชปํ•œ ๊ฒƒ ๊ฐ™๋‹ค.
Redis๋Š” ํ†ต์งœ ๋ฉ”๋ชจ๋ฆฌ๋ผ์„œ ๊ด€๋ฆฌ๋„ ์–ด๋ ค์šด๋ฐ, ๋ฒค์น˜๋งˆํฌ์ƒ์œผ๋กœ ์„ฑ๋Šฅ๋„ ๊ทธ๋ ‡๊ฒŒ ์ข‹์€ ํŽธ์€ ์•„๋‹Œ๊ฑฐ๊ฐ™๋”๋‹ค.

์„ฑ๋Šฅ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฆฌ์†Œ์Šค ํšจ์œจ์„ฑ, ํ˜น์€ ๊ธฐ๋Šฅ ์ˆ˜์ค€์—์„œ๋„ ๊ฝค ๋งŽ์€ ์ฐจ์ด๊ฐ€ ๋‚œ๋‹ค. ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ ์ˆ˜์ค€์„ ์ž˜ ๋ณด๊ณ  ํŒ๋‹จํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฒกํ„ฐ๊ฒ€์ƒ‰ ์‹œ์— ์‚ฌ์ „ ํ•„ํ„ฐ๋ง์„ ๊ฑธ์–ด์•ผ ํ•œ๋‹ค๋ฉด milvus, qdrant ๊ฐ™์€ ์ „๋ฌธ VectorDB๋‚˜ Elasticsearch๋ฅผ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ๋‹ฌ์„ฑ ๊ฐ€๋Šฅํ•˜๋‹ค. pgvector ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ๋ฒกํ„ฐ๊ฒ€์ƒ‰์„ ํ• ๋•Œ ๋ฒกํ„ฐ ๋‹จ์ผ ํ•„๋“œ์— ๋Œ€ํ•ด์„œ๋งŒ ์ธ๋ฑ์Šค๋ฅผ ๊ฑธ ์ˆ˜ ์žˆ๋‹ค.




์ฐธ์กฐ
https://stackoverflow.com/questions/49250963/vectorizing-algorithms
https://danawalab.github.io/elastic/2022/07/08/ES-Similarity-Search.html
https://www.elastic.co/search-labs/integrations/vectorize-io
https://stackoverflow.com/questions/76854425/whats-the-difference-between-a-vector-database-and-full-text-search
https://aws.amazon.com/ko/what-is/vector-databases/
https://www.meilisearch.com/blog/full-text-search-vs-vector-search
https://labelbox.com/blog/how-vector-similarity-search-works/
https://www.elastic.co/search-labs/blog/vector-search-set-up-elasticsearch
https://www.pinecone.io/learn/vector-similarity/
https://docs.timescale.com/ai/latest/key-vector-database-concepts-for-understanding-pgvector/