[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/