۰۱ / چالش اصلی
ساخت یک پلتفرم چتبات چندمستاجره هوش مصنوعی با ترافیک بالا بدون تداخل یا نشت دادههای بین مستاجران و بهبود عملکرد بازیابی اطلاعات.
با بزرگ شدن مجموعه اسناد به بیش از ۵ میلیون بردار، جستجوی استاندارد کسینوسی دچار گلوگاه شد. هدف کاهش زمان بازیابی به زیر ۵۰۰ میلیثانیه با حفظ و حتی بهبود دقت متن بازیابیشده برای مدل زبانی بود.
این امر نیازمند بازطراحی کامل پایپلاین ورود اطلاعات (Ingestion) و پیادهسازی استراتژی جستجوی ترکیبی (Hybrid Search) بود.
۰۲ / معماری سیستم
معماری جدید فرآیند ورود اطلاعات را از پردازش جدا کرد و با استفاده از صفهای Redis برای هندل کردن بارهای لحظهای بدون مسدود کردن تِرد اصلی برنامه استفاده نمود.
۰۳ / راهکار پیادهسازی شده
پیادهسازی یک معماری رویدادمحور با استفاده از Apache Kafka، Debezium CDC و Transactional Outbox در ترکیب با استراتژی جستجوی ترکیبی.
async def query_vector_store(query: str, filters: dict = None) -> List[Document]:
# Generate sparse vector for hybrid search
sparse_vec = splade_encoder.encode_documents([query])[0]
# Execute parallel search execution
results = await pinecone_index.query( vector=dense_embedding, sparse_vector=sparse_vec, top_k=10, include_metadata=True, filter=filters)
return [_parse_match(m) for m in results.matches]۰۴ / نتایج
سیستم در حال حاضر درخواستهای همزمان کاربران را با تأخیر p99 حدود ۴۲۰ میلیثانیه پاسخ میدهد. معرفی جستجوی ترکیبی (کلمهکلیدی + معنایی) دقت بازیابی را تا ۱۴ درصد افزایش داد.
