چندسال پیش با یک سریالی آشنا شدم به اسم «مرگ،عشق،رباتها»
دوره ظهور چتباتهای هوشمند بود
راجب دو بخش از این سریال براتون بگم
تو یکی از اپیزودهاش که یک صحنه آخرالزمانی بود انتهای داستان وقتی رییس اصلی رو نشون داد یک گربه بود که این جمله رو گفت «چیه فکر میکردی ایلان ماسکه؟؟؟» تو مقاله اخیر اکونومیست انگار هوش مصنوعی رو چسبوندن به ایلان ماسک، سرمایه گذاری بزرگی انجام داده و راجب افکار پیچیده و بزرگی صحبت کرد که گویا هوش مصنوعی و رباتها به زودی قراره به شکل گستردهای در زندگی ما حضور داشته باشند(در یکی از اتفاقات اخیر که یک ربات رو به صورت آزمایشی در یک کارخونه تست کردن اتفاق جالبی افتاد، قرار بود این ربات یک آزمایش هشت ساعته پشت سر بگذرونه، اما ربات به مدت ۲۰۰ ساعت بدون کوچکترین وقفهای کار کرد و هیچ ضریب خطایی از خودش نشون نداد)
در داخل یکی دیگه از اپیزودها رییس جمهور ایلات متحده دیگه انسان نبود، بلکه یک هسته هوش مصنوعی بود که جهان رو کنترل میکرد، عاملهای هوشمند به زودی پیچیدگی تفکر اونها به بزرگی ذهن انسان خواهد رسید و خیلی زودتر از مغز انسان هم پیشی خواهد گرفت، این میتونه عوامل مثبت و منفی داشته باشه، در خصوص عوامل منفیش منجر به بی معنایی در انسان میشه که ممکن هست آمار جنایت افزایش پیدا کنه، دو کشور مطرح در زمینه عاملهای هوشمند یکی آمریکا و دیگری چین هستش، آینده و کنترل جهانی در دست این دو کشور خواهد افتاد و مابقی کشورها از قدرت جهانی بعنوان رقیب حذف خواهند شد (سرمایه گذاری در زمینه هوش مصنوعی امروزه به یک الزام بزرگ تبدیل شده و هر کشوری در این زمینه کوتاهی کنه با عواقب آن روبرو خواهد شد)
شرکت انودیا در یک همایش از یک ربات هوشمند رونمایی کرد که دو هسته هوشمند برای پردازش روی آن نصب بود، ربات بصورت خام فعال شد و در لحظه در حال یادگیری در محیط و ارتباط گرفتن با انسان بود، ربات در کمتر از چند دقیقه به واکنش احساسی دست پیدا کرد
یک واقعیت به زودی هوش مصنوعی فراگیرتر و توانمندتر خواهد شد، شروع به یادگیری هوش مصنوعی ضروری هستش و خیلی بدبینانه بهش نگاه کنم منجر میشه کمی دیرتر بیکار بشید
پیگیر اخبار هوش مصنوعی باشید
@code_crafters
دوره ظهور چتباتهای هوشمند بود
راجب دو بخش از این سریال براتون بگم
تو یکی از اپیزودهاش که یک صحنه آخرالزمانی بود انتهای داستان وقتی رییس اصلی رو نشون داد یک گربه بود که این جمله رو گفت «چیه فکر میکردی ایلان ماسکه؟؟؟» تو مقاله اخیر اکونومیست انگار هوش مصنوعی رو چسبوندن به ایلان ماسک، سرمایه گذاری بزرگی انجام داده و راجب افکار پیچیده و بزرگی صحبت کرد که گویا هوش مصنوعی و رباتها به زودی قراره به شکل گستردهای در زندگی ما حضور داشته باشند(در یکی از اتفاقات اخیر که یک ربات رو به صورت آزمایشی در یک کارخونه تست کردن اتفاق جالبی افتاد، قرار بود این ربات یک آزمایش هشت ساعته پشت سر بگذرونه، اما ربات به مدت ۲۰۰ ساعت بدون کوچکترین وقفهای کار کرد و هیچ ضریب خطایی از خودش نشون نداد)
در داخل یکی دیگه از اپیزودها رییس جمهور ایلات متحده دیگه انسان نبود، بلکه یک هسته هوش مصنوعی بود که جهان رو کنترل میکرد، عاملهای هوشمند به زودی پیچیدگی تفکر اونها به بزرگی ذهن انسان خواهد رسید و خیلی زودتر از مغز انسان هم پیشی خواهد گرفت، این میتونه عوامل مثبت و منفی داشته باشه، در خصوص عوامل منفیش منجر به بی معنایی در انسان میشه که ممکن هست آمار جنایت افزایش پیدا کنه، دو کشور مطرح در زمینه عاملهای هوشمند یکی آمریکا و دیگری چین هستش، آینده و کنترل جهانی در دست این دو کشور خواهد افتاد و مابقی کشورها از قدرت جهانی بعنوان رقیب حذف خواهند شد (سرمایه گذاری در زمینه هوش مصنوعی امروزه به یک الزام بزرگ تبدیل شده و هر کشوری در این زمینه کوتاهی کنه با عواقب آن روبرو خواهد شد)
شرکت انودیا در یک همایش از یک ربات هوشمند رونمایی کرد که دو هسته هوشمند برای پردازش روی آن نصب بود، ربات بصورت خام فعال شد و در لحظه در حال یادگیری در محیط و ارتباط گرفتن با انسان بود، ربات در کمتر از چند دقیقه به واکنش احساسی دست پیدا کرد
یک واقعیت به زودی هوش مصنوعی فراگیرتر و توانمندتر خواهد شد، شروع به یادگیری هوش مصنوعی ضروری هستش و خیلی بدبینانه بهش نگاه کنم منجر میشه کمی دیرتر بیکار بشید
پیگیر اخبار هوش مصنوعی باشید
@code_crafters
🌭2👍1👌1
مهندسی هوش مصنوعی یا AI engineering
مهندسی هوش مصنوعی در واقع زیر مجموعه، مهندس نرم افزار هستش، هدف ما ایجاد یک محصول هوش مصنوعی نیست، بلکه افزودن هوش مصنوعی به محصولاتی هستش که داریم میسازیم
دقیقا شما با معماری و طراحی، روتینگ، پیاده سازی، تست و بررسی، اجرای نهایی و تکرار این چرخه روبرو هستین، یعنی دقیقا فرآیند همون چیزی هستش که در مهندسی نرم افزار داریم
دقت کنید که مهندسی هوش مصنوعی با مهندس هوش مصنوعی متفاوت هستش
مهندسی هوش مصنوعی در واقع هوش مصنوعی رو به محصول سازمان اضافه میکنه
مهندس هوش مصنوعی در واقع محصول هوش مصنوعی میسازه
مهندسی هوش مصنوعی در زیر شاخه مهندس نرم افزار قرار میگیره و با prompt engineering متفاوت هستش، پرامپت نویسی یک تکنیک کار کردن با LLM ها هستش و در مهندسی هوش مصنوعی نیز پایه اولیه و نقطه شروع محسوب میشه
در بازار گاها AI engineer رو با AI engineering یکی میدونن و میبینن، دلیلش هم بابت این هستش که نگاه بازار به موضوع کسب و کاری هستش (سخت نگیرید)
@code_crafters
مهندسی هوش مصنوعی در واقع زیر مجموعه، مهندس نرم افزار هستش، هدف ما ایجاد یک محصول هوش مصنوعی نیست، بلکه افزودن هوش مصنوعی به محصولاتی هستش که داریم میسازیم
دقیقا شما با معماری و طراحی، روتینگ، پیاده سازی، تست و بررسی، اجرای نهایی و تکرار این چرخه روبرو هستین، یعنی دقیقا فرآیند همون چیزی هستش که در مهندسی نرم افزار داریم
دقت کنید که مهندسی هوش مصنوعی با مهندس هوش مصنوعی متفاوت هستش
مهندسی هوش مصنوعی در واقع هوش مصنوعی رو به محصول سازمان اضافه میکنه
مهندس هوش مصنوعی در واقع محصول هوش مصنوعی میسازه
مهندسی هوش مصنوعی در زیر شاخه مهندس نرم افزار قرار میگیره و با prompt engineering متفاوت هستش، پرامپت نویسی یک تکنیک کار کردن با LLM ها هستش و در مهندسی هوش مصنوعی نیز پایه اولیه و نقطه شروع محسوب میشه
@code_crafters
✍2❤1
تو ارتباط گرفتن با آدما
یا به شما یه ارزشی میدن و چیزی بهتون اضافه میکنن
یا از شما چیزی کم میکنن و بی ارزشتون میکنن
ببینید طرف مقابلتون چیزی به شما یاد میده؟؟؟ یا یه کار کوچیک یا بزرگ (حتی پر ریسک) قراره با شما انجام بده؟؟؟ بهتون کتاب معرفی میکنه جهت خوندن (چه در زمینه تخصصی چه مطالعه آزاد)؟؟؟
در غیر این صورت اون آدم تو کمترین حالت ممکنه داره زمان و وقت شما رو بی ارزش میکنه، چون خودش آدم بی ارزشی هستش
شما اگه نیاز به حرف زدن هم داریم
نیاز به تفریح دارید
نیاز به بیرون رفتن دارید
نیاز به وقت گذروندن دارید
با کسی انجامش بدین که بهتون یه ارزشی اضافه کنه
باور کنید آدم چرت بودن، درب و داغون بودن خیلی راحته تا یک آدم ارزش آفرین شدن
#موقت
یا به شما یه ارزشی میدن و چیزی بهتون اضافه میکنن
یا از شما چیزی کم میکنن و بی ارزشتون میکنن
ببینید طرف مقابلتون چیزی به شما یاد میده؟؟؟ یا یه کار کوچیک یا بزرگ (حتی پر ریسک) قراره با شما انجام بده؟؟؟ بهتون کتاب معرفی میکنه جهت خوندن (چه در زمینه تخصصی چه مطالعه آزاد)؟؟؟
در غیر این صورت اون آدم تو کمترین حالت ممکنه داره زمان و وقت شما رو بی ارزش میکنه، چون خودش آدم بی ارزشی هستش
شما اگه نیاز به حرف زدن هم داریم
نیاز به تفریح دارید
نیاز به بیرون رفتن دارید
نیاز به وقت گذروندن دارید
با کسی انجامش بدین که بهتون یه ارزشی اضافه کنه
باور کنید آدم چرت بودن، درب و داغون بودن خیلی راحته تا یک آدم ارزش آفرین شدن
#موقت
👏10👍3❤1
در بحث ai engineering هدف ما افزودن راهکارهای هوش مصنوعی به محصول هستش
هر مدلی از هرجایی به هر شکلی
منتها تمرکز فعلی ما و بازار بر روی مدلهای LLM هم هستش (و من هم فعلا دارم راجب این موضوع میخونم در این خصوص متن میزارم براتون)
بیشتر کار ما در بخش LLM مربوط به چند موضوع پر طرفدار میشه
Summarization
Search engine
Q&A
RAG
شاید از خودتون بپرسید که خب این مباحث کم هستش، درست کمه اما سنگین هستند برای مثال شما هنگام طراحی باید گاردریل طراحی کنی تا از سواستفاده توسط کاربران جلوگیری کنید، شما نیاز به semantic search دارید که وابسته به دیتابیسهای گرافی هستش، شما نیاز به پرامپت نویسی دارید متناسب با سازمان و محصول، درک کردن چند کتابخانه و پلتفرم برای طراحی سریعتر و بهتر و کلی موضوعات ریز و درشت دیگه از جمله طراحی معماری پاسخگو به سازمان و استفاده از هوش شخصی برای کارای اضافه
کتابخونههای معروف و پر استفاده شامل
Langchain, langgraph, langsmith
هستند
برای دوستان پایتون کار pydantic ai وجود داره
و نباید از مجموعه hugging face هم غافل شد
@code_crafters
هر مدلی از هرجایی به هر شکلی
منتها تمرکز فعلی ما و بازار بر روی مدلهای LLM هم هستش (و من هم فعلا دارم راجب این موضوع میخونم در این خصوص متن میزارم براتون)
بیشتر کار ما در بخش LLM مربوط به چند موضوع پر طرفدار میشه
Summarization
Search engine
Q&A
RAG
شاید از خودتون بپرسید که خب این مباحث کم هستش، درست کمه اما سنگین هستند برای مثال شما هنگام طراحی باید گاردریل طراحی کنی تا از سواستفاده توسط کاربران جلوگیری کنید، شما نیاز به semantic search دارید که وابسته به دیتابیسهای گرافی هستش، شما نیاز به پرامپت نویسی دارید متناسب با سازمان و محصول، درک کردن چند کتابخانه و پلتفرم برای طراحی سریعتر و بهتر و کلی موضوعات ریز و درشت دیگه از جمله طراحی معماری پاسخگو به سازمان و استفاده از هوش شخصی برای کارای اضافه
کتابخونههای معروف و پر استفاده شامل
Langchain, langgraph, langsmith
هستند
برای دوستان پایتون کار pydantic ai وجود داره
و نباید از مجموعه hugging face هم غافل شد
@code_crafters
❤5
گفتیم که مهندسی هوش مصنوعی یعنی افزودن هوش مصنوعی به محصول
تمرکز ما بر روی LLMs هستش
یکی از این مباحث که گفتیم RAG هستش، یعنی پایگاه دانش سازمانی ایجاد کنیم که به پاسخ کاربران جوابگو باشد
برای اینکار ما نیاز به vector store داریم، که به چند شکل کتابخونه و دیتابیس و موتور وجود دارند
کتابخونهها ثابت هستند، در مقابل تغییر مقاوم و خب سریع تر هستند، نمونه اون FAISS متعلق به شرکت فیسبوک می باشد که بشدت رقابت رو سخت کرده
elasticsearch موتور جستجو
Pgvector اکستنشن پستگرس
Mongodb atlas اکستنشن مونگو
و دیتابیس هم مانند chromadb که ساختار معنایی داره
بیشتر این ابزارها بر پایه knn, ann و tf/idf کار میکنن، در نهایت ما semantic search میخوایم
به هرحال بسته به پروژه و بزرگی سازمان و نیاز شما ابزار مناسب رو انتخاب میکنید
هدف ما ساختن یک vector store هستش که تبدیل به پایگاه دانش سازمان شده و بخش Q&A سازمان و محصول رو راه اندازی کنیم
یک موضوع رو از من به یاد داشته باشید، مهمتر از ابزار و پرامپت مناسب و مدل خوب، معماری که شما میچینید و پیاده سازی میکنید بشدت مهمتر است، در داخل کتابهای آموزشی این حوزه تمرکز اصلی کتابها بر روی معماری هستش و مابقی موضوعات بیشتر به چشم ابزار دیده میشه
@code_crafters
تمرکز ما بر روی LLMs هستش
یکی از این مباحث که گفتیم RAG هستش، یعنی پایگاه دانش سازمانی ایجاد کنیم که به پاسخ کاربران جوابگو باشد
برای اینکار ما نیاز به vector store داریم، که به چند شکل کتابخونه و دیتابیس و موتور وجود دارند
کتابخونهها ثابت هستند، در مقابل تغییر مقاوم و خب سریع تر هستند، نمونه اون FAISS متعلق به شرکت فیسبوک می باشد که بشدت رقابت رو سخت کرده
elasticsearch موتور جستجو
Pgvector اکستنشن پستگرس
Mongodb atlas اکستنشن مونگو
و دیتابیس هم مانند chromadb که ساختار معنایی داره
بیشتر این ابزارها بر پایه knn, ann و tf/idf کار میکنن، در نهایت ما semantic search میخوایم
به هرحال بسته به پروژه و بزرگی سازمان و نیاز شما ابزار مناسب رو انتخاب میکنید
هدف ما ساختن یک vector store هستش که تبدیل به پایگاه دانش سازمان شده و بخش Q&A سازمان و محصول رو راه اندازی کنیم
یک موضوع رو از من به یاد داشته باشید، مهمتر از ابزار و پرامپت مناسب و مدل خوب، معماری که شما میچینید و پیاده سازی میکنید بشدت مهمتر است، در داخل کتابهای آموزشی این حوزه تمرکز اصلی کتابها بر روی معماری هستش و مابقی موضوعات بیشتر به چشم ابزار دیده میشه
@code_crafters
❤6
بچه ها واسه اکانت gpt , Gemini با یه قیمت خیلی پایین روی جیمیل خودتون به آیدی زیر پیام بدید براتون فعال میکنه
@Ss13730
@Ss13730
فرض کنید جملهی زیر را داریم:
«من گرسنه هستم.»
این جمله برای انسان کاملاً قابل فهم است، اما کامپیوتر در ابتدا آن را فقط بهعنوان یک رشته (String) از کاراکترها میبیند و هیچ درکی از مفهوم آن ندارد.
برای اینکه کامپیوتر بتواند مفهوم متن را درک کند، از یک Embedding Model استفاده میکنیم. این مدل متن را به یک لیست از اعداد تبدیل میکند؛ برای مثال:
به این لیست از اعداد Vector (بردار) گفته میشود.
این بردار در واقع مختصات متن در یک فضای n بعدی است؛ یعنی هر عدد یکی از ابعاد این فضا را نشان میدهد و مجموع این اعداد مشخص میکند که متن در چه موقعیتی از فضای معنایی قرار گرفته است.
حالا جملهی دیگری را در نظر بگیرید:
«من غذا میخواهم.»
برای انسان، مفهوم این جمله به «من گرسنه هستم» نزدیک است، اما کامپیوتر هنوز این موضوع را نمیداند. بنابراین این جمله نیز توسط همان Embedding Model به یک بردار تبدیل میشود؛ مثلاً:
اکنون کامپیوتر این دو بردار را با هم مقایسه میکند. اگر فاصلهی آنها کم باشد (یا شباهت آنها زیاد باشد)، نتیجه میگیرد که این دو متن از نظر معنایی به یکدیگر نزدیک هستند، حتی اگر دقیقاً از کلمات یکسانی استفاده نکرده باشند.
اگر هزاران یا میلیونها متن را به همین روش به بردار تبدیل کنیم، مجموعهای از بردارها خواهیم داشت که میتوان آنها را بهصورت یک ماتریس در نظر گرفت؛ ماتریسی که هر سطر آن بردار مربوط به یک متن است. از آنجا که این بردارها معمولاً صدها یا هزاران بعد دارند، به این محیط فضای چندبعدی (Vector Space) گفته میشود.
برای ذخیره و جستجوی سریع این حجم از بردارها از Vector Store یا Vector Database استفاده میکنیم. این سیستمها با استفاده از الگوریتمهای جستجوی شباهت، نزدیکترین بردارها را در میان میلیونها بردار با سرعت بالا پیدا میکنند.
در این فرآیند، Embedding Model وظیفهی تبدیل متن به بردار را بر عهده دارد و خروجی آن Embedding نامیده میشود. سپس این بردارها در یک Vector Store ذخیره میشوند تا بتوان بر اساس شباهت معنایی بین آنها جستجو انجام داد.
@code_crafters
«من گرسنه هستم.»
این جمله برای انسان کاملاً قابل فهم است، اما کامپیوتر در ابتدا آن را فقط بهعنوان یک رشته (String) از کاراکترها میبیند و هیچ درکی از مفهوم آن ندارد.
برای اینکه کامپیوتر بتواند مفهوم متن را درک کند، از یک Embedding Model استفاده میکنیم. این مدل متن را به یک لیست از اعداد تبدیل میکند؛ برای مثال:
[0.1, 1.0, -0.75]
به این لیست از اعداد Vector (بردار) گفته میشود.
این بردار در واقع مختصات متن در یک فضای n بعدی است؛ یعنی هر عدد یکی از ابعاد این فضا را نشان میدهد و مجموع این اعداد مشخص میکند که متن در چه موقعیتی از فضای معنایی قرار گرفته است.
حالا جملهی دیگری را در نظر بگیرید:
«من غذا میخواهم.»
برای انسان، مفهوم این جمله به «من گرسنه هستم» نزدیک است، اما کامپیوتر هنوز این موضوع را نمیداند. بنابراین این جمله نیز توسط همان Embedding Model به یک بردار تبدیل میشود؛ مثلاً:
[0.1, 1.2, -0.65]
اکنون کامپیوتر این دو بردار را با هم مقایسه میکند. اگر فاصلهی آنها کم باشد (یا شباهت آنها زیاد باشد)، نتیجه میگیرد که این دو متن از نظر معنایی به یکدیگر نزدیک هستند، حتی اگر دقیقاً از کلمات یکسانی استفاده نکرده باشند.
اگر هزاران یا میلیونها متن را به همین روش به بردار تبدیل کنیم، مجموعهای از بردارها خواهیم داشت که میتوان آنها را بهصورت یک ماتریس در نظر گرفت؛ ماتریسی که هر سطر آن بردار مربوط به یک متن است. از آنجا که این بردارها معمولاً صدها یا هزاران بعد دارند، به این محیط فضای چندبعدی (Vector Space) گفته میشود.
برای ذخیره و جستجوی سریع این حجم از بردارها از Vector Store یا Vector Database استفاده میکنیم. این سیستمها با استفاده از الگوریتمهای جستجوی شباهت، نزدیکترین بردارها را در میان میلیونها بردار با سرعت بالا پیدا میکنند.
در این فرآیند، Embedding Model وظیفهی تبدیل متن به بردار را بر عهده دارد و خروجی آن Embedding نامیده میشود. سپس این بردارها در یک Vector Store ذخیره میشوند تا بتوان بر اساس شباهت معنایی بین آنها جستجو انجام داد.
@code_crafters
❤4
معماری retrieval:
خب راجب مدلهای نهفته (embedding model) صحبت کردیم و راجب خود embedd و vector store هم آشنا شدیم
داستان بعدی ما از چه قراره
اینکه ما میخوایم دادههای زیاد و سنگین رو داخل vector store ذخیره کنیم
برای اینکار ما دو شیوه کلی داریم granular (دانه ریز) و coarse (دانه درشت)
دانه ریز یعنی ما سند و متن بزرگ رو به به چند متن کوچکتر بشکنیم و ذخیره کنیم
دانه درشت یعنی کل متن رو یکجا ذخیره کنیم
اما هر کدوم مشکلات و مزایای خودشون رو دارن تو حالت دانه ریز دقت بالاست ولی جواب جامع نیست
تو حالت دانه درشت دقت پایین ولی جواب جامع هستش
بهترین رویکرد ترکیب هر دو هستش
بعلاوه اینکه ذخیره متون بزرگ در vector store خودش ضعفهای زیادی هم داره
راهکار چیه؟؟؟
ما دانه درشت رو در بیرون از vector store ذخیره میکنیم و یک شماره ارجاع براش در نظر میگیریم و در vector store دانه ریز رو ذخیره میکنیم همراه شماره ارجاع، به این روش parentdocument گفته میشه
یعنی جستجوی مفهومی برای دقت بیشتر به vector store میدیم شماره ارجاع رو بر میداریم و کتن اصلی رو برمیگردونیم که تو این حالت هم دقت داریم و هم جامعیت
آیا میتونیم کاری کنیم تا جواب یکسری سوالات نامفهوم (کاربری که پرامپت خوب بلد نیست) بنویس رو هم بدیم، از یک رویکرد باحال استفاده میکنیم، خودمون یکسری متن کوتاه تولید میکنیم از روی متن برش خورده (دانه ریز) و اونم در vector store ذخیره میکنیم که به این روش multi vector retrieval گفته میشه
اگه نیاز داشته باشیم یک سیستم فیلترینگ هم داشته باشیم(متن بزرگ ما شامل چند بخش مختلف و متفاوت باشد مثلا در یک کتاب ما چندین فصل و موضوع متفاوت داریم) با استفاده از meta data میتونیم این رو هم هندل کنیم یعنی تو بخش متادیتامون برای هر متن دانه ریز یکسری تگ ذخیره میکنیم برای مثال -فصل سوم -لانگچین، با استفاده از meta data میتونیم این رو هم هندل کنیم
یک نکته vector store بسیار متفاوت از ذخیره سازهای گرافی هستش (دیتابیسهایی که روابط بزرگ و پیچیده رو نشون میدن، هر نود یک آبجکت و هر یال ارتباط اون آبجکت با سایر آبجکتهای موجود رو نشون میده) برای داشتن چیزی حدودی شبیه گراف هم در همین بخش metadata میتونیم یکسری روابط بین امبدینگ هارو هم مشخص کنیم برای مثال تومتادیتا یه همچین چیزی ذخیره میکنیم
relate:{"ai engineering", "hands on"}
@code_crafters
خب راجب مدلهای نهفته (embedding model) صحبت کردیم و راجب خود embedd و vector store هم آشنا شدیم
داستان بعدی ما از چه قراره
اینکه ما میخوایم دادههای زیاد و سنگین رو داخل vector store ذخیره کنیم
برای اینکار ما دو شیوه کلی داریم granular (دانه ریز) و coarse (دانه درشت)
دانه ریز یعنی ما سند و متن بزرگ رو به به چند متن کوچکتر بشکنیم و ذخیره کنیم
دانه درشت یعنی کل متن رو یکجا ذخیره کنیم
اما هر کدوم مشکلات و مزایای خودشون رو دارن تو حالت دانه ریز دقت بالاست ولی جواب جامع نیست
تو حالت دانه درشت دقت پایین ولی جواب جامع هستش
بهترین رویکرد ترکیب هر دو هستش
بعلاوه اینکه ذخیره متون بزرگ در vector store خودش ضعفهای زیادی هم داره
راهکار چیه؟؟؟
ما دانه درشت رو در بیرون از vector store ذخیره میکنیم و یک شماره ارجاع براش در نظر میگیریم و در vector store دانه ریز رو ذخیره میکنیم همراه شماره ارجاع، به این روش parentdocument گفته میشه
یعنی جستجوی مفهومی برای دقت بیشتر به vector store میدیم شماره ارجاع رو بر میداریم و کتن اصلی رو برمیگردونیم که تو این حالت هم دقت داریم و هم جامعیت
آیا میتونیم کاری کنیم تا جواب یکسری سوالات نامفهوم (کاربری که پرامپت خوب بلد نیست) بنویس رو هم بدیم، از یک رویکرد باحال استفاده میکنیم، خودمون یکسری متن کوتاه تولید میکنیم از روی متن برش خورده (دانه ریز) و اونم در vector store ذخیره میکنیم که به این روش multi vector retrieval گفته میشه
اگه نیاز داشته باشیم یک سیستم فیلترینگ هم داشته باشیم(متن بزرگ ما شامل چند بخش مختلف و متفاوت باشد مثلا در یک کتاب ما چندین فصل و موضوع متفاوت داریم) با استفاده از meta data میتونیم این رو هم هندل کنیم یعنی تو بخش متادیتامون برای هر متن دانه ریز یکسری تگ ذخیره میکنیم برای مثال -فصل سوم -لانگچین، با استفاده از meta data میتونیم این رو هم هندل کنیم
یک نکته vector store بسیار متفاوت از ذخیره سازهای گرافی هستش (دیتابیسهایی که روابط بزرگ و پیچیده رو نشون میدن، هر نود یک آبجکت و هر یال ارتباط اون آبجکت با سایر آبجکتهای موجود رو نشون میده) برای داشتن چیزی حدودی شبیه گراف هم در همین بخش metadata میتونیم یکسری روابط بین امبدینگ هارو هم مشخص کنیم برای مثال تومتادیتا یه همچین چیزی ذخیره میکنیم
relate:{"ai engineering", "hands on"}
@code_crafters
❤3
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 ما میتواند چیزی شبیه این باشد:
اما بحث فقط 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
در متنهای قبلی دربارهی 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