پشته GraphRAG شما دو پایگاه داده است. باید یکی باشه

https3A2F2Fdev to uploads.s3.us east 2.amazonaws.com2Fuploads2Farticles2F3v7qjyt5pk7o73rl02t7

{
“title”: “پایگاه داده سامیاما: ادغام جستجو و استدلال گراف”,
“content”: “

سامیاما گراف: پایگاه داده‌ای یکپارچه برای جستجو و استدلال

n

اکثر سیستم‌های موجود در زمینه GraphRAG تا کنون به دو لایه مختلف تقسیم شده‌اند: یکی برای ذخیره‌سازی برداری که به جستجوی معنایی پرداخته و دیگری برای ذخیره‌سازی گراف که به استدلال رابطه‌ای می‌پردازد. این ساختار دو لایه با چالش‌های اساسی همراه است؛ به خصوص در زمینه پیوندی که بین جستجوی معنایی و پیمایش گراف وجود دارد، که این پیوند در کد برنامه و نه در موتور پایگاه داده اتفاق می‌افتد. این موضوع موجب از دست رفتن کنترل پرس‌وجو و کاهش بهینه‌سازی همزمان جستجو و پیمایش می‌شود.

n

سامیاما گراف (Samyama Graph) یک پایگاه داده بومی زبان Rust است که این دو سیستم را در یک موتور واحد ادغام کرده است. ویژگی‌های برجسته آن شامل: پرس‌وجو به سبک OpenCypher، جستجوی برداری HNSW، الگوریتم‌های گراف، پروتکل سازگار با Redis و استقرار به صورت تک‌باینری می‌باشد.

n

مزایا:

n

    n

    در سایت خبری خبررسان آخرین اخبارحوادث,سیاسی,فرهنگ وهنر,اقتصاد و تکنولوژی,دفاعی,ورزشی,ایران,جهان را بخوانید.

  1. کاهش وابستگی کد: حذف نیاز به انتقال شناسه‌ها و امتیازات بین سیستم‌ها.
  2. n

  3. توضیح‌پذیری ذاتی: مسیرهای گراف به طور طبیعی دلایل بازیابی را نشان می‌دهند، که این امر در حوزه‌های پزشکی و مالی اهمیت ویژه‌ای دارد.
  4. n

  5. بهینه‌سازی یکپارچه: ترکیب فیلتر ساختاری، رتبه‌بندی هیبریدی و پیمایش در لایه ذخیره‌سازی.
  6. n

  7. مناسب برای داده‌های پیچیده: شامل نمودارهای دانش زیستی، کشف تقلب و زنجیره تأمین.
  8. n

n

سامیاما گراف در حال توسعه مداوم است و به عنوان ابزاری متن‌باز برای توسعه‌دهندگانی که در زمینه GraphRAG، دانش‌نامه‌ها و زیرساخت‌های هوش مصنوعی فعالیت می‌کنند، در GitHub در دسترس است.

n

اکثر سیستم‌های GraphRAG امروزی به صورت حداقل با دو لایه ذخیره‌سازی طراحی می‌شوند.

n

یک سیستم مختص ذخیره‌سازی بردارها است.

n

سیستم دیگر مختص ذخیره‌سازی روابط می‌باشد.

n

پایگاه داده برداری به سوالاتی نظیر:

n

n

کدام بخش‌ها، موجودیت‌ها، اسناد یا مفاهیم از نظر معنایی به این پرسش نزدیک‌تر هستند؟

n

n

در حالی که پایگاه داده گراف به سوالاتی نظیر:

n

n

این موجودیت‌ها چگونه به یکدیگر مرتبط هستند و چه مسیرهایی این ارتباط را توضیح می‌دهند؟

n

n

پاسخ می‌دهد. اگرچه این معماری کار می‌کند، ولی یک مشکل اساسی وجود دارد:

n

پیوند بین بازیابی معنایی و استدلال گراف در خارج از پایگاه داده انجام می‌شود.

n

این پیوستگی معمولاً در کد برنامه، کد هماهنگ یا گردش کار عامل به وقوع می‌پیوندد. به این صورت که برنامه تطابق‌های برداری را بازیابی کرده و آن‌ها را به پایگاه داده گراف ارسال می‌کند و سپس پیمایش را انجام می‌دهد. در نهایت، از یک LLM (مدل زبان بزرگ) برای جمع‌آوری پاسخ نهایی درخواست می‌کند.

n

این روش کار می‌کند، اما ایدئال نیست.

n

زمانی که اتصال به خارج از پایگاه داده جابجا می‌شود، برنامه‌ریز پرس‌وجو کنترل خود را از دست می‌دهد.

n

در این حالت، سیستم نمی‌تواند جستجوهای برداری، پیمایش گراف، فیلتر کردن، رتبه‌بندی و الگوریتم‌های گراف را به طور همزمان بهینه کند، زیرا هر لایه تنها بخشی از مشکل را درک می‌کند.

n

این مشکل معماری‌ای است که ما در حال بررسی آن هستیم نمودار سامیاما.

n

سامیاما گراف یک پایگاه داده گراف برداری بومی Rust است که برای GraphRAG، نمودارهای دانش، حافظه عامل هوش مصنوعی و تجزیه و تحلیل روابط در مقیاس بزرگ طراحی شده است.

n

این پایگاه داده عناصر زیر را گرد هم می‌آورد:

n

    n

  • پرس‌وجو به سبک OpenCypher
  • n

  • جستجوی برداری
  • n

  • الگوریتم‌های گراف
  • n

  • دسترسی سازگار با Redis
  • n

  • زمان اجرای Rust به صورت تک باینری
  • n

n

ایده اصلی این است که:

n

n

پیمایش گراف و جستجوی برداری نباید همیشه در سیستم‌های جداگانه اجرا شوند. برای بسیاری از کارهای مربوط به GraphRAG، آن‌ها باید به یک موتور تعلق داشته باشند.

n

n

n

چرا GraphRAG به چیزی فراتر از جستجوی برداری نیاز دارد؟

n

n

جستجوی برداری در پیدا کردن شباهت‌های معنایی بسیار موثر است.

n

این قابلیت را دارد که متن، موجودیت‌ها یا اسنادی که “نزدیک” به یک پرسش هستند، شناسایی کند. این ویژگی برای RAG بسیار ارزشمند است.

n

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

n

به عنوان مثال، اگر کاربر بپرسد:

n

n

کدام کارآزمایی‌های بالینی با یک دارو، یک مسیر، و یک وضعیت مرتبط هستند؟

n

n

یک سیستم جستجوی برداری ممکن است اسناد مرتبط را پیدا کند، اما نمی‌تواند به طور طبیعی پاسخ دهد:

n

    n

  • کدام دارو به چه شرایطی مرتبط است؟
  • n

  • کدام مسیر این‌ها را به هم وصل می‌کند؟
  • n

  • کدام مقاله این ارتباط را تأیید می‌کند؟
  • n

  • کدام کارآزمایی بالینی مرتبط است؟
  • n

  • کدام مسیر از طریق نمودار دانش پاسخ را توضیح می‌دهد؟
  • n

n

این‌ها سوالات نموداری هستند.

n

یک نمودار می‌تواند ارتباطات و روابط را به طور مستقیم نمایش دهد:

n

Drug -> targets -> ProteinnProtein -> participates_in -> PathwaynPathway -> associated_with -> ConditionnCondition -> studied_in -> ClinicalTrialnPaper -> supports -> Relationship

n

اینجاست که GraphRAG به طرز قابل توجهی از RAG اولیه پیشرفته‌تر می‌شود.

n

به جای اینکه فقط متن مشابه را بازیابی کند، سیستم می‌تواند موجودیت‌های مرتبط را پیدا کند و سپس بر روی روابط استدلال کند.

n

n

معماری متداول GraphRAG

n

n

یک معماری متداول GraphRAG به شکل زیر است:

n

پرسش کاربرn↓nمدل تعبیهn↓nپایگاه داده برداریn↓nکد برنامه / منطق عاملn↓nپایگاه داده گرافn↓nکد برنامه / رتبه‌بندی مجددn↓nپاسخ LLM

n

این روش عملی است اما پیچیدگی‌هایی را به همراه دارد.

n

برنامه باید تصمیماتی بگیرد:

n

    n

  • چند نتیجه برداری باید بازیابی شود؟
  • n

  • کدام شناسه‌ها باید به گراف ارسال شوند؟
  • n

  • چقدر باید پیمایش انجام شود؟
  • n

  • کدام مسیرها اهمیت دارند؟
  • n

  • چطور نمرات گراف و برداری را ترکیب کنیم؟
  • n

  • چگونه از بافت‌ تکراری، نامربوط یا ضعیف جلوگیری کنیم؟
  • n

  • چگونه توضیح دهیم که چرا زمینه نهایی انتخاب شده است؟
  • n

n

به مرور زمان، لایه ارکستراسیون به یک موتور جستجوی سفارشی تبدیل می‌شود.

n

اما واقعاً یک موتور پرس‌وجو نیست. معمولاً مدل هزینه، بهینه‌سازی یکپارچه و درک عمیق از طرح داده در هر دو حالت بازیابی ندارد.

n

این نشان‌دهنده یک مشکل طراحی است.

n

اگر برنامه اتصال بین جستجوی برداری و پیمایش گراف را مدیریت کند، پایگاه داده دیگر قادر به حل مشکل بازیابی کامل نخواهد بود.

n

n

رویکرد طراحی جدید

n

n

سامیاما گراف یک رویکرد جدید را دنبال می‌کند.

n

به جای اینکه نمودار و بردار را به عنوان ذخیره‌های جداگانه در نظر بگیرد، بررسی می‌کند که چه اتفاقی می‌افتد وقتی که هر دو بخش از یک موتور پایگاه داده هستند.

n

هدف این است که گردش کاری را پشتیبانی کند که در آن توسعه‌دهندگان بتوانند:

n

    n

  • بازیابی معنایی
  • n

  • تطبیق الگوی گراف
  • n

  • پیمایش روابط
  • n

  • الگوریتم‌های گراف
  • n

  • فیلتر ساختاری
  • n

n

را در یک سیستم ترکیب کنند.

n

در عمل، این امر اهمیت دارد زیرا GraphRAG به ندرت فقط “نزدیک‌ترین بخش‌ها” را پیدا می‌کند.

n

یک پرسش مفید در GraphRAG غالباً به این صورت خواهد بود:

n

n

مفاهیم مرتبط معنایی را پیدا کنید، سپس از طریق روابط قابل اعتماد گسترش دهید، بر اساس نوع موجودیت فیلتر کنید، بر اساس ساختار گراف رتبه‌بندی کنید و یک مسیر قابل توضیح ارائه دهید.

n

n

این یک مشکل بردار گراف است.

n

نه تنها یک مشکل برداری.

n

n

چرا یک موتور می‌تواند مفید باشد

n

n

نزدیک نگه داشتن پیمایش گراف و جستجوی برداری به همدیگر مزایای زیادی به همراه دارد.

n

n

1. کد ارکستراسیون کمتر

n

n

زمانی که بردار و گراف به طور جداگانه عمل می‌کنند، نیاز به کد چسب بیشتری احساس می‌شود.

n

توسعه‌دهندگان باید منطق سفارشی بنویسند تا شناسه‌ها، امتیازات، ابرداده‌ها و فیلترها را بین سیستم‌ها جابجا کنند.

n

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

n

n

2. توضیح‌پذیری بهتر

n

n

سیستم‌های GraphRAG باید علاوه بر بازگرداندن یک پاسخ، توضیح دهند که چرا آن پاسخ بازیابی شده است.

n

نمودارها به طور طبیعی قابل توضیح هستند زیرا می‌توانند مسیرها را نمایش دهند:

n

پرسشn-> موجودیت مطابقت یافتهn-> مفهوم مرتبطn-> منبع حمایت‌کنندهn-> زمینه پاسخ نهایی

n

این امر به ویژه در حوزه‌هایی مانند مراقبت‌های بهداشتی، مالی، امنیت سایبری، انطباق و مدیریت دانش سازمانی اهمیت دارد.

n

n

3. مناسب‌تر برای داده‌های پیچیده

n

n

برخی از داده‌ها به طور طبیعی به هم متصل می‌شوند:

n

    n

  • دانش زیست پزشکی
  • n

  • آزمایش‌های بالینی
  • n

  • شبکه‌های کلاهبرداری
  • n

  • وابستگی‌های زیرساختی
  • n

  • معماری نرم‌افزار
  • n

  • روابط زنجیره تأمین
  • n

  • نمودارهای دانش سازمانی
  • n

  • حافظه عامل
  • n

n

برای این گونه بارهای کاری، روابط فراداده اختیاری نیستند و هسته اصلی مسئله به شمار می‌روند.

n

n

4. تجربه توسعه‌دهنده بهینه‌تر

n

n

یک پایگاه داده گراف برداری می‌تواند به راحتی استدلال پشته را تسهیل کند.

n

به جای اینکه بپرسند:

n

n

کدام پایگاه داده مالک این بخش بازیابی است؟

n

n

توسعه‌دهندگان می‌توانند بپرسند:

n

n

چه پرس‌و‌جویی از نوع بردار گراف باید اجرا کنم؟

n

n

n

چرا سامیاما گراف؟

n

n

سامیاما گراف به زبان Rust نوشته شده است.

n

Rust برای زیرساخت پایگاه داده بسیار مناسب است زیرا کنترل قوی بر حافظه، عملکرد و همزمانی را بدون نیاز به زمان اجرا جمع‌آوری شده ارائه می‌دهد.

n

این موضوع در مورد پایگاه داده گراف-برداری اهمیت دارد.

n

بار کاری گراف می‌تواند به شدت حافظه‌بر باشد و جستجوی برداری ممکن است نیاز به محاسبات سنگینی داشته باشد. ترکیب هر دو در یک موتور نیاز به توجه بسیار به عملکرد و اجرای قابل پیش‌بینی دارد.

n

زنگ به ما یک پایه قوی برای این هدف ارائه می‌دهد.

n

n

آنچه سامیاما گراف امروز حمایت می‌کند

n

n

سامیاما گراف در حال حاضر بر روی موارد زیر تمرکز دارد:

n

    n

  • پرس‌وجو به سبک OpenCypher
  • n

  • جستجوی برداری مبتنی بر HNSW
  • n

  • الگوریتم‌های گراف
  • n

  • دسترسی به پروتکل سازگار با Redis
  • n

  • استقرار به صورت تک‌باینری
  • n

  • راه‌اندازی محلی مبتنی بر داکر
  • n

  • نمودار دانش و بارهای کاری به سبک GraphRAG
  • n

n

این تلاش نمی‌کند که همه پایگاه داده‌ها به طور همزمان عمل کنند.

n

هدف این است که برای توسعه‌دهندگانی که به استدلال داده‌های متصل و بازیابی معنایی در یک سیستم نیاز دارند، مفید باشد.

n

n

محدودیت‌های کنونی

n

n

سامیاما گراف هنوز در حال رشد است و ما می‌خواهیم در این مورد شفاف باشیم.

n

امروز چند محدودیت اصلی وجود دارد:

n

    n

  • پشتیبانی OpenCypher هنوز کامل نشده است.
  • n

  • محصول و اکوسیستم همچنان در حال تکامل است.
  • n

  • نمونه‌ها، ادغام‌ها و آموزش‌ها در حال گسترش هستند.
  • n

  • برخی ادعاهای بزرگتر نیاز به پشتیبانی تکرارپذیری عمومی بیشتری دارند.
  • n

n

ما معتقدیم که زیرساخت‌های متن‌باز زمانی اعتبار می‌یابند که نقاط قوت و ضعف فعلی به روشنی شناخته شوند.

n

n

با سامیاما گراف چه می‌توانید بسازید؟

n

n

سامیاما گراف زمانی مفید است که برنامه شما به هر دو استدلال داده‌های متصل و بازیابی معنایی نیاز دارد.

n

نمونه‌هایی از کاربردهای آن عبارتند از:

n

    n

  • سیستم‌های GraphRAG که جستجوی برداری را با پیمایش گراف ترکیب می‌کنند.
  • n

  • برنامه‌های کاربردی نمودار دانش برای داده‌های سازمانی، تحقیقاتی، مراقبت‌های بهداشتی و عملیاتی.
  • n

  • حافظه عامل هوش مصنوعی که در آن موجودیت‌ها، ابزارها، اقدامات و زمینه به عنوان یک نمودار ذخیره می‌شوند.
  • n

  • نمودارهای زیست پزشکی و بالینی شامل مقالات، آزمایشات، مسیرها، داروها و شرایط.
  • n

  • نمودارهای تقلب و تحقیق برای کشف روابط و تجزیه و تحلیل الگوها.
  • n

  • نمودارهای زیرساخت و وابستگی برای تجزیه و تحلیل تأثیر و کاوش ریشه.
  • n

  • تجزیه و تحلیل گراف در مقیاس بزرگ با استفاده از الگوریتم‌های گراف داخلی.
  • n

n

n

آن را به صورت محلی امتحان کنید

n

n