تعتبر ChatGPT رائعة بالنسبة إلى إجابات أسئلة غير رسمية للأغراض العامة ولكنها تقصر عند الحاجة إلى معرفة خاصة بالمجال. علاوة على ذلك ، فإنه يعوض إجابات لملء فجوات المعرفة ولا تستشهد بمصادرها أبدًا ، لذلك لا يمكن الوثوق بها حقًا. يستخدم تطبيق المبتدئين هذا التضمينات مقرونة بالبحث في المتجه لحل هذا ، أو بشكل أكثر تحديداً ، لإظهار كيف يمكن استخدام API من Openai للدردشة لإنشاء واجهات محادثة للمعرفة الخاصة بالمجال.
التضمينات ، كما تمثلها متجهات أرقام النقطة العائمة ، تقيس "علاقة" سلاسل النص. هذه مفيدة للغاية لتصنيف نتائج البحث ، والتجميع ، والتصنيف ، وما إلى ذلك. يتم قياس العلاقة من خلال تشابه جيب التمام. إذا كان تشابه جيب التمام بين متجهين يقترب من 1 ، فإن المتجهات متشابهة للغاية وتشير في نفس الاتجاه. في حالة تضمينات النص ، يشير تشابه جيب التمام العالي بين متجهات التضمين إلى أن سلاسل النص المقابلة مرتبطة ارتباطًا وثيقًا.
يستخدم تطبيق المبتدئين التضمينات لإنشاء تمثيل متجه لمستند ، ثم يستخدم البحث في المتجهات للعثور على المستندات الأكثر تشابهًا مع الاستعلام. ثم يتم استخدام نتائج البحث المتجه لإنشاء مطالبة. ثم يتم دفق الاستجابة إلى المستخدم. تحقق من منشورات مدونة Supabase على PGVector و Openai التضمين لمزيد من الخلفية.
التقنيات المستخدمة:
إنشاء وتخزين التضمينات:
الرد على الاستفسارات:
يفترض دليل الإعداد التالي على الأقل من الألفة الأساسية تطوير تطبيقات الويب مع React و NextJs. تجربة مع APIs Openai و Supabase مفيدة ولكن ليست مطلوبة للحصول على الأشياء تعمل.
Database → Extensions . يمكنك أيضًا القيام بذلك في SQL عن طريق التشغيل: create extension vector;
create table documents (
id bigserial primary key ,
content text ,
url text ,
embedding vector ( 1536 )
); create or replace function match_documents (
query_embedding vector( 1536 ),
similarity_threshold float,
match_count int
)
returns table (
id bigint ,
content text ,
url text ,
similarity float
)
language plpgsql
as $$
begin
return query
select
documents . id ,
documents . content ,
documents . url ,
1 - ( documents . embedding <=> query_embedding) as similarity
from documents
where 1 - ( documents . embedding <=> query_embedding) > similarity_threshold
order by documents . embedding <=> query_embedding
limit match_count;
end;
$$;gh repo clone gannonh/chatgpt-pgvector cd chatgpt-pgvector
code .npm installcp .env.local.example .env.localProject → API . يجب تخزين مفتاح API في متغير SUPABASE_ANON_KEY وينبغي تخزين عنوان URL للمشروع بموجب NEXT_PUBLIC_SUPABASE_URL .API Keys . يجب تخزين مفتاح API في متغير OPENAI_API_KEY .OPEAI_PROXY يتم توفيره لتمكين الوكيل المخصص الخاص بك من Openai API. تركها "" لاستدعاء واجهة برمجة التطبيقات الرسمية مباشرة.SPLASH_URL يتم توفيرها لتمكين Splash (Splash هي خدمة تقديم JavaScript. إنها متصفح ويب خفيف الوزن مع واجهة برمجة تطبيقات HTTP ، يتم تنفيذها في Python 3 باستخدام واجهة برمجة تطبيقات Twisted و QT5). تركها "" لجلب عنوان URL مباشرة.npm run dev