برنامه نویسی

جستجوی مبتنی بر هوش مصنوعی با تعبیه‌های OpenAI

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

در این 30 روز از سری OpenAI، من به پروژه‌های هوش مصنوعی و کد آن‌ها نگاه می‌کنم تا به ابهام‌زدایی کمک کنم که چگونه هر برنامه‌نویسی می‌تواند پروژه‌های تولید شده توسط هوش مصنوعی را بسازد.

پل گراهام بیشتر به خاطر کارش بر روی زبان برنامه نویسی Lisp و برای تأسیس شتابدهنده استارتاپی و شرکت سرمایه اولیه Y Combinator شناخته می شود. او همچنین مقالات زیادی می نویسد که دانش زیادی را در اختیار بنیانگذاران فعلی و آینده استارت آپ ها قرار می دهد.

Mckay Wrigley ابزاری به نام Paul-Graham-gpt ساخت، شما می توانید از آن به صورت زنده در اینجا استفاده کنید، تا تمام مقالات PaulG را مرور کنید، و من هیجان زده هستم که وارد آن شوم و نگاهی به نحوه انجام این کار بیندازم.

جستجو و چت مبتنی بر هوش مصنوعی برای پل گراهام مقالات

همه کد و داده های استفاده شده 100٪ منبع باز هستند.

مجموعه داده

مجموعه داده یک فایل CSV است که شامل تمام متن ها و جاسازی های استفاده شده است.

آن را از اینجا دانلود کنید.

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

چگونه کار می کند

Paul Graham GPT 2 چیز را ارائه می دهد:

  1. یک رابط جستجو
  2. یک رابط چت.

جستجو کردن

جستجو با OpenAI Embeddings ایجاد شد (text-embedding-ada-002).

ابتدا مقالات را حلقه می کنیم و برای هر تکه متن جاسازی می کنیم.

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

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

پایگاه داده ما Postgres است…

Mckaywrigley/Paul-Graham-gpt چگونه ساخته شد؟

Paul-Graham-gpt به عنوان جستجو و چت هوش مصنوعی برای همه مقالات پل گراهام توصیف شده است. هنگامی که به کد نزدیکتر نگاه می کنید، از API تعبیه شده از OpenAI استفاده می کند.

تعبیه‌های متنی OpenAI ارتباط رشته‌های متنی را اندازه‌گیری می‌کند. جاسازی ها معمولاً برای موارد زیر استفاده می شوند:
_

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

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

چگونه کار می کند؟

README پروژه در توضیح تکنیک ها کار بسیار خوبی انجام می دهد. نویسنده در حال بررسی همه مقالات و ایجاد جاسازی برای هر تکه متن است. این در تابع generateEmbeddings انجام می شود.

تمام محتوای مقاله در scripts/pg.json ذخیره می شود

// scripts/embed.ts

// this response is loop over using the essay content in the generateEmbeddings fnction
const embeddingResponse = await openai.createEmbedding({
  model: "text-embedding-ada-002",
  input: content
});

...

// This is parsing the essays from the JSON
(async () => {
  const book: PGJSON = JSON.parse(fs.readFileSync("scripts/pg.json", "utf8"));

  await generateEmbeddings(book.essays);
})();

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

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

// pages/api/search.ts

const res = await fetch("https://api.openai.com/v1/embeddings", {
  headers: {
    "Content-Type": "application/JSON",
    Authorization: `Bearer ${apiKey}`
  },
  method: "POST",
  body: JSON.stringify({
    model: "text-embedding-ada-002",
    input
  })
});

...

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

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

// pages/api/search.ts

const {
  data: chunks,
  error
} = await supabaseAdmin.RPC("pg_search", {
  query_embedding: embedding,
  similarity_threshold: 0.01, // cosine similarity
  match_count: matches
});
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پایگاه داده Postgres دارای پسوند pgvector است که در Supabase میزبانی شده است. این به تازگی توسط Supabase در ماه گذشته اعلام شد.

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

از قدم زدن در کد و یادگیری نحوه کارکرد آن لذت بردم. اگر لازم است چیزی را اصلاح کنم، یا اگر اطلاعاتی در مورد کد دارید، لطفا نظر دهید. با تشکر از مک کی برای به اشتراک گذاشتن این مطلب با ما، و حتما آنها را دنبال کنید و کارهای دیگر آنها را در هوش مصنوعی بررسی کنید، کد وند ابزارهای مبتنی بر هوش مصنوعی برای کمک به تیم شما در ساخت سریعتر نرم افزار.

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

سرسخت بمان

تصویر با استفاده از Midjourney ایجاد شد

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا