با Docs Agent یک جستجوی محتوای هوش مصنوعی بسازید

جستجوی اطلاعات یکی از رایج ترین کاربردهای مدل های مولد هوش مصنوعی (AI) است. ایجاد یک رابط جستجوی محاوره ای برای محتوای خود با استفاده از هوش مصنوعی به کاربران شما امکان می دهد سؤالات خاصی بپرسند و پاسخ های مستقیم دریافت کنند.

این آموزش به شما نشان می دهد که چگونه یک رابط جستجوی محاوره ای مبتنی بر هوش مصنوعی برای محتوای خود بسازید. این مبتنی بر Docs Agent است، یک پروژه منبع باز که از Google Gemini API برای ایجاد یک رابط جستجوی محاوره‌ای، بدون آموزش مدل هوش مصنوعی جدید یا انجام تنظیم مدل با مدل‌های Gemini استفاده می‌کند. این بدان معناست که شما می توانید این قابلیت جستجو را به سرعت ساخته شده و از آن برای مجموعه های محتوای کوچک و بزرگ استفاده کنید.

برای یک نمای کلی ویدیویی از پروژه و نحوه گسترش آن، از جمله بینش افرادی که آن را می‌سازند، بررسی کنید: جستجوی محتوای هوش مصنوعی | با هوش مصنوعی گوگل بسازید . در غیر این صورت می توانید با پیروی از دستورالعمل های زیر، تمدید پروژه را شروع کنید.

بررسی اجمالی

پروژه Docs Agent یک رابط جستجوی محاوره ای برای یک مجموعه محتوای خاص ارائه می دهد که توسط Google Gemini API و مدل های تولیدی پشتیبانی می شود. کاربران می توانند یک سوال مفصل به سبک مکالمه بپرسند و بر اساس یک مجموعه محتوای خاص پاسخی دقیق دریافت کنند. در پشت صحنه، Docs Agent سؤال را می گیرد و در پایگاه داده برداری محتوا جستجو می کند، و یک درخواست دقیق برای مدل تولیدی، شامل تکه هایی از متن مربوطه ایجاد می کند. مدل مولد پاسخی به سوال ایجاد می کند و Docs Agent پاسخ را قالب بندی کرده و به کاربر ارائه می دهد.

نمودار عملکردی Docs Agent شکل 1. نمودار عملکردی برنامه پروژه Docs Agent.

کلید ایجاد Docs Agent برای پاسخگویی به سؤالات مربوط به محتوای شما، ایجاد یک پایگاه داده برداری از آن محتوا است. شما محتوای خود را به تکه های منطقی متن جدا می کنید و برای هر یک از آنها یک برداری ایجاد می کنید. این بردارها نمایش عددی اطلاعات در هر بخش هستند و با یک تابع جاسازی متن هوش مصنوعی از مدل‌های تولیدی گوگل تولید می‌شوند.

وقتی کاربر سوالی می پرسد، Docs Agent از همان تابع جاسازی متن برای ایجاد یک نمایش عددی از آن سوال استفاده می کند و از آن مقدار برای جستجو در پایگاه داده برداری و یافتن محتوای مرتبط استفاده می کند. نتایج برتر را می گیرد و آن اطلاعات را به یک درخواست برای مدل تولیدی اضافه می کند. مدل هوش مصنوعی سؤال و اطلاعات زمینه اضافی را می گیرد و پاسخی را ایجاد می کند.

راه اندازی پروژه

این دستورالعمل‌ها شما را در راه‌اندازی پروژه Docs Agent برای توسعه و آزمایش راهنمایی می‌کنند. مراحل کلی نصب برخی نرم افزارهای پیش نیاز، تنظیم چند متغیر محیطی، شبیه سازی پروژه از مخزن کد و اجرای نصب پیکربندی است. پروژه کد از Python Poetry برای مدیریت بسته ها و محیط اجرای Python استفاده می کند.

پیش نیازها را نصب کنید

پروژه Docs Agent از Python 3 و Python Poetry برای مدیریت بسته ها و اجرای برنامه استفاده می کند. دستورالعمل‌های نصب زیر برای دستگاه میزبان لینوکس است.

