ANN v3 توربوپافر: جستجوی برداری روی ۱۰۰ میلیارد وکتور
خلاصهٔ کاملتر
توربوپافر بهتازگی نسخه سوم موتور جستجوی برداری خودش رو با نام ANN v3 منتشر کرده — یه بازنویسی کامل از پایه که میتونه جستجوی تقریبی نزدیکترین همسایه (Approximate Nearest Neighbor) رو روی ۱۰۰ میلیارد وکتور در یه ایندکس واحد انجام بده. این عدد یعنی جستجو روی چیزی حدود ۲۰۰ ترابایت داده برداری فشرده (هر وکتور ۱۰۲۴ بُعد، هر بُعد ۲ بایت با فرمت f16).
هدف مشخصه: تأخیر p99 زیر ۲۰۰ میلیثانیه، با نرخ بیشتر از ۱۰۰۰ کوئری در ثانیه. یه چالش جدی که نیاز به بازطراحی اصولی داشته، نه فقط تیونینگ سطحی.
معماری turbopuffer عمداً ساده نگه داشته شده. لایه کوئری یه لایه بدون حالت (stateless) روی object storage مثل S3 ه که فقط از یه سلسلهمراتب کش (حافظه + SSD) و یه لایه محاسباتی تشکیل شده. همین سادگی باعث میشه بشه سیستم رو از اول بهینه کرد بدون اینکه درگیر پیچیدگیهای اضافه بشی.
برای پیدا کردن گلوگاه اصلی، تیم توربوپافر از مفهومی به اسم arithmetic intensity استفاده کرده — نسبت عملیات محاسباتی به عملیات حافظه. این مفهوم که از دنیای GPU وام گرفته شده، کمک میکنه بفهمیم یه workload «محاسبهمحور» (compute-bound) ه یا «پهنایباندمحور» (bandwidth-bound). مثلاً ضرب ماتریس در ماتریس (SGEMM) compute-bound ه چون هر عنصر چندین بار استفاده میشه، ولی dot product وکتوری (SDOT) معمولاً bandwidth-bound ه چون هر بایت فقط یهبار استفاده میشه.
در کرنل جستجوی برداری، سیستم هر وکتور داده رو میخونه و یه حساب فاصله (distance calculation) روش انجام میده — که یه عملیات با arithmetic intensity پایینه. این یعنی گلوگاه اصلی پهنای باند حافظهست، نه CPU. فهمیدن این موضوع از اول، مسیر کل بهینهسازی رو شکل داده.
نکات کلیدی:
- ANN v3 توربوپافر از ۱۰۰ میلیارد وکتور در یه ایندکس واحد پشتیبانی میکنه
- هدف تأخیر: p99 زیر ۲۰۰ میلیثانیه با بیش از ۱۰۰۰ QPS
- حجم داده معادل ۲۰۰ ترابایت وکتور فشرده با فرمت
f16 - معماری stateless روی S3 با کش حافظه و SSD
- تحلیل arithmetic intensity نشون میده workload جستجوی برداری bandwidth-bound ه، نه compute-bound
- بهینهسازی از اول بر اساس مکانیک سختافزار و سلسلهمراتب حافظه انجام شده




