Dieses Repository enthält Code, um Ihre eigenen Daten mithilfe von OpenAI -Ausbettungen und Supabase mit JavaScript zu speichern und abzufragen.
Stellen Sie vor Beginn sicher, dass Sie die folgende Einrichtung haben:
Klonen Sie das Repository:
git clone https://github.com/muzammildafedar/custom-chatgpt-using-js.git
cd your-repoAbhängigkeiten installieren:
npm install openai
npm install @supabase/supabase-jsErsetzen Sie die Platzhalterwerte im Code durch Ihre tatsächlichen Supabase- und OpenAI -Anmeldeinformationen:
const supabaseUrl = 'Your Supabase URL' ;
const supabaseKey = 'Your Supabase API Key' ;
const openaiConfig = {
apiKey : 'Your OpenAI API Key' ,
} ; StoreMbedding (Titel, Körper, Einbettung) Beschreibung: Speichert den bereitgestellten Titel, die Gremium und die Einbettung in die Supabase -Datenbank.
QueryEmbeddings (Abfrage, Matchthreshold, MatchCount) Beschreibung: Abfragen Supabase für Einbettungen, die der bereitgestellten Abfrage, Schwelle und Anzahl entsprechen.
GetAnswer (Abfrage, Beiträge) Beschreibung: Generiert eine Antwort von OpenAI GPT-3.5 basierend auf der angegebenen Abfrage und den übereinstimmenden Dokumenten.
Tisch erstellen, um Einbettungen zu speichern
create table posts (
id serial primary key,
title text not null,
body text not null,
embedding vector(1536)
);
Um Openai an unsere Einbettungen zu "anschließen", müssen wir eine Funktion in Postgres erstellen. Finden Sie die nächsten Übereinstimmungswerte, wenn Sie einen Vektor gegeben haben.
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;
$$;
Zusätzlich können wir in unserer Post -Tabelle einen Index erstellen, um die Abfrage zu beschleunigen.
create index on posts using ivfflat (embedding vector_cosine_ops)
with
(lists = 100);