Connect AI to Billions of Legal Documents โ Simon Eskildsen, turbopuffer & Jacob Lauritzen, Legora
ํ ์ค ํต์ฌ
Legora๋ ์์ญ์ต ๊ฐ์ ๋ฒ๋ฅ ๋ฌธ์๋ฅผ ๋ค๋ฃจ๋ ๊ฒ์์ ์ํด ์ธํ๋ผ๋ฅผ ์ฌ๋ฌ ๋ฒ ๊ฐ์์์ ๋์, ํ๋ก์ ํธ๋ณยท์ง์ญ๋ณยท๊ท์ ๋ณ ๊ฒฉ๋ฆฌ์ ๋ฎ์ ์ง์ฐ์๊ฐ์ ๋์์ ๋ง์กฑํ๋ turbopuffer ์ค์ฌ ๊ตฌ์กฐ๋ก ์ ์ฐฉํ๋ค.
์๊ฐ๋ณ ์์ฝ
-
0:00
Legora๊ฐ ํ๋ ์ผ๊ณผ ๋ ๊ฐ์ง ๋ฒ๋ฅ ๊ฒ์ Legora๋ ๊ณ์ฝ ๊ฒํ , ์ ๊ท ๊ณ์ฝ ์์ฑ, ๋ฒ๋ฅ ๋ฆฌ์์น, ํ์ ์ ํ ํ๋ซํผ์์ ์ฒ๋ฆฌํ๋ ๋ฒ๋ฅ ์ฉ AI ํ์ ๋๊ตฌ๋ค. ๊ฒ์์ ํ๋ก์ ํธ ๋จ์๋ก ๋ซํ ๋ฌธ์ ์งํฉ์ ์ฐพ๋ ๋ฐฉ์๊ณผ, ํ๋กยท๋ฒ๋ นยท๊ท์ ์ ์ฒด๋ฅผ ๊ฐ๋ก์ง๋ฅด๋ ๊น์ ๋ฆฌ์์น ๋ฐฉ์์ ๋ ์ถ์ผ๋ก ๋๋๋ค.
-
2:32
ํ๋์ ๊ฒ์ ํด๋ฌ์คํฐ์์ ์ง์ญ๋ณ ๋ถ๋ฆฌ๋ก ์ฒ์์๋ ๋ชจ๋ ๊ฒ์๊ณผ ์ธ๋ฑ์ฑ์ ๋จ์ผ Elasticsearch ํด๋ฌ์คํฐ์ ๋จ์ผ blob ์ ์ฅ์์ ์ฌ๋ ธ๊ณ , ์ดํ ๋ฏธ๊ตญยท์ ๋ฝยท์์์ํํ์์ฒ๋ผ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ง์ญ ์๊ฑด์ด ์๊ธฐ์ ์ง์ญ๋ณ๋ก Elasticsearch๋ฅผ ๋ณต์ ํ๋ ๊ตฌ์กฐ๋ก ๋ฐ๋์๋ค. ์ด ๋ฐฉ์์ ๋จ์ํ์ง๋ง ์ด์ ๋ถ๋ด์ด ์ปค์ง๊ณ ์ค๋ณต ๊ตฌ์ฑ์ด ๋์ด๋๋ ํ๊ณ๊ฐ ์์๋ค.
-
4:00
๊ธฐ์ ์ด ๋งํ๋ ๋ฌผ๋ฆฌ์ ๊ฒฉ๋ฆฌ์ ์๋ฏธ ๋ํ ์ํ๊ณผ ์ด๋ํ ๋กํ์ ๋ฐ์ดํฐ์ ๋ํ ์์ ํ ๋ฌผ๋ฆฌ์ ๊ฒฉ๋ฆฌ์ ๊ณ ๊ฐ ๊ด๋ฆฌํ ์ํธํ ํค๋ฅผ ์๊ตฌํ๋ค. ์ฆ, ๊ฐ ๊ณ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๋ DB์ฒ๋ผ ์ทจ๊ธํ๊ณ , ๊ณ ๊ฐ์ด ํค๋ฅผ ํ์ํ๋ฉด ๋ณตํธํ๊ฐ ๋ถ๊ฐ๋ฅํด์ผ ํ๋ค.
-
4:48
๊ฒ์์ ์ด๋ฏธ ์ฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ด๋ ๊ธฐ์กด์ OLTP์ฉ์ผ๋ก ์ฐ๋ Postgress์ ๊ฒ์๊น์ง ์น๊ธฐ ์ํด PG vector์ disk ๊ธฐ๋ฐ์ TS vector๋ฅผ ์ฌ์ฉํ๊ณ , ๋ฌธ์ ์ฒญํฌ ํ ์ด๋ธ์ 4,000๊ฐ ํํฐ์ ์ผ๋ก ๊ทน๋จ์ ์ผ๋ก ๋ถํ ํด ํ๋ก์ ํธ ํค๋ฅผ ๋ถ์ฐํ๋ค. ์ด์ ์์คํ ์ ํ๋๋ก ์ค์ธ ์ฅ์ ์ ์์์ง๋ง, ๊ฒ์ ์ฑ๋ฅ๊ณผ ๋น์ฉ ์ธก๋ฉด์ ํ๊ณ๊ฐ ๊ณง ๋๋ฌ๋ฌ๋ค.
-
5:38
๋จ๊ฑฐ์ด ํ๋ก์ ํธ์ ์ฐจ๊ฐ์ด ํ๋ก์ ํธ๊ฐ ์บ์๋ฅผ ํ๋ ๋ฌธ์ ์์ฃผ ์กฐํ๋๋ ํ๋ก์ ํธ์ ๊ฑฐ์ ์กฐํ๋์ง ์๋ ํ๋ก์ ํธ๊ฐ ๊ฐ์ ํํฐ์ ์ ์์ด๋ฉด์ ํํฐ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๊ณ , ์กฐํ ๋๋ง๋ค Postgress ์บ์๊ฐ ๊ณ์ ๋ฐ๋ ค๋ฌ๋ค. ๊ทธ ๊ฒฐ๊ณผ ๊ฒ์๊ณผ ์ ์ฌ์ P99๊ฐ 100 milliseconds ์์ค์์ 20 seconds๊น์ง ์น์์ ์ฌ์ฉ์ ๊ฒฝํ์ด ํฌ๊ฒ ์ ํ๋๋ค.
-
6:40
ํ๋ก์ ํธ๋ง๋ค namespace๋ฅผ ๋๋ฉฐ ํด๊ฒฐํ ๊ฒ turbopuffer๋ก ์ฎ๊ธด ๋ค์๋ ํ๋ก์ ํธ๋ณ๋ก ํ๋์ namespace๋ฅผ ๋๋ ๋ฐฉ์์ผ๋ก ๋ฐ๊ฟจ๊ณ , ๊ทธ ๊ฒฐ๊ณผ BM25 ๊ธฐ๋ฐ์ ๊ฒ์ ํ์ง๊ณผ ์๋ต ์ง์ฐ์ด ํฌ๊ฒ ๊ฐ์ ๋๋ค. ํ๋์ turbopuffer ํด๋ฌ์คํฐ๋ง ์ด์ํ๋ฉด ๋์ด ๊ด๋ฆฌ๊ฐ ๋จ์ํด์ก๊ณ , ์ฌ์ฉ๋์ง ์๋ ํ๋ก์ ํธ๋ blob์ ๋ ์ฑ๋ก ๋ ์ ์์ด ๋น์ฉ๋ ์ค์๋ค.
-
7:56
๊ฐ์ฒด ์ ์ฅ์๋ก ์ง์ ์ฐ๊ธฐ turbopuffer๋ ์ฐ๊ธฐ ์ ๋์คํฌ ๋ณต์ ๋ Paxos ์์ด ๋ฐ๋ก S3 ๊ฐ์ object storage์ ๊ธฐ๋กํ๋ ๊ตฌ์กฐ๋ฅผ ํํ๋ค. ๋์ ์ฝ๊ธฐ ์ฑ๋ฅ์ ์งํค๊ธฐ ์ํด write-ahead log์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ธ๋ฑ์ฑ์ ์ฌ์ฉํ๊ณ , ์กฐํ๋ memory cache, NVME SSD cache, object storage ์์ผ๋ก ์ต์ ์๋ณต ํ์๋ก ์ฒ๋ฆฌํ๋ค.
-
9:58
์ํธํ์ ๋จ์๋ฅผ namespace๋ก ๋๋ ์ด์ namespace๋ฅผ ๋ถ๋ฆฌ ๋จ์๋ก ์ผ์ผ๋ฉด ํ ์ด๋ธ๋ง๋ค ๋ค๋ฅธ ํค๋ก ์ํธํํ๊ณ , ๋ฒํท๋ ๊ณ ๊ฐ๋ณ๋ก ๋๋ ์ ์์ด ๊ท์ ์ฐ์ ์ ๊ฒฉ๋ฆฌ ์๊ตฌ๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ๋ง์กฑํ๋ค. Legora๋ SSD cache๋ฅผ ์ํธํํด์ผ ํ๋ ์ํฉ์์ ์์ disk cache๋ฅผ ๊บผ๋ ์ฑ๋ฅ์ด ์ถฉ๋ถํ ๋์, ๋ฉํฐํ ๋์์ ๋ฐ์ดํฐ ๋ถ๋ฆฌ๋ฅผ ๋ ๊น๋ํ๊ฒ ์ ์งํ ์ ์์๋ค.
-
12:07
๋ฒ๋ฅ ๋ฆฌ์์น์ 100์ต ๊ฐ ๋ฒกํฐ ๋ฒ๋ฅ ๋ฆฌ์์น๋ ์์ญ์ต~100์ต ๊ฐ ๋ฒกํฐ๋ฅผ ํฅํด ๊ฐ๋ ์ด๋ํ ์ฝํผ์ค๋ฅผ ๋ค๋ฃจ๋ฉฐ, ์ง์๊ฐ fan-out์ผ๋ก ์ฌ๋ฌ ํ์ ์ง์๋ก ๋์ด๋ QPS๊ฐ ๊ธ๋ฑํ ์ ์๋ค. ๋ฒ์ ๊ณ์ธต์ฑ, ์๊ณ์ด์ ์ ํจ์ฑ, ์์ธ ๊ท์ ์ด ์ฝํ ๊ตฌ์กฐ๋ผ์, ๊ดํ ๊ถ๋ณ namespace ๋ถ๋ฆฌ์ ๋๋ฆฐ cold blob ์กฐํ๋ฅผ ํ์ฉํ๋ ์ค๊ณ๊ฐ ์ ๋ง๋๋ค.
-
14:25
๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ํผ๋จ๋ฆฌ๋ ๋ฐฉ์ ์์ฃผ ์กฐํ๋๋ ๋ฐ์ดํฐ๋ ๋ฉ๋ชจ๋ฆฌ ์ชฝ์, ๋ ์์ฃผ ์ฐ๋ ๋ฐ์ดํฐ๋ ๋ ์๋ ๊ณ์ธต์ ๋๋ ๊ฒ์ด turbopuffer์ ํต์ฌ ์ฒ ํ์ด๋ค. ๋ฐ์ดํฐ๊ฐ ์ด๋ ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต์ ์์ด์ผ ํ๋์ง๋ฅผ ์กฐ์ ํด round trip, ์ง์ฐ์๊ฐ, ๋น์ฉ์ ๊ท ํ์ ๋ง์ถ๋ค.
-
15:30
๊ฐ์ฒด ์ ์ฅ์์์ ๊ทธ๋ํ๋ณด๋ค ํธ๋ฆฌ๊ฐ ์ ๋ฆฌํ ์ด์ ๋ฒกํฐ ๊ฒ์์ graph๋ก ๊ตฌํํ๋ฉด object storage๋ ๋์คํฌ์ฒ๋ผ ๋์ ์ง์ฐ์ ์ ์ฅ์์์ ๋ ธ๋ ํ์๋ง๋ค ๋น์ฉ์ด ์ปค์ง๋ค. turbopuffer๋ ๋ฒกํฐ๋ฅผ ํด๋ฌ์คํฐ์ ํด๋ฌ์คํฐ๋ก ๋ฌถ์ด tree ๊ตฌ์กฐ๋ก ์กฐ์งํจ์ผ๋ก์จ, ์์ centroid๋ ๋ฉ๋ชจ๋ฆฌ ๊ฐ๊น์ด์ ๋๊ณ ์ค์ ๋ฐ์ดํฐ๋ SSD์ ๋๋ ๋ ์ผ ๋ฐฉ์์ผ๋ก ๊ฒ์ํ๋ค.
-
17:45
ํํ ์คํธ ๊ฒ์์ด ์ค์ ๋ก ๋์ํ๋ ๋ฐฉ์ ํํ ์คํธ ๊ฒ์์ ๊ฐ ํ ํฐ์ ํด์๋งต ํค๋ก ๋๊ณ , ๊ทธ ๊ฐ์ ๋ฌธ์ ID ์งํฉ์ ์ ์ฅํ ๋ค ๊ต์งํฉ์ ๊ณ์ฐํ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค. ๊ฒ์ ๋น์ฉ์ ํต์ฌ์ round trip๊ณผ ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ์ ์ค์ด๋ ๊ฒ์ด๋ฉฐ, ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ํํ ์คํธ ๊ฒ์์ ๋ฒกํฐ ๊ฒ์๋ณด๋ค ๋ ๋ณต์กํ๊ณ ๋น์ธ์ง ์ ์๋ค.
์ค๋ฌด ์ธ์ฌ์ดํธ
- ๋ฒ๋ฅ ยท๊ธ์ต์ฒ๋ผ ๊ท์ ๊ฐ ๊ฐํ ๋๋ฉ์ธ์์๋ ๊ฒ์ ์ํคํ ์ฒ๋ฅผ ์ฑ๋ฅ๋ณด๋ค ๋จผ์ ๋ฐ์ดํฐ ๊ฒฉ๋ฆฌ ๋จ์๋ก ์ค๊ณํด์ผ ์ด์์ด ์ค๋ ๊ฐ๋ค.
- ํ๋ก์ ํธยท๊ดํ ๊ถยทํ ๋ํธ ๊ฐ์ ์์ฐ์ค๋ฌ์ด ๊ฒฝ๊ณ๊ฐ ์๋ค๋ฉด, ์ด๋ฅผ namespace ๋จ์๋ก ๊ทธ๋๋ก ๋ชจ๋ธ๋งํ๋ ๊ฒ์ด ์บ์ thrash์ ๊ถํ ๋ณต์ก๋๋ฅผ ์ค์ด๋ ๊ฐ์ฅ ์ค์ฉ์ ์ธ ๋ฐฉ๋ฒ์ด๋ค.
- ๋๊ท๋ชจ ๊ฒ์ ์์คํ ์ ๋ณ๋ชฉ์ ๋จ์ ์ธ๋ฑ์ฑ๋ณด๋ค๋ ์ ์ฅ ๊ณ์ธต๋ณ round trip๊ณผ ์บ์ ๋ฐฐ์น์ ์์ผ๋ฏ๋ก, ์ฝ๊ธฐ ํจํด์ด ์์ด๋ ๊ตฌ์กฐ๋ฅผ ๋จผ์ ์์ฌํด์ผ ํ๋ค.