ChatGPT eignet sich hervorragend für ungezwungene, allgemeine Fragen, die Frage nach dem Domänenspezifischen Wissen erforderlich ist. Darüber hinaus macht es Antworten aus, um seine Wissenslücken zu schließen, und zitiert niemals seine Quellen, sodass es nicht wirklich vertrauenswürdig ist. Diese Starter-App verwendet Emetten mit der Vektorsuche, um dies oder genauer zu lösen, um zu zeigen, wie die API von OpenAIs Chat-Abschlüssen zum Erstellen von Konversationsschnittstellen für domänenspezifische Wissen verwendet werden kann.
Einbettungen, wie durch Vektoren von Gleitkomma-Zahlen dargestellt, messen die "Verwandtschaft" von Textzeichenfolgen. Diese sind sehr nützlich für die Rangliste von Suchergebnissen, Clustering, Klassifizierung usw. Die Verwandtschaft wird durch Cosinus -Ähnlichkeit gemessen. Wenn die Kosinusähnlichkeit zwischen zwei Vektoren nahe 1 liegt, sind die Vektoren sehr ähnlich und zeigen in die gleiche Richtung. Bei Texteinbettungen zeigt eine hohe Kosinus -Ähnlichkeit zwischen zwei Einbettungsvektoren an, dass die entsprechenden Textketten in hohem Maße verwandt sind.
Diese Starter -App verwendet Emetten, um eine Vektordarstellung eines Dokuments zu generieren und dann die Vektorsuche zu finden, um die ähnlichsten Dokumente zur Abfrage zu finden. Die Ergebnisse der Vektorsuche werden dann verwendet, um eine Eingabeaufforderung zu erstellen. Die Antwort wird dann an den Benutzer gestreamt. Schauen Sie sich die Supabase -Blog -Beiträge auf PGVector und OpenAI -Einbettungen an, um mehr Hintergrund zu erhalten.
Verwendete Technologien:
Erstellen und Speichern der Einbettungen:
Reaktion auf Fragen:
In der folgenden Einrichtungshandbuch werden zumindest grundlegende Vertrautheit mit React und NextJs entwickelt. Erfahrung mit OpenAI -APIs und Supabase ist hilfreich, aber nicht erforderlich, um die Dinge zum Laufen zu bringen.
Database → Extensions erfolgen. Sie können dies auch in SQL tun, indem Sie ausgeführt werden: 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 . Der API -Schlüssel sollte in der Variablen SUPABASE_ANON_KEY gespeichert werden und die Projekt -URL sollte unter NEXT_PUBLIC_SUPABASE_URL gespeichert werden.API Keys . Der API -Schlüssel sollte in der Variablen OPENAI_API_KEY gespeichert werden.OPEAI_PROXY werden bereitgestellt, um Ihren benutzerdefinierten Proxy von OpenAI -API zu aktivieren. Ließ es "" , offizielle API direkt anzurufen.SPLASH_URL zur Aktivierung Ihres Splashs (Splash ist ein JavaScript -Rendering -Service. Es handelt sich um einen leichten Webbrowser mit einer HTTP -API, die in Python 3 mit Twisted und QT5) -API implementiert ist. Ließ es "" , URL direkt zu holen.npm run dev