يحتوي هذا المستودع على رمز لكيفية تخزين البيانات الخاصة بك والاستعلام عنها باستخدام Openai Embeddings و Supabase باستخدام JavaScript.
قبل أن تبدأ ، تأكد من أن لديك الإعداد التالي:
استنساخ المستودع:
git clone https://github.com/muzammildafedar/custom-chatgpt-using-js.git
cd your-repoتثبيت التبعيات:
npm install openai
npm install @supabase/supabase-jsاستبدل قيم العنصر النائب في الكود مع بيانات اعتماد Supabase و Openai الفعلية:
const supabaseUrl = 'Your Supabase URL' ;
const supabaseKey = 'Your Supabase API Key' ;
const openaiConfig = {
apiKey : 'Your OpenAI API Key' ,
} ; MOSTEMBEDDing (العنوان ، الجسم ، التضمين) الوصف: يخزن العنوان المقدم ، الجسم ، والتضمين في قاعدة بيانات SUPABASE.
QueryEmbeddings (الاستعلام ، عتبة matchthold ، MatchCount) الوصف: الاستعلامات supabase للتضمينات التي تتطابق مع الاستعلام المقدم ، العتبة ، والعد.
GetAnswer (استعلام ، منشورات) الوصف: إنشاء إجابة من Openai GPT-3.5 بناءً على الاستعلام المقدم والمستندات المتطابقة.
إنشاء جدول لتخزين التضمينات
create table posts (
id serial primary key,
title text not null,
body text not null,
embedding vector(1536)
);
من أجل "ربط" Openai على تضميناتنا ، نحتاج إلى إنشاء وظيفة في Postgres ، ابحث عن أقرب قيم مطابقة عند إعطاء ناقل.
create or replace function match_posts (
query_embedding vector(1536),
match_threshold float,
match_count int
)
returns table (
id bigint,
body text,
title text,
similarity float
)
language sql stable
as $$
select
posts.id,
posts.body,
posts.title,
1 - (posts.embedding <=> query_embedding) as similarity
from posts
where 1 - (posts.embedding <=> query_embedding) > match_threshold
order by similarity desc
limit match_count;
$$;
بالإضافة إلى ذلك ، يمكننا إنشاء فهرس على جدول منشوراتنا لتسريع الاستعلام.
create index on posts using ivfflat (embedding vector_cosine_ops)
with
(lists = 100);