[Vector Search] Vector์˜ ์–‘์žํ™” (Quantization)

์–‘์žํ™”(quantization)๋Š” ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ๋ฐ ๋ฒกํ„ฐ DB์—์„œ ๋ฒกํ„ฐ ๊ฐ’์„ ํšจ์œจ์ ์œผ๋กœ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์••์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•๋“ค์„ ๋งํ•œ๋‹ค.




์™œ ์–‘์žํ™”๊ฐ€ ํ•„์š”ํ•œ๊ฐ€?

๋ฒกํ„ฐ DB์—์„œ ๋ฒกํ„ฐ ์ธ๋ฑ์Šค๋Š” ๊ทธ๋ž˜ํ”„ ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ๊ฐ€ ๋˜๋Š”๋ฐ, ์ด๊ฒŒ ๋‹ค ๋ฐฐ์—ด ๊ฐ’์ด๋‹ค๋ณด๋‹ˆ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰๋„ ๋งŽ๊ณ , ๋น„๊ต ์—ฐ์‚ฐ์— ์†Œ๋ชจ๋˜๋Š” ๋ฆฌ์†Œ์Šค๋„ ๋งŽ์€ ํŽธ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ธธ์ด๊ฐ€ 1536์งœ๋ฆฌ ๋ฐฐ์—ด์„ ์“ด๋‹ค๋ฉด ๋ฐ์ดํ„ฐ ํ•˜๋‚˜๋‹น 6kb ์ •๋„๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ์…ˆ์ธ๋ฐ, ๊ทธ๋Ÿฌ๋ฉด ์ด๊ฒŒ 100๋งŒ๊ฐœ๋งŒ ์Œ“์—ฌ๋„ 6๊ธฐ๊ฐ€์–ด์น˜๊ฐ€ ๋œ๋‹ค.

์–‘์žํ™”๋Š” ์ธ๋ฑ์Šค ๊ตฌ์„ฑ์‹œ์— ์†Œ๋ชจ๋˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ค„์ด๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋ฒกํ„ฐ ๊ฐ’์„ ๊ฐ€๊ณตํ•œ๋‹ค.
์—ฌ๊ธฐ์—๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ 3๊ฐ€์ง€ ์ •๋„์˜ ๋ฐฉ๋ฒ•์ด ์žˆ๊ณ , trade-off๋˜๋Š” ์ง€์ ๋“ค์ด ๋‹ค ๊ฐ์ž ๋‹ค๋ฅด๋‹ค. ๊ณต์งœ๋กœ ์ฃผ์–ด์ง€๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž˜ ์•Œ๊ณ  ์„ ํƒํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.




1. Binary Quantization

Binary ์–‘์žํ™”๋Š” ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ํ˜•ํƒœ์˜ ์–‘์žํ™” ๊ธฐ๋ฒ•์ด๋‹ค.

๋ณ„๋กœ ์„ค๋ช…ํ•  ๊ฒƒ๋„ ์—†๋‹ค.
๋ฒกํ„ฐ์˜ ๊ฐ ์š”์†Œ ๊ฐ’์ด, 0 ์ดํ•˜๋ฉด 0์œผ๋กœ ๊ฐ•์ œ๋กœ ๊ฐ’์„ ๋‹ค ๋ฒ„๋ฆฌ๊ณ , 0์„ ์ดˆ๊ณผํ•˜๋ฉด 1๋กœ ๊ณ ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.


์ด๊ฑด ๋‹น์—ฐํžˆ ๊ต‰์žฅํžˆ ๋งŽ์€ ์ •๋ณด ์†์‹ค์ด ๋ฐœ์ƒํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ๊ธธ์ด๊ฐ€ ๊ต‰์žฅํžˆ ๊ธด ๋ฒกํ„ฐ๋ผ๋ฉด 0,1 ํŒจํ„ด๋งŒ์œผ๋กœ๋„ ์–ด๋А ์ •๋„์˜ ์œ ์‚ฌ๋„๋ฅผ ์œ ์ง€ํ•  ์ˆ˜๋Š” ์žˆ์–ด์„œ ์ ์šฉํ•˜๋Š”๊ฒŒ ์•„์ฃผ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋Š” ์•Š๋‹ค. ๋‹ค๋งŒ ๋ฒกํ„ฐ์˜ ๊ธธ์ด๊ฐ€ ์ตœ์†Œํ•œ 1024 ์ด์ƒ์€ ๋˜์–ด์•ผ ํ•œ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์€ 32๋ฐฐ ์ •๋„๊นŒ์ง€ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ , ๊ฒ€์ƒ‰ ์‹œ๊ฐ„๋„ ์ตœ๋Œ€ 40๋ฐฐ ์ •๋„๊นŒ์ง€ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
์›Œ๋‚™ ํ™”๋ˆํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์••์ถ•ํ•˜๋‹ค๋ณด๋‹ˆ, ์ด๊ฒƒ๋งŒํผ ๊ฐ€๋ฒผ์šฐ๋ฉด์„œ๋„ ๋น ๋ฅธ ์–‘์žํ™” ๊ธฐ๋ฒ•์€ ์—†๋‹ค.

ํ•˜์ง€๋งŒ ์†์‹ค๋Ÿ‰์ด ๊ต‰์žฅํžˆ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์„ฃ๋ถ€๋ฅด๊ฒŒ ์„ ํƒํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ค‘์ธ ๋ชจ๋ธ์— ๋Œ€ํ•ด์„œ๋„ ์ถฉ๋ถ„ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค. ๋ชจ๋ธ์— ๋”ฐ๋ผ์„œ ์ž˜ ๋งž์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค.




2. Scalar Quantization

์Šค์นผ๋ผ ์–‘์žํ™”๋Š” ์–‘์žํ™” ๊ธฐ๋ฒ• ์ค‘์—์„œ ๊ฐ€์žฅ ๊ท ํ˜• ์žกํžŒ ๋ฐฉ๋ฒ•์ด๋‹ค.
์ •ํ™•๋„, ์„ฑ๋Šฅ, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๋“ฑ์ด ๋‹ค ๋ฌด๋‚œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ƒฅ ๋„์ž…ํ•ด๋„ ๋Œ€์ฒด๋กœ๋Š” ํฐ ๋ฌด๋ฆฌ๊ฐ€ ์—†๋‹ค.

์ด๊ฑด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฒกํ„ฐ์˜ ๋ถ€๋™์†Œ์ˆ˜์  ๊ฐ’๋“ค์„ ์ •์ˆ˜ ํ˜•ํƒœ๋กœ ์กฐ์ •ํ•ด์„œ ์••์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ทจํ•œ๋‹ค.

์‹ค์ˆ˜๋ฅผ ์ •์ˆ˜๋กœ ๋ฐ”๊พธ๋Š”๊ฒŒ ๋ณ„๊ฑฐ์ธ๊ฐ€ ์‹ถ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, 4๋ฐ”์ดํŠธ์งœ๋ฆฌ single ๋ถ€๋™์†Œ์ˆ˜์ ์„ 1๋ฐ”์ดํŠธ์งœ๋ฆฌ ์ •์ˆ˜๋กœ ๋ฐ”๊พผ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด๋ฉด ๊ณ„์‚ฐ์ด ๋น ๋ฅผ ๊ฒƒ์ด๋‹ค.

์Šค์นผ๋ผ ๋‹จ์œ„๋ฅผ 1๋ฐ”์ดํŠธ๋กœ ํ•œ๋‹ค๊ณ  ์น˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์€ ์ตœ๋Œ€ 4๋ฐฐ๊นŒ์ง€ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ์†๋„ ํ–ฅ์ƒ์€ ์ตœ๋Œ€ 2๋ฐฐ ์ •๋„๋‹ค.
์ •ํ™•๋„๊ฐ€ ์•ฝ๊ฐ„ ์†์‹ค๋˜๊ธด ํ•˜์ง€๋งŒ binary ์–‘์žํ™”์— ๋น„ํ•˜๋ฉด ๋ฏธ๋ฏธํ•œ ํŽธ์ด๋‹ค. ๋Œ€์ฒด๋กœ 99% ์ •๋„๋Š” ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.




3. Product Quantization

Product ์–‘์žํ™”๋Š” ์••์ถ•๋ฅ  ์ธก๋ฉด์—์„œ ๊ฐ€์žฅ ๊ทน๋‹จ์ ์ธ ๋ฐฉ๋ฒ•์ด๋‹ค.

์••์ถ•๋ฅ ์€ ์ตœ๋Œ€ 64๋ฐฐ๊นŒ์ง€ ๋ฝ‘์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ฒ˜๋ฆฌ์†๋„๋Š” ๋ฐ˜ํ† ๋ง‰์ด ๋‚  ์ˆ˜ ์žˆ๊ณ , ์ •ํ™•๋„๋„ 50%~70% ์ •๋„๋กœ ๋‚ฎ์€ ํŽธ์ด๋‹ค.
๊ทธ๋ž˜์„œ ์‹ค์‹œ๊ฐ„ ์„œ๋น„์Šค์— ๋„์ž…ํ•˜๊ธฐ์—๋„ ๋‚œ๊ฐํ•˜๊ณ , ์ •๋ง ๊ทน๋‹จ์ ์ธ ์ƒํ™ฉ์ด ์•„๋‹ˆ๋ผ๋ฉด ๊ฐ€์žฅ ๋‚˜์ค‘์— ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

