
کاربر فروشگاه همیشه نام دقیق محصول را نمیداند. ممکن است «کفش سبک برای پیادهروی طولانی» بنویسد، در حالی که عنوان محصول فقط برند و کد مدل باشد. جستجوی معنایی با Embedding کمک میکند ارتباط توصیف نیاز با مشخصات کالا پیدا شود. این قابلیت جای قیمت، موجودی، فیلتر و جستجوی دقیق کد کالا را نمیگیرد؛ باید کنار آنها قرار بگیرد.
در این آموزش یک نمونه کوچک از بازیابی محصول با API پاستا و PostgreSQL میسازیم. خروجی نمونه شناسه محصولات نامزد است، نه پیشنهاد خریدِ تأییدشده. برای نمایش نهایی باید وضعیت انتشار، قیمت، موجودی و دسترسی محصول را دوباره از ووکامرس بخوانید. این مرزبندی جلوی نمایش محصول حذفشده یا قیمت ساختگی را میگیرد و برای تبدیل نمونه آموزشی به قابلیت واقعی فروشگاه ضروری است.
Embedding چه میکند و چه کاری نمیکند؟
Embedding متن را به برداری عددی تبدیل میکند تا شباهت معنایی متنها قابل مقایسه باشد. میتوان توضیح محصولات و عبارت جستجوی کاربر را با یک مدل سازگار برداری کرد و نزدیکترین موارد را یافت. برای این کار لزوماً مدل چت لازم نیست. اگر بعداً بخواهید پاسخ محاورهای بنویسید، تولید پاسخ لایهای جدا خواهد بود و باید فقط به داده معتبر تکیه کند.
شباهت معنایی تضمین تطابق همه شروط خرید نیست. «لپتاپ سبک تا یک بودجه مشخص» هم معنای توصیفی دارد و هم شرط عددی. قیمت باید با فیلتر قطعی اعمال شود، نه امید به اینکه بردار مفهوم بودجه را بهدرستی اجرا کند. رنگ، سایز، موجودی و امکان ارسال هم میتوانند شرط قطعی باشند. مدل نباید برای پرکردن نتیجه، ویژگیای را که در کاتالوگ نیست بسازد.
اگر مفهوم بردار تازه است، ابتدا راهنمای Embedding را بخوانید. برای فرق بازیابی و تولید پاسخ نیز آموزش RAG با Embedding و pgvector مفید است. در این مقاله، هدف اصلی جستجوی محصول است؛ ساخت چتبات سفارش و دسترسی به اطلاعات مشتری خارج از محدوده نمونه قرار دارد.
معماری مناسب برای فروشگاه
دو مسیر جدا داشته باشید. مسیر نمایهسازی، محصولات عمومی را دریافت و متن قابل جستجو را آماده میکند، سپس بردار را ذخیره میکند. مسیر جستجو، عبارت کاربر را دریافت میکند، تطبیق دقیق کد کالا را بررسی میکند و در صورت نیاز سراغ بازیابی معنایی میرود. جداکردن این دو مسیر باعث میشود بار تولید بردارِ کل فروشگاه روی زمان انتظار یک جستجو نیفتد.
Published public catalog
-> reviewed plain text -> Paasta Embeddings -> PostgreSQL + pgvector
Search query
-> exact SKU / lexical candidates + semantic candidates
-> merge ranks -> verify current WooCommerce product state
-> display valid products only
کلید API و اتصال دیتابیس در سرور میمانند. مرورگر به endpoint برنامه شما درخواست میدهد و اجازه انتخاب مدل، تغییر URL مقصد یا اجرای کوئری دیتابیس ندارد. اگر چند فروشگاه دارید، جداسازی داده و مجوز در همه مراحل لازم است. نمونه دانلودی این آموزش عمداً تکفروشگاهی است؛ آن را بدون طراحی tenant به سرویس چندمشتری تبدیل نکنید.
چه دادهای از ووکامرس استخراج کنیم؟
برای شروع، عنوان، دسته، ویژگیهای معنادار و توضیح کوتاه محصول کافی است. متن باید عمومی، قابل فهم و بدون HTML ناخواسته باشد. قیمت و موجودی پرتغییر را وارد متن برداری نکنید؛ این دادهها بهصورت فیلد ساختیافته و تازه کنترل میشوند. با این تفکیک، تغییر قیمت بهتنهایی تولید دوباره بردار را لازم نمیکند.
برای دریافت عمومی، قرارداد Products در Store API ووکامرس را بررسی کنید. اگر مسیر مدیریتی REST API ووکامرس را انتخاب میکنید، کلید فقطخواندنی و کاربر با حداقل دسترسی مناسب داشته باشید. سفارشها، ایمیلها، آدرسها و اطلاعات حساب مشتری برای جستجوی کاتالوگ لازم نیستند و نباید وارد سرویس Embedding شوند.
صفحهبندی را کامل و با سقف مشخص اجرا کنید. شکست دریافت صفحه سوم نباید به این نتیجه منجر شود که همه محصولات بعد از صفحه دوم حذف شدهاند. برای حذف رکوردهای غایب، ابتدا باید کاملبودن snapshot ثابت شود. webhook تغییر و حذف نیز ممکن است تکراری یا خارج از ترتیب برسد؛ زمان یا نسخه رویداد و عملیات idempotent را در طراحی تولید در نظر بگیرید.
آمادهسازی متن فارسی و محصول متغیر
یکسانکردن «ی» و «ک»، فاصلههای اضافه و شکل نیمفاصله میتواند تطبیق واژگانی را بهتر کند. متن اصلی را برای نمایش حفظ کنید و نسخه نرمالشده را برای جستجو نگه دارید. حروف یا اعداد کد مدل را بیدلیل حذف نکنید؛ گاهی تفاوت یک نویسه، محصول دیگری را مشخص میکند. نرمالسازی نام کالا با نرمالسازی SKU الزاماً یک قاعده ندارد.
برای محصول متغیر، تصمیم بگیرید نتیجه روی محصول والد است یا variation. اگر ویژگیهایی مثل ظرفیت حافظه یا اندازه روی تصمیم کاربر اثر جدی دارند، باید قابل فیلتر و بازیابی باشند. چند نسخه تقریباً یکسان از یک محصول هم نباید تمام نتایج اول را اشغال کنند. شناسه والد، شناسه variation و قواعد تجمیع را از ابتدا تعریف کنید.
متنهای تبلیغاتی تکراری مانند «بهترین کیفیت و قیمت عالی» ارزش معنایی کمی دارند و میتوانند همه کالاها را شبیه هم کنند. ویژگی واقعی، کاربرد، جنس و محدودیت را بنویسید. کیفیت داده محصول قبل از انتخاب مدل مهم است. اگر مشخصهای در منبع وجود ندارد، در مرحله آمادهسازی آن را با حدس مدل پر نکنید.