برنامههای جستجوی مدرن فراتر از تطبیق ساده کلمات کلیدی رفتهاند. کاربران امروز انتظار یک تجربه یکپارچه را دارند که نیت معنایی را درک میکند، به اصطلاحات خاص احترام میگذارد و موقعیت فیزیکی را در نظر میگیرد. برای مثال، یک کاربر ممکن است جستجو کند «بهترین رستورانهای گیاهی نزدیک من»، که در آن «نزدیک من» مکانمحور است، «گیاهی» یک محدودیت کلمه کلیدی است و «بهترین» به رتبهبندی معنایی بر اساس نظرات یا جاسازیهای تصویری اشاره دارد.
بسیاری از معماریهای سنتی در مدیریت همزمان این سه نوع داده متمایز بدون ارکستراسیون پیچیده میکروسرویسها، با مشکل مواجه هستند. ویسپا، یک موتور جستجو و سرویسدهی متنباز، به طور بومی به این چالش میپردازد. با در نظر بردن بردارها، متن و مکان به عنوان شهروندان درجه یک، ویسپا به توسعهدهندگان اجازه میدهد این سیگنالها را در یک پرسوجوی با عملکرد بالا ترکیب کنند.
چرا جستجوی چندحسی اهمیت دارد
جستجوی ترکیبی دیگر یک نوآوری نیست؛ بلکه یک الزام است. جستجوی خالص برداری اغلب دقت مورد نیاز برای نامهای دقیق برند یا کدهای فنی را ندارد. جستجوی خالص کلمه کلیدی در درک ظرافت معنایی پرسوجوهای زبان طبیعی شکست میخورد. افزودن محدودیتهای مکانمحور لایه دیگری از پیچیدگی ایجاد میکند، زیرا دادههای مکان اغلب جدا از محتوا ذخیره میشوند.
معماری ویسپا این سیلوها را از بین میبرد. این سیستم همه انواع داده را در یک اسکیمای یکپارچه ایندکس میکند و به پروفایل رتبهبندی اجازه میدهد با استفاده از توابع رتبهبندی سفارشی، این سیگنالها را وزندهی و ترکیب کند. این امر در مقایسه با فدراسیون چندین موتور جستجو، به تأخیر کمتر و مرتبط بودن بالاتر منجر میشود.
تعریف اسکیمای: ساختاردهی دادههای چندحسی
برای فعالسازی جستجوی چندحسی، اسکیمای شما باید انواع فیلدهای مناسب را تعریف کند. ویسپا از string برای متن، geopoint برای مکان و tensor برای جاسازیهای برداری پشتیبانی میکند.
schema products {
document store {
field name type string {
index
}
field location type geopoint {
index
}
field embedding type tensor<float>[128] {
index
}
field category type string {
index
}
}
}
توجه داشته باشید که فیلد tensor برای قابل جستجو بودن از طریق شباهت برداری به ایندکس نیاز دارد، در حالی که geopoint برای پرسوجوهای فضایی به ایندکس نیاز دارد.
طراحی پرسوجوی چندحسی
قدرت ویسپا در توانایی آن برای اجرای یک پرسوجوی واحد است که به چندین نوع داده هدفگیری میکند. شما میتوانید از دستور select برای فیلتر کردن بر اساس مکان، فیلتر کردن بر اساس کلمات کلیدی و انجام همزمان جستجوی نزدیکترین همسایه برداری استفاده کنید.
یک پرسوجو برای «هتلهای لوکس در پاریس با دکور مدرن» را در نظر بگیرید. ممکن است پرسوجوی خود را به این شکل ساختار دهید:
GET /search/?query=(
userQuery:(luxury hotel) OR
embedding:nearestNeighbor(embedding, [0.1, 0.2, ...])
) AND location:geoCircle(48.8566, 2.3522, 5km)
&ranking=queryName
در این مثال:
- تطبیق کلمه کلیدی:
userQuery:(luxury hotel)اطمینان حاصل میکند که تطبیق متنی سنتی انجام شود. - تطبیق برداری:
nearestNeighborمستنداتی را که از نظر معنایی مشابه هستند، بر اساس بردار پرسوجوی جاسازی شده پیدا میکند. - فیلتر مکانمحور:
geoCircleنتایج را به محدوده ۵ کیلومتری مختصات پاریس محدود میکند.
استراتژیهای رتبهبندی برای ترکیب
صرفاً بازیابی نتایج از هر سه منبع کافی نیست؛ شما باید آنها را به طور منسجم رتبهبندی کنید. پروفایل رتبهبندی ویسپا به شما اجازه میدهد فرمولهای سفارشی را تعریف کنید که امتیازات را از فیلدهای مختلف ترکیب میکنند.
rank-profile MultiModalRank {
inputs {
input<float> vectorWeight: 0.5
input<float> keywordWeight: 0.3
input<float> locationWeight: 0.2
}
first-phase {
function<float> vector_score() {
expression: closestMatchDistance(embedding)
}
function<float> keyword_score() {
expression: bm25(name)
}
function<float> location_score() {
expression: 1.0 - geoDistance(location) / 10000.0
}
expression: vectorWeight * vector_score() +
keywordWeight * keyword_score() +
locationWeight * location_score()
}
}
این فرمول به طور پویا هر جزء را وزندهی میکند. توسعهدهندگان میتوانند این وزنها را بر اساس تست A/B تنظیم کنند تا برای مورد استفاده خاص خود بهینه کنند، چه اولویت آنها مرتبط بودن معنایی باشد یا نزدیکی جغرافیایی.
نتیجهگیری
ویسپا یک راه حل قوی و مقیاسپذیر برای جستجوی چندحسی ارائه میدهد و پیچیدگی یکپارچهسازی پایگاههای داده جداگانه برداری، متنی و مکانمحور را از بین میبرد. با بهرهگیری از ایندکسگذاری یکپارچه و موتور رتبهبندی انعطافپذیر آن، توسعهدهندگان میتوانند تجربیات جستجوی بسیار مرتبط و آگاه از زمینه با تأخیر کم بسازند. با تنوع بیشتر دادهها، توانایی ترکیب این حالتها در یک پرسوجوی واحد به یک مزیت رقابتی حیاتی تبدیل میشود.