Ce référentiel contient du code pour stocker et interroger vos propres données à l'aide d'Openai Embeddings et Supabase à l'aide de JavaScript.
Avant de commencer, assurez-vous d'avoir la configuration suivante:
Clone le référentiel:
git clone https://github.com/muzammildafedar/custom-chatgpt-using-js.git
cd your-repoInstallez les dépendances:
npm install openai
npm install @supabase/supabase-jsRemplacez les valeurs d'espace réservé dans le code par vos informations d'identification réelles Supabase et Openai:
const supabaseUrl = 'Your Supabase URL' ;
const supabaseKey = 'Your Supabase API Key' ;
const openaiConfig = {
apiKey : 'Your OpenAI API Key' ,
} ; StoreEmbedding (titre, corps, intégration) Description: stocke le titre fourni, le corps et l'incorporation dans la base de données Supabase.
QueryEmbeddings (Query, MatchThreshold, MatchCount) Description: Requête Supabase pour les intégres qui correspondent à la requête, à un seuil et au comptage fournis.
Getanswer (requête, publications) Description: génère une réponse à partir d'Openai GPT-3.5 en fonction de la requête fournie et des documents correspondants.
Créer une table pour stocker des intégres
create table posts (
id serial primary key,
title text not null,
body text not null,
embedding vector(1536)
);
Afin de «connecter» OpenIA à nos intégres, nous devons créer une fonction dans Postgres, trouvez les valeurs de correspondance les plus proches lorsqu'ils sont donnés d'un vecteur.
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;
$$;
De plus, nous pouvons créer un index sur notre table de messages pour accélérer la requête.
create index on posts using ivfflat (embedding vector_cosine_ops)
with
(lists = 100);