برای نصب نرم افزار مورد نیاز:

  1. پایتون 3 و بسته محیط مجازی venv برای پایتون نصب کنید.
    sudo apt update
    sudo apt install git pip python3-venv
    
  2. برای مدیریت وابستگی ها و بسته بندی پروژه، Python Poetry را نصب کنید.
    curl -sSL https://install.python-poetry.org | python3 -
    

اگر پروژه را گسترش دهید، می‌توانید از Python Poetry برای افزودن کتابخانه‌های پایتون بیشتر استفاده کنید.

تنظیم متغیرهای محیطی

چند متغیر محیطی را تنظیم کنید که برای اجرای پروژه کد Docs Agent لازم است، از جمله کلید Google Gemini API و تنظیمات Python Poetry. اگر از لینوکس استفاده می کنید، ممکن است بخواهید این متغیرها را به فایل $HOME/.bashrc خود اضافه کنید تا تنظیمات پیش فرض را برای جلسات ترمینال خود ایجاد کنید.

برای تنظیم متغیرهای محیطی:

  1. یک Google Gemini API Key دریافت کنید و رشته کلید را کپی کنید.
  2. کلید API را به عنوان یک متغیر محیطی تنظیم کنید. در هاست لینوکس از دستور زیر استفاده کنید.
    export API_KEY=<YOUR_API_KEY_HERE>
    
  3. با تنظیم پارامتر PYTHON_KEYRING_BACKEND مشکل شناخته شده Python Poetry را حل کنید. در هاست لینوکس از دستور زیر استفاده کنید.
    export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
    

پروژه را شبیه سازی و پیکربندی کنید

کد پروژه را دانلود کرده و از دستور نصب Poetry برای دانلود وابستگی های مورد نیاز و پیکربندی پروژه استفاده کنید. برای بازیابی کد منبع پروژه به نرم افزار کنترل منبع git نیاز دارید. خارجی برای دانلود و پیکربندی کد پروژه:

  1. با استفاده از دستور زیر مخزن git را کلون کنید.
    git clone https://github.com/google/generative-ai-docs
    
  2. اختیاری، مخزن git محلی خود را برای استفاده از پرداخت پراکنده پیکربندی کنید، بنابراین فقط فایل‌های پروژه Docs Agent را در اختیار داشته باشید.
    cd generative-ai-docs/
    git sparse-checkout init --cone
    git sparse-checkout set examples/gemini/python/docs-agent/
    
  3. به دایرکتوری ریشه پروژه docs-agent بروید.
    cd examples/gemini/python/docs-agent/
    
  4. برای دانلود وابستگی ها و پیکربندی پروژه، دستور نصب Poetry را اجرا کنید:
    poetry install
    

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

پروژه Docs Agent برای کار با محتوای متنی طراحی شده است و شامل ابزارهایی برای کار با وب سایت هایی است که از Markdown به عنوان فرمت منبع استفاده می کنند. اگر با محتوای وب سایت کار می کنید، باید ساختار دایرکتوری وب سایت ارائه شده را حفظ کنید (یا تکرار کنید) تا وظیفه پردازش محتوا را برای نقشه برداری و ایجاد پیوندهایی به آن محتوا فعال کنید.

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

برای آماده سازی محتوا برای پردازش:

  1. یک دایرکتوری برای محتوایی که می خواهید عامل هوش مصنوعی جستجو کند ایجاد کنید.
    mkdir docs-agent/content/
    
  2. محتوای خود را در دایرکتوری docs-agent/content/ کپی کنید. اگر محتوا یک وب سایت است، ساختار دایرکتوری وب سایت ارائه شده را حفظ کنید (یا تکرار کنید).
  3. برای حذف اطلاعات غیر عمومی یا سایر اطلاعاتی که نمی‌خواهید در جستجوها گنجانده شود، محتوا را در صورت نیاز پاک یا ویرایش کنید.

از اسناد Flutter برای آزمایش استفاده کنید

اگر به مجموعه‌ای از محتوا برای آزمایش Docs Agent نیاز دارید، می‌توانید از اسناد توسعه‌دهنده Flutter برای آزمایش استفاده کنید.

برای دریافت اسناد توسعه دهنده Flutter:

  1. برای محتوایی که می خواهید عامل هوش مصنوعی جستجو کند، به فهرست محتوا بروید.
    cd docs-agent/content/
    
  2. اسناد Flutter را در دایرکتوری docs-agent/content/ کلون کنید.
    git clone --recurse-submodules https://github.com/flutter/website.git
    

محتوای فرآیند

برای اینکه عامل جستجو به طور موثر محتوای مرتبط با سؤالات کاربران را جستجو کند، باید یک پایگاه داده از بردارهایی که محتوای شما را نشان می دهد بسازید. بردارها با استفاده از یک تابع مدل مولد هوش مصنوعی به نام جاسازی متن تولید می شوند. تعبیه‌های متن، نمایش‌های عددی محتوای متن هستند. آنها معنای معنایی متن را به عنوان مجموعه ای از اعداد تقریب می کنند. داشتن نمایش عددی اطلاعات به سیستم اجازه می‌دهد تا سؤال کاربر را بپذیرد، معنای آن را با استفاده از همان تابع جاسازی متن تقریبی کند و سپس با استفاده از الگوریتم k-نزدیک‌ترین همسایگان (k-NN) اطلاعات مرتبط را به عنوان یک محاسبه ریاضی پیدا کند.

تقسیم محتوای متنی

مقدار متنی که بردار جاسازی متن می تواند به طور موثر نشان دهد محدود است. این پروژه متن نمایش داده شده در یک بردار را به 3000 کاراکتر یا کمتر محدود می کند، و این بدان معناست که شما باید محتوای خود را به قطعات زیر آن محدودیت کاراکتر تقسیم کنید. این بخش نحوه استفاده از یک اسکریپت ارائه شده با پروژه Docs Agent را برای تقسیم فایل های Markdown به تکه های متنی کوچکتر توضیح می دهد. برای نکاتی در مورد کار با سایر قالب‌های محتوا، به Handle other formats مراجعه کنید.

برای تقسیم محتوای قالب Markdown:

  1. با ویرایش فایل docs-agent/config.yaml پارامترهای ورودی اسکریپت پردازش را پیکربندی کنید. این مثال زیر مجموعه ای از اسناد Flutter را هدف قرار می دهد:
    input:
    - path: "content/website/src/ui"
      url_prefix: "https://docs.flutter.dev/ui"
    
  2. تغییرات خود را در این فایل پیکربندی ذخیره کنید.
  3. به دایرکتوری پروژه docs-agent بروید:
    cd docs-agent/
    
  4. با اجرای دستور agent chunk محتوای منبع Markdown را تقسیم کنید:
    agent chunk
    

اسکریپت محتوای ورودی را پردازش می کند و فایل های متنی خروجی را در دایرکتوری docs-agent/data ایجاد می کند و متن را بر اساس عناوین، سرفصل ها و پاراگراف های مرتبط تقسیم می کند. پردازش بسته به اندازه محتوای شما ممکن است مدتی طول بکشد.

بردارهای جاسازی متن را ایجاد کنید

پس از تقسیم محتوای خود به قطعات با اندازه مناسب و معنی دار ، می توانید پایگاه داده برداری را با محتوای خود با استفاده از یک تابع جاسازی متن پر کنید. پروژه Docs Agent از پایگاه داده برداری Chroma برای ذخیره بردارهای جاسازی متن استفاده می کند. این دستورالعمل‌ها نحوه استفاده از اسکریپت Docs Agents برای پر کردن یک پایگاه داده برداری با محتوای تقسیم شده را پوشش می‌دهند.

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

  1. به دایرکتوری پروژه docs-agent بروید:
    cd docs-agent/
    
  2. با استفاده از دستور agent populate پایگاه داده برداری را با محتوای خود پر کنید:
    agent populate
    

این اسکریپت از Google Gemini API برای تولید بردارهای جاسازی متن استفاده می کند و سپس خروجی را در پایگاه داده برداری ذخیره می کند. پردازش بسته به اندازه محتوای شما ممکن است مدتی طول بکشد.

فرمت های دیگر را مدیریت کنید

پروژه Docs Agent برای کار با محتوای وب سایت در قالب Markdown طراحی شده است. نویسندگان پروژه چند اسکریپت مبدل برای تولید انواع دیگر محتوا به فرمت Markdown ساخته اند، از جمله Google Docs، فرمت سند قابل حمل (PDF) و Gmail. برای اطلاعات بیشتر در مورد استفاده از این مبدل‌ها، دایرکتوری docs-agent/apps_script مخزن کد را ببینید.

فرمت های محتوای دیگر را تبدیل کنید

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

کد کلیدی که برای پشتیبانی از سایر قالب‌های محتوا باید بسازید، یک اسکریپت تقسیم‌کننده مانند اسکریپت files_to_plain_text.py است. سعی کنید یک اسکریپت یا برنامه بسازید که خروجی مشابهی با این اسکریپت ایجاد کند. به یاد داشته باشید که خروجی متن نهایی باید دارای حداقل قالب بندی و اطلاعات اضافی باشد. اگر از فرمت‌های محتوا مانند HTML یا JSON استفاده می‌کنید، مطمئن شوید که قالب‌بندی غیر اطلاعاتی (برچسب‌ها، اسکریپت‌نویسی، CSS) را تا حد امکان حذف کرده‌اید، تا مقادیر جاسازی‌های متنی که از آنها ایجاد می‌کنید منحرف نشود. آنها

هنگامی که یک اسکریپت تقسیم کننده برای قالب محتوا ایجاد کردید، باید بتوانید اسکریپت populate_vector_database.py را برای پر کردن پایگاه داده برداری خود اجرا کنید. برای اطلاعات بیشتر در مورد پردازش فایل‌ها برای استفاده با Docs Agent، به Docs Agent Preprocess Readme مراجعه کنید.

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

هنگامی که تکمیل پایگاه داده برداری خود را تکمیل کردید، پروژه برای آزمایش آماده است. این پروژه یک تابع بسته بندی را ارائه می دهد تا به شما امکان می دهد پروژه را به صورت محلی اجرا کنید.

برای اجرا و تست رابط وب پروژه:

  1. به دایرکتوری پروژه docs-agent بروید:
    cd docs-agent/
    
  2. اسکریپت راه اندازی برنامه وب را اجرا کنید:
    agent chatbot
    
  3. با استفاده از مرورگر وب خود، به آدرس وب URL نشان داده شده در خروجی اسکریپت راه اندازی بروید و برنامه را آزمایش کنید.
    * Running on http://your-hostname-here:5000
    

گزینه های پیاده سازی

Gemini API ابزارهای برنامه‌نویسی را فراهم می‌کند که می‌توانند اجزای اجرای Docs Agent را جایگزین کنند، به‌ویژه: نوع مدل Gemini بازیابی معنایی و پاسخ‌دهی به سؤالات نسبت داده شده (AQA). شما می توانید از ویژگی Semantic Retrieval Gemini API برای جایگزینی پایگاه داده برداری جداگانه استفاده کنید. ویژگی Semantic Retrieval به شما امکان می دهد برای محتوای خود جاسازی هایی ایجاد کنید و آن محتوا را ذخیره کنید. مدل AQA Gemini برای پاسخ به سوالات با منبع منبع ارائه شده در یک اعلان تنظیم شده است. شما از Semantic Retrieval همراه با مدل AQA برای پاسخ به سؤالات مربوط به محتوای خود در داخل Gemini API استفاده می کنید.

Docs Agent شامل گزینه‌های پیکربندی برای استفاده از ویژگی Semantic Retrieval API، مدل AQA Gemini یا هر دو است. برای اطلاعات بیشتر، به Docs Agent Readme مراجعه کنید.

منابع اضافی

برای اطلاعات بیشتر در مورد پروژه Docs Agent، به مخزن کد مراجعه کنید. اگر برای ساختن برنامه به کمک نیاز دارید یا به دنبال همکاران توسعه دهنده هستید، سرور Discord انجمن توسعه دهندگان Google را بررسی کنید.

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

اگر قصد دارید Docs Agent را برای مخاطبان زیادی مستقر کنید، توجه داشته باشید که استفاده شما از Google Gemini API ممکن است مشمول محدودیت نرخ و سایر محدودیت‌های استفاده باشد. اگر قصد ساختن یک برنامه تولیدی با API Gemini مانند Docs Agent را دارید، سرویس‌های Google Cloud Vertex AI را برای افزایش مقیاس‌پذیری و قابلیت اطمینان برنامه خود بررسی کنید.