CodeCrafters: post #1026 — TG.ME

Semantic Search و Vector Databaseها

در متن‌های قبلی درباره‌ی Embedding صحبت کردیم و با چند تکنیک برای افزایش Performance و دقت جستجو آشنا شدیم.

اما یک سؤال مهم وجود دارد:

آیا دقت بالاتر در Search الزاماً به معنی کیفیت بالاتر پاسخ است؟

لزوماً نه.

در Semantic Search ما به دنبال معنا هستیم، اما وقتی Query کاربر پیچیده‌تر می‌شود، صرفاً پیدا کردن نزدیک‌ترین Embeddingها نمی‌تواند کیفیت پاسخ را تضمین کند.

برای مثال ممکن است یک Query به چند مفهوم مختلف اشاره کند و یک Vector Search ساده، اسناد مرتبط با هر مفهوم را پیدا کند، اما نتواند بهترین ترکیب از اطلاعات را برای پاسخ نهایی در اختیار LLM قرار دهد.

اینجاست که صرفاً بهینه‌سازی Embedding یا Vector Search دیگر کافی نیست و باید سراغ الگوهای پیشرفته‌تر برویم.

دو مورد مهم:

Hybrid Search

ترکیب Semantic/Vector Search و Keyword Search برای اینکه هم مفهوم Query و هم کلمات و عبارات دقیق آن را در نظر بگیریم.

Reranking

بعد از اینکه چندین Document اولیه را با Search پیدا کردیم، یک مرحله‌ی دوم برای رتبه‌بندی مجدد آن‌ها انجام می‌دهیم تا مرتبط‌ترین Documents در بالاترین رتبه قرار بگیرند.

در نتیجه Pipeline ما می‌تواند چیزی شبیه این باشد:

Query → Vector Search + Keyword Search → Hybrid Search → Reranking → Context → LLM

اما بحث فقط Search نیست.

وقتی با داده‌های حجیم، Big Data و داده‌های چندوجهی (Multimodal) مثل Text، Image، Audio و Video سروکار داریم، انتخاب Storage و Data Architecture نیز اهمیت بیشتری پیدا می‌کند.

اینجاست که ابزارهایی مانند LanceDB مطرح می‌شوند.

LanceDB یک Vector Database/AI Data Platform مبتنی بر Lance است که برای Workloadهای AI و داده‌های Embedding طراحی شده و قابلیت‌هایی مانند:

* Semantic / Vector Search
* Hybrid Search
* Metadata Filtering
* مدیریت داده‌های Multimodal
* کار با حجم بالای داده
* و استفاده از Storageهایی مانند Local Filesystem و Object Storageهایی مثل S3

را فراهم می‌کند.

البته این به معنی آن نیست که PostgreSQL، Chroma یا Elasticsearch در حجم بالا دیگر قابل استفاده نیستند. هرکدام برای Workload و معماری خاصی مناسب هستند.

بنابراین مسئله اصلی دیگر فقط این نیست که:

«چطور Search را دقیق‌تر کنیم؟»

بلکه سؤال مهم‌تر این است:

«چطور یک Retrieval Architecture طراحی کنیم که بتواند اطلاعات درست را از بین حجم زیادی از داده، با توجه به معنا، Keyword، Metadata و Context پیدا کند؟»

و این دقیقاً جایی است که مفاهیمی مثل:

Embedding → Semantic Search → Hybrid Search → Reranking → Context Optimization → RAG

در کنار یکدیگر قرار می‌گیرند.



@code_crafters
August 17, 2026 176 4