ChatGptは、カジュアルで汎用的な質問回答に最適ですが、ドメイン固有の知識が必要な場合は不足しています。さらに、それは知識のギャップを埋めるための答えを構成し、そのソースを引用することはないので、それは本当に信頼することはできません。このスターターアプリは、ベクトル検索と組み合わせた埋め込みを使用して、これを解決するために、またはより具体的には、Openaiのチャット完了APIを使用して、ドメイン固有の知識への会話型インターフェイスを作成する方法を示します。
埋め込みは、浮動小数点数のベクトルで表されるように、テキスト文字列の「関連性」を測定します。これらは、検索結果、クラスタリング、分類などのランキングに非常に役立ちます。関連性は、COSINEの類似性によって測定されます。 2つのベクトル間のコサインの類似性が1に近い場合、ベクトルは非常に類似しており、同じ方向に向かっています。テキストの埋め込みの場合、2つの埋め込みベクトル間の高いコサインの類似性は、対応するテキスト文字列が高度に関連していることを示しています。
このスターターアプリは、埋め込みを使用してドキュメントのベクトル表現を生成し、ベクトル検索を使用してクエリに最も類似したドキュメントを見つけます。次に、ベクトル検索の結果を使用してプロンプトを作成します。その後、応答はユーザーにストリーミングされます。より背景については、PGVectorとOpenai埋め込みに関するSupabaseブログの投稿をご覧ください。
使用されるテクノロジー:
埋め込みの作成と保存:
クエリへの応答:
次のセットアップガイドでは、少なくともReactとNextJSのWebアプリを開発する基本的な親しみやすさを想定しています。 Openai APIとSupabaseでの経験は役立ちますが、物事を機能させるために必要ではありません。
Database → Extensionsを介して実行できます。これを実行することでSQLでこれを行うこともできます。 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の下のSupabase Webポータルで見つけることができます。 APIキーはSUPABASE_ANON_KEY変数に保存され、プロジェクトURLはNEXT_PUBLIC_SUPABASE_URLに保存する必要があります。API Keysの下のOpenai Webポータルで見つけることができます。 APIキーは、 OPENAI_API_KEY変数に保存する必要があります。OPEAI_PROXY OpenAI APIのカスタムプロキシを有効にするために提供します。それを残した""公式APIを直接呼び出す。SPLASH_URL 、Splashを有効にするために提供されます(SplashはJavaScriptレンダリングサービスです。これは、TwiThon 3にTwistedおよびQT5)APIを使用して実装されたHTTP APIを備えた軽量のWebブラウザーです。残った"" urlを直接取得する。npm run dev