Product ์–‘์žํ™”์—์„œ๋Š”, ์ผ๋‹จ ๋ฒกํ„ฐ๋ฅผ ๋ถ€๋ถ„์ง‘ํ•ฉ์œผ๋กœ ์ ๋‹นํžˆ ๋‚˜๋ˆˆ๋‹ค.

์ด๋•Œ ๊ฐ ๋ถ€๋ถ„์ง‘ํ•ฉ์„ codebook์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.


๊ทธ๋ฆฌ๊ณ  ๊ฐ codebook์˜ ์ค‘์‹ฌ ๊ฐ’์„ ๊ณ„์‚ฐํ•ด์„œ ์›๋ณธ ๋ฒกํ„ฐ ๊ฐ’์„ ๋ฒ„๋ฆฌ๊ณ , ๊ทธ ๋ฒกํ„ฐ๋ฅผ ๋Œ€ํ‘œํ•˜๋Š” ์ (dot)์„ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์ค‘์‹ฌ์ ๋“ค์„ ์ตœ์ข… ๋ฒกํ„ฐ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์ตœ์ข…์ ์œผ๋กœ 1024 ์ฐจ์›์˜ ๋ฒกํ„ฐ๊ฐ€ 128 ์ฐจ์›์˜ ๋ฒกํ„ฐ๋กœ ์ปดํŒฉํŠธํ•˜๊ฒŒ ์ค„์–ด๋“ ๋‹ค.

์šฐ๊ฒฉ๋‹ค์ง์œผ๋กœ ์ค„์ด๋Š” ๋งŒํผ ์ •ํ™•๋„๋Š” ๊ฐ€์žฅ ๋‚ฎ๋‹ค.




์ •ํ™•๋„ ์†์‹ค๊ณผ Rescoring

์œ„์—์„œ ์†Œ๊ฐœํ•œ ์–‘์žํ™”์˜ ๊ณตํ†ต์ ์ธ ๋‹จ์ ์€, ์–ด์จŒ๋“  ์ •ํ™•๋„๊ฐ€ ์†์‹ค๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
VectorDB์—์„œ๋Š” ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด์„œ OverSampling๊ณผ Rescoring์ด๋ž€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ณค ํ•œ๋‹ค.


์˜ค๋ฒ„์ƒ˜ํ”Œ๋ง์€ ํ›„๋ณด๋ฅผ ๋„‰๋„‰ํ•˜๊ฒŒ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š” ์ตœ์ข… k ๊ฐœ์ˆ˜๊ฐ€ 4์ด๋ฉด ๋„‰๋„‰ํ•˜๊ฒŒ 8์ด๋‚˜ 80์ฏค ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ๋Š” ๊ทธ ํ›„๋ณด๊ตฐ ๋‚ด์—์„œ ๋‹ค์‹œ ๋น„๊ต๋ฅผ ํ•œ๋‹ค. ๋‹จ, ์ด ๋•Œ๋Š” ์–‘์žํ™”๋œ ๊ฐ’์„ ์“ฐ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋””์Šคํฌ์—์„œ ์›๋ณธ ๋ฒกํ„ฐ๋ฅผ ๊บผ๋‚ด์™€์„œ ์œ ์‚ฌ๋„ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค.

์ถ”๊ฐ€ ์ฝ๊ธฐ ๋ถ€ํ•˜๊ฐ€ ์ƒ๊ธฐ์ง€๋งŒ, ์ •ํ™•๋„๊ฐ€ ์ƒ์Šนํ•˜๊ณ , ๋ณดํ†ต์˜ ๊ตฌํ˜„์—์„œ ์›๋ณธ ๋ฒกํ„ฐ๋Š” ๋””์Šคํฌ์—๋งŒ ์ €์žฅํ•ด๋‘๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.



https://qdrant.tech/documentation/guides/quantization/
https://www.unite.ai/comparing-quantization-techniques-for-scalable-vector-search/
https://www.mongodb.com/blog/post/binary-quantization-rescoring-96-less-memory-faster-search
https://qdrant.tech/articles/what-is-vector-quantization/