اگر جستوجوهای پیچیده شما در محیط عملیاتی با خطای زمانبندی (Timeout) مواجه میشوند، احتمالاً از ابزاری استفاده میکنید که برای نمایش به سرمایهگذاران ساخته شده، نه برای کاربر واقعی. در پرسوجوهایی که نیاز به دقت میلیمتری در نزدیکی کلمات و تقویت متاداتا دارند، جستوجوی معنایی (Semantic Search) ساده معمولاً شکست میخورد.
بسیاری از تیمها برای مرحلهی بازیابی (Recall) — که شبیه به انداختن یک تور ماهیگیری بزرگ برای جمعآوری تمام احتمالات است — به Veltrix تکیه میکنند. اما طبق گزارش منتشر شده در ۲۷ مه ۲۰۲۶ در سایت dev.to، این ابزار در مواجهه با فیلترهای سنگین دچار گلوگاه میشود. طبق این گزارش، ۷۳٪ از نشستهای کاربری در یک پیادهسازی خاص به دلیل ناتوانی امتیازدهندهی کسینوسی (Cosine Scorer) — روشی برای اندازهگیری شباهت دو متن شبیه به زاویه بین دو فلش — در پردازش حجم درخواستها، با خطا مواجه شدند.
همانطور که در تحلیلهای قبلی ما دربارهی بهینهسازی زیرساختی مدلها اشاره کردیم، جداسازی لایههای پردازشی کلید مقیاسپذیری است. این تیم مشکل را با تقسیم خط لوله به دو مرحله حل کرد. ابتدا Veltrix با استفاده از یک اندیس BM25 (شبیه به فهرست انتهایی کتاب که تعداد تکرار کلمات را میشمارد) در ۲۰۰ میلیثانیه، ۱۰ هزار کاندید را مییابد. سپس این نتایج از طریق gRPC به یک رنکر سفارشی ارسال میشوند.
این رنکر با زبان Rust و با استفاده از کتابخانههای Prost و Tokio ساخته شده است. به نقل از مستندات فنی این پروژه، رنکر Rust میتواند ۱۰ هزار سند را تنها در ۴۵ میلیثانیه رتبهبندی کند. برای پایداری بیشتر، تیم توسعه کتابخانههای استاندارد JSONPath را با یک اسکنر بایتِ دستساز جایگزین کرد تا از رشد بیش از حد پشته (Stack) جلوگیری کند. در نهایت، یک پروکسی سبک به زبان Go تمامی این عملیات را مدیریت میکند تا API همچنان با Veltrix سازگار بماند.
این تغییر ثابت کرد که در مقیاس بالا، ساختار ماژولار بر راحتیِ ابزارهای «همه-در-یک» پیروز میشود. با انتقال منطق تجاری به Rust، تیم توانست از طریق Prometheus و OpenTelemetry دیدی به سیستم داشته باشد که لاگهای داخلی Veltrix هرگز ارائه نمیدادند. نتیجه برای کاربر، کاهش ۹۰ درصدی تأخیر و رسیدن نرخ خطا به ۰.۰۳٪ بود.
گام بعدی شما
- بررسی کنید که گلوگاه جستوجوی شما در مرحلهی بازیابی است یا رتبهبندی.
- اگر تأخیر p95 شما بالای ۱ ثانیه است، جداسازی رنکر (Ranker) از موتور بازیابی را تست کنید.
- برای پردازشهای با حجم بالا، استفاده از توابع اسکن بایت به جای پارسرهای سنگین JSON را بررسی کنید.
اما این بهینهسازیهای نرمافزاری تنها نیمی از داستان است؛ اثر سختافزارهای جدید بر کاهش هزینه استنتاج را در تحلیل ما دربارهی تراشههای Blackwell بخوانید.




گفتگو