این مقاله به بررسی یک سناریوی کوچک اما قدرتمند میپردازد: دریافت تصاویر به صورت محلی، جستجوی آنها با استفاده از زبان طبیعی و اجازه دادن به یک عامل (Agent) برای تصمیمگیری در مورد زمان فراخوانی ابزارها. تمام این فرایند بر روی دستگاه شما اجرا میشود و یک نمونه ساده از نحوه استفاده از Microsoft Agent Framework با embeddingهای محلی است.
در این پروژه از CLIP برای embeddingهای تصویر (ONNX) جهت جستجوی سریع برداری محلی، Ollama به عنوان runtime محلی LLM و Microsoft Agent Framework برای اتصال فراخوانی ابزارها به یک عامل مکالمهای استفاده شده است. کد نمونه در این آدرس قابل دسترسی است: https://github.com/elbruno/elbruno.localembeddings/tree/main/samples/VisionMemoryAgentSample.
این سناریو به شما این امکان را میدهد که با ارائه مسیر تصویر (یا یک پوشه) به عامل، embeddingها را به صورت محلی ذخیره کرده و سپس با استفاده از زبان طبیعی، تصاویر مشابه را جستجو کنید. به عنوان مثال، میتوانید سوالاتی مانند "یافتن تصاویری شبیه به یک آسمان زیبا در هنگام غروب" یا "دریافت تمام تصاویر از یک پوشه" را مطرح کنید. نیازی به برچسبگذاری تصاویر نیست، زیرا embeddingها این کار را انجام میدهند.
برای اجرای این پروژه، به .NET 10 SDK، Ollama و Microsoft Agent Framework (ارائهدهنده Ollama) نیاز دارید. مراحل اولیه شامل اجرای Ollama و دانلود یک مدل (مانند llama3.2) و همچنین دانلود مدلهای مورد نیاز CLIP به صورت محلی است. کد اصلی شامل یک عامل محلی با ابزارهای تابعی است که از IChatClient و AIFunctionFactory برای تعریف و فراخوانی ابزارها استفاده میکند. استفاده از UseFunctionInvocation() در chatClient برای اجرای ابزارها به جای بازگرداندن JSON خام ضروری است.
ابزارهای اصلی شامل IngestImage (برای دریافت یک تصویر و ذخیره embedding آن)، IngestImagesFromFolder (برای دریافت تمام تصاویر از یک پوشه) و FindSimilarImages (برای جستجوی تصاویر مشابه با استفاده از زبان طبیعی) هستند. این نمونه یک روش ساده و کاربردی برای استفاده از Microsoft Agent Framework با embeddingهای محلی و LLMهای محلی مانند Ollama ارائه میدهد.
مشاهده مطلب اصلی