מחשבון גודל למסד וקטורים ב-RAG: זיכרון ודיסק
הזינו כמה chunks אתם ממירים ל-embedding, את המודל, את האינדקס ואת ה-quantization. תקבלו את ה-RAM והדיסק שמסד הווקטורים צריך כטווח, כשכל מבנה נספר וכל מקדם מקושר לתיעוד שממנו הוא נלקח.
תוצאה
- RAM
- 5.91 GiB עד 7.1 GiB
- דיסק
- 7.34 GiB עד 8.81 GiB
- RAM לווקטור, עותק אחד
- 6,349.6 B
| שורה | ערך | הנחות בשימוש |
|---|---|---|
| וקטורים (RAM ודיסק) | 5.72 GiB |
|
| גרף HNSW (RAM ודיסק) | 146.48 MiB |
|
| ID tracker (RAM ודיסק) | 49.59 MiB |
|
| Payload (דיסק) | 1.43 GiB |
|
| RAM לפני מרווח | 5.91 GiB |
|
| דיסק לפני מרווח | 7.34 GiB |
|
הנחות
כל מספר שהתוצאה משתמשת בו ולא הזנתם. אפשר לשנות כל אחד מהם כך שיתאים למקרה שלכם.
- בתים לממד, float324 B (הגדרה קבועה)
רכיב float32 תופס 4 בתים: ברירת המחדל של Qdrant לסוג הווקטור.
מקור · - בתים לקישור HNSW4 B (הגדרה קבועה)
כל קישור בגרף הוא מזהה נקודה של 4 בתים; בשכבה התחתונה יש m × 2 קישורים לנקודה.
מקור · המקדם של Qdrant על הקישורים של השכבה התחתונה, עבור השכבות העליונות והתחזוקה.
מקור ·- ID tracker לנקודה52 B (הגדרה קבועה)
Qdrant שומרת 52 בתים לנקודה שממפים מזהים למיקומים פנימיים, ונשארים ב-RAM תמיד.
מקור · המקדם של Qdrant על ה-payload הגולמי עבור מנגנון האחסון. ה-payload נשאר בדיסק (שכבת cold, ברירת המחדל של Qdrant).
מקור ·- %
מתווסף לסכומי ה-RAM והדיסק עבור ה-page cache, זמן הריצה וה-optimizer (RAM) וה-WAL, ה-snapshots והסגמנטים הזמניים (דיסק). הקצה העליון של כל טווח.
מקור ·
מה שהזנתם וההנחות ששיניתם נשמרים בקישור של העמוד, אחרי ה-#.
קחו את התוצאה איתכם
התוצאה כקובץ Markdown: מה שהזנתם, הפירוט, כל מקדם עם המקור שלו והקישור שמשחזר את החישוב.
# מחשבון גודל למסד וקטורים ב-RAG: זיכרון ודיסק
הערכה לפי ההנחות שמפורטות למטה, לא מדידה ולא התחייבות.
## מה שהזנתם
- וקטורים (chunks): 1,000,000
- מודל embedding: OpenAI text-embedding-3-small (https://developers.openai.com/api/docs/guides/embeddings)
- ממדים: 1,536
- אינדקס: HNSW (גרף)
- קישורי HNSW לצומת (m): 16
- אחסון הווקטורים: float32 (בלי quantization)
- payload ממוצע לווקטור (בתים): 1,024
- מקדם שכפול (replication factor): 1
## תוצאה
- RAM: 5.91 GiB עד 7.1 GiB
- דיסק: 7.34 GiB עד 8.81 GiB
- RAM לווקטור, עותק אחד: 6,349.6 B
## פירוט
| שורה | ערך | הנחות בשימוש |
| --- | --- | --- |
| וקטורים (RAM ודיסק) | 5.72 GiB | בתים לממד, float32 |
| גרף HNSW (RAM ודיסק) | 146.48 MiB | בתים לקישור HNSW, שכבות עליונות ותחזוקה של HNSW |
| ID tracker (RAM ודיסק) | 49.59 MiB | ID tracker לנקודה |
| Payload (דיסק) | 1.43 GiB | תקורת אחסון ה-payload |
| RAM לפני מרווח | 5.91 GiB | בתים לממד, float32, בתים לקישור HNSW, שכבות עליונות ותחזוקה של HNSW, ID tracker לנקודה |
| דיסק לפני מרווח | 7.34 GiB | בתים לממד, float32, בתים לקישור HNSW, שכבות עליונות ותחזוקה של HNSW, ID tracker לנקודה, תקורת אחסון ה-payload |
## הנחות
- בתים לממד, float32: 4 B. רכיב float32 תופס 4 בתים: ברירת המחדל של Qdrant לסוג הווקטור. מקור: https://qdrant.tech/documentation/capacity-planning/ (נקרא ב-16 באוק׳ 2026)
- בתים לקישור HNSW: 4 B. כל קישור בגרף הוא מזהה נקודה של 4 בתים; בשכבה התחתונה יש m × 2 קישורים לנקודה. מקור: https://qdrant.tech/documentation/capacity-planning/ (נקרא ב-16 באוק׳ 2026)
- שכבות עליונות ותחזוקה של HNSW: 1.2. המקדם של Qdrant על הקישורים של השכבה התחתונה, עבור השכבות העליונות והתחזוקה. מקור: https://qdrant.tech/documentation/capacity-planning/ (נקרא ב-16 באוק׳ 2026)
- ID tracker לנקודה: 52 B. Qdrant שומרת 52 בתים לנקודה שממפים מזהים למיקומים פנימיים, ונשארים ב-RAM תמיד. מקור: https://qdrant.tech/documentation/capacity-planning/ (נקרא ב-16 באוק׳ 2026)
- תקורת אחסון ה-payload: 1.5. המקדם של Qdrant על ה-payload הגולמי עבור מנגנון האחסון. ה-payload נשאר בדיסק (שכבת cold, ברירת המחדל של Qdrant). מקור: https://qdrant.tech/documentation/capacity-planning/ (נקרא ב-16 באוק׳ 2026)
- מרווח: 20%. מתווסף לסכומי ה-RAM והדיסק עבור ה-page cache, זמן הריצה וה-optimizer (RAM) וה-WAL, ה-snapshots והסגמנטים הזמניים (דיסק). הקצה העליון של כל טווח. מקור: https://qdrant.tech/documentation/capacity-planning/ (נקרא ב-16 באוק׳ 2026)
מחשבון vector-db 1.0.0 · מנוע @anaroq/calc 1.4.0 · תמונת נתונים 2026.10.4
פתיחת החישוב הזה: https://anaroq.com/he/tools/vector-db-sizer#k=eyJhc3N1bXB0aW9ucyI6e30sImNhbGMiOiJ2ZWN0b3ItZGIiLCJpbnB1dCI6eyJkaW1lbnNpb25zIjoxNTM2LCJobnN3TSI6MTYsImluZGV4IjoiaG5zdyIsIm1vZGVsIjoib3BlbmFpLXRleHQtZW1iZWRkaW5nLTMtc21hbGwiLCJwYXlsb2FkQnl0ZXMiOjEwMjQsInF1YW50aXphdGlvbiI6ImZsb2F0MzIiLCJyZXBsaWNhcyI6MSwidmVjdG9ycyI6MTAwMDAwMH0sInYiOjF9
איך המחשבונים עובדים: https://anaroq.com/he/methodology#calculators
הקישור מחזיק את ההגדרות אחרי ה-#, ודפדפנים לא שולחים את החלק הזה לשרת.
מה הכלי עושה
המחשבון סוכם כל מבנה שמסד וקטורים שומר עבור הווקטורים שלכם: הווקטורים עצמם, האינדקס, ה-ID tracker וה-payload, כפול מקדם השכפול, ומפריד בין מה שחייב להיות ב-RAM למה שנשמר בדיסק. השיטה היא תכנון הקיבולת שפרסמה Qdrant, איבר אחר איבר; התיעוד של FAISS ושל Milvus נותן את האיברים של IVF.
איך זה עובד
- בסיס: וקטורים × מקדם השכפול, כי כל עותק מחזיק את כל הווקטורים.
- וקטורים: בסיס × ממדים × בתים לממד (float32: 4, float16: 2). ב-quantization מסוג int8 (בית אחד) או binary (ביט אחד) העותק הדחוס הוא מה שנמצא ב-RAM, ווקטורי ה-float32 המקוריים נשארים בדיסק ל-rescoring.
- אינדקס: HNSW שומר בסיס × m × 2 קישורים × 4 בתים × 1.2 עבור השכבות העליונות. IVF שומר מזהה של 8 בתים לכל וקטור ו-centroid אחד מסוג float32 לכל אשכול. Flat לא שומר דבר נוסף וסורק את כל הווקטורים.
- ID tracker: 52 בתים לווקטור, תמיד ב-RAM. Payload: בסיס × payload ממוצע × 1.5, בדיסק.
- RAM = וקטורים ב-RAM + אינדקס + ID tracker. דיסק = כל המבנים. כל טווח מתחיל בסכום הזה ומסתיים בסכום ועוד מרווח של 20% עבור ה-page cache, ה-optimizer, ה-WAL וה-snapshots. הגדלים בינאריים: 1 GiB = 2³⁰ בתים.
- כל מקדם מופיע תחת ההנחות עם עמוד התיעוד שממנו הוא נלקח; את מקדמי התקורה ואת המרווח אפשר לשנות.
דוגמה
1,000,000 chunks שהומרו עם text-embedding-3-small של OpenAI (1536 ממדים), HNSW עם m = 16, float32, 1 KiB של payload לכל אחד ועותק אחד:
1,000,000 וקטורים · 1536 ממדים · HNSW m 16 · float32 · עותק אחד
- RAM
- 5.91 GiB עד 7.1 GiB
- דיסק
- 7.34 GiB עד 8.81 GiB
- RAM לווקטור, עותק אחד
- 6,349.6 B
מגבלות
- הערכת גודל, לא benchmark: היא לא אומרת דבר על מהירות שאילתות או על recall, והיא לא משווה בין מוצרים.
- מקדמי התקורה הם של Qdrant. מסדים אחרים שונים: Weaviate סופרת 8 עד 10 בתים לכל קישור בגרף וממליצה להכפיל את זיכרון הווקטורים בגלל ה-garbage collector של Go, מה שמעל הקצה העליון של הטווח כאן.
- ה-payload נספר בדיסק בלבד (שכבת cold, ברירת המחדל של Qdrant). Payload שנשמר ב-RAM, אינדקסים על ה-payload ווקטורים דלילים (sparse) לא נכללים.
- חיפוש עם quantization כשהמקוריים בדיסק איטי יותר כשהוא מבצע rescoring; אם צריך את המהירות הזו, השאירו את המקוריים ב-RAM וספרו אותם כ-RAM.
- בלי מחיר. כמה עולה שרת או מסד מנוהל עם RAM ודיסק בגודל הזה לא נכלל בעמוד הזה.
מתודולוגיה: איך מחושבים המספרים
מקורות
קשורים
הצעד הבא
כלי ציבורי חינמי של אנרוק, חברה שבונה תשתיות מחשוב. מה אנרוק בונה