نمایش متراکم همهٔ جایگاههای بردار را نگه میدارد؛ نمایش پراکنده میتواند فقط جایگاه و مقدارهای ذخیرهشده را نگه دارد. «پراکنده» و «متراکم» به شیوهٔ نمایش عددها مربوطاند و خودشان معنیِ بهتر، حقیقتِ پاسخ یا اندازهٔ قطعیِ حافظه را تعیین نمیکنند. با یک بردار پنجبعدی، هر دو نمایش را بازسازی و مقایسه میکنیم.
حذفِ صفرها، حذفِ جایگاهها نیست
بردار ساختگی [۰،۳،۰،−۱،۰] را داریم. در قراردادِ زوجهای صفرمبنا، (۱،۳) و(۳،−۱) را همراه dimension=۵نگه میداریم. صفرها بهصورت ضمنی بازسازی میشوند. اگر بعد را ثبت نکنیم، صفرِ آخر یا معنای جایگاههای حذفشده معلوم نمیشود؛ کوتاهکردن آرایه به [۳،−۱] همان بردار نیست.
در این کد شاخص تکراری رد میشود. بعضی قالبها و کتابخانهها تکرار را میپذیرند و جمع میکنند؛ قرارداد آنها را باید جدا خواند. تبدیلِ خودسرانهٔ فهرست زوجها به dictionary ممکن است یکی از مقدارها را جای دیگری بنویسد و مسئله را پنهان کند.
یک حساب برابر با دو نمایش
با query=[۱،۲،۳،۴،۵]، ضرب داخلیِ متراکم برابر۰×۱+۳×۲+۰×۳−۱×۴+۰×۵=۲است. در نمایش زوجها، فقط۳×query[۱]−۱×query[۳]را جمع میکنیم و باز هم۲میگیریم. کد هر دو نتیجه و بازسازی دقیقِ بردار را واقعاً کنترل کرده است.
این حساب، مدل embedding یا سنجهٔ احتمال نمیسازد. شباهت کسینوسی علاوه بر ضرب داخلی به طول بردارها هم مربوط است؛ مقالهٔ حاضر قرارداد ذخیره و شاخصها را توضیح میدهد. برابرشدن تعداد مؤلفهٔ دو مدل، معنای محورهای آنها را مشترک نمیکند.
آیا پراکنده همیشه کوچکتر است؟
| نمایشِ آرایهایِ فرضی | فرض و حساب | فقط بایتِ آرایه |
|---|---|---|
| متراکم | ۵مقدار float32 | ۲۰ |
| زوج شاخص/مقدار | ۲×(int32+float32) | ۱۶ |
| CSR برای یک ردیف | ۲مقدار+۲شاخص+۲اشارهگر، همه۴بایت | ۲۴ |
در این مثال کوچک، CSR فرضی حتی از آرایهٔ متراکم بیشتر جا میخواهد. این اعداد فقط حساب آرایههای تعریفشدهاند؛ حافظهٔ واقعیِ list،tuple،objectهای Python، شکل، allocator یا فایل اندازهگیری نشده است. در ابعاد، تعداد ناصفر و نوع شاخصِ دیگر، مقایسه تغییر میکند.
صفرِ ذخیرهشده و مقدار نامعلوم
در قرارداد زوجهای این تمرین، میتوان زوج با مقدار صفر هم داد، اما معنای عددی آن با جایگاهِ ضمنیِ صفر برابر میشود. «ذخیرهنشده» در این مدل به معنی missing یا نامعلوم نیست. اگر دادهٔ شما مقدار ناموجود دارد، سیاست آن را جدا تعریف کنید؛ جایگزینکردن خودکار با صفر میتواند معنی ویژگی را عوض کند.
کد، شاخص بیرون از محدوده، تکراری، bool و مقدار نامتناهی/NaN را رد میکند. بردارِ تمامصفر هم با فهرست زوجِ خالی و بعدِ معلوم بازسازی میشود. این قرارداد، تمام جزئیات SciPy یا قالبهای COO/CSR را پیاده نکرده و آزمون سرعت هم انجام نداده است.
قدم بعد برای متن و جستوجو
وزنهای TF-IDF میتوانند در واژهنامهٔ بزرگ صفرهای زیادی داشته باشند؛ اما انتخاب نمایش را با نوع داده و عملیات واقعی بسنجید. در بررسی چت سایت اپرا، کیفیت بازیابی، مجوز و تازگیِ سند را جدا از نامِ «بردار» دنبال کنید؛ این راهنما فناوریِ ذخیرهسازیِ محصول اپرا را اعلام نمیکند.
فایل تمرین و منبع
بازسازی بردار، ضرب داخلی و حساب بایت آرایه با فرضِ صریح · بعد، جایگاههای صفرمبنا و فرضهای حسابِ حافظه
منابع در ۳ نوامبر ۲۰۲۶ خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.