Chatgpt est idéal pour les réponses aux questions occasionnelles et à usage général, mais échoue lorsque des connaissances spécifiques au domaine sont nécessaires. De plus, il compense les réponses pour combler ses lacunes de connaissances et ne cite jamais ses sources, il ne peut donc pas vraiment lui faire confiance. Cette application de démarrage utilise des intégres couplés à la recherche vectorielle pour résoudre ce problème, ou plus spécifiquement, pour montrer comment l'API de Chat E complétion d'Openai peut être utilisé pour créer des interfaces conversationnelles en connaissances spécifiques au domaine.
Les intégres, tels que représentés par des vecteurs des nombres à virgule flottante, mesurent la "relation" des chaînes de texte. Ceux-ci sont super utiles pour classer les résultats de recherche, le regroupement, la classification, etc. La parenté est mesurée par la similitude en cosinus. Si la similitude du cosinus entre deux vecteurs est proche de 1, les vecteurs sont très similaires et pointent dans la même direction. Dans le cas des intérêts du texte, une similitude élevée en cosinus entre deux vecteurs d'incorporation indique que les chaînes de texte correspondantes sont fortement liées.
Cette application de démarrage utilise des incorporations pour générer une représentation vectorielle d'un document, puis utilise la recherche vectorielle pour trouver les documents les plus similaires à la requête. Les résultats de la recherche vectorielle sont ensuite utilisés pour construire une invite. La réponse est ensuite diffusée vers l'utilisateur. Consultez les articles de blog Supabase sur PGVector et OpenAI ENCHEDDINGS pour plus d'informations.
Technologies utilisées:
Création et stockage des intérêts:
Répondre aux requêtes:
Le guide de configuration suivant suppose au moins la familiarité de base en développant des applications Web avec React et NextJS. L'expérience avec les API et Supabase OpenAI est utile mais n'est pas nécessaire pour faire fonctionner les choses.
Database → Extensions . Vous pouvez également le faire en SQL en fonctionnant: 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 . La touche API doit être stockée dans la variable SUPABASE_ANON_KEY et l'URL du projet doit être stockée sous NEXT_PUBLIC_SUPABASE_URL .API Keys . La touche API doit être stockée dans la variable OPENAI_API_KEY .OPEAI_PROXY Soyez fournis pour activer votre proxy personnalisé de l'API OpenAI. Laissé "" pour appeler directement l'API officielle.SPLASH_URL Soyez fournis pour activer votre Splash (Splash est un service de rendu JavaScript. Il s'agit d'un navigateur Web léger avec une API HTTP, implémentée dans Python 3 en utilisant l'API Twisted et QT5). Laissé "" pour récupérer l'URL directement.npm run dev