Repositori ini berisi kode untuk cara menyimpan dan menanyakan data Anda sendiri menggunakan embeddings openai dan supabase menggunakan JavaScript.
Sebelum Anda mulai, pastikan Anda memiliki pengaturan berikut:
Klon Repositori:
git clone https://github.com/muzammildafedar/custom-chatgpt-using-js.git
cd your-repoInstal dependensi:
npm install openai
npm install @supabase/supabase-jsGanti nilai placeholder dalam kode dengan kredensial Supabase dan OpenAI Anda yang sebenarnya:
const supabaseUrl = 'Your Supabase URL' ;
const supabaseKey = 'Your Supabase API Key' ;
const openaiConfig = {
apiKey : 'Your OpenAI API Key' ,
} ; STOREEMBEDDING (Judul, Tubuh, Tanah) Deskripsi: Menyimpan judul, tubuh, dan penyematan yang disediakan dalam database Supabase.
QueryemBeddings (kueri, MatchThreshold, MatchCount) Deskripsi: Queries Supabase untuk embeddings yang cocok dengan kueri, ambang batas, dan hitungan yang disediakan.
GetAnswer (Query, Posts) Deskripsi: Menghasilkan jawaban dari OpenAI GPT-3.5 berdasarkan kueri yang disediakan dan dokumen yang cocok.
Buat meja untuk menyimpan embeddings
create table posts (
id serial primary key,
title text not null,
body text not null,
embedding vector(1536)
);
Untuk "menghubungkan" openai ke embeddings kami, kami perlu membuat fungsi di postgres menemukan nilai pencocokan terdekat saat diberi vektor.
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;
$$;
Selain itu kami dapat membuat indeks pada tabel posting kami untuk mempercepat kueri.
create index on posts using ivfflat (embedding vector_cosine_ops)
with
(lists = 100);