chatgpt pgvector
1.0.0
Chatgpt非常適合休閒,通用的問題提問者,但是當需要特定於領域的知識時,Chatgpt不足。此外,它構成了填補知識空白的答案,並且從不引用其來源,因此無法真正被信任。該啟動器應用程序使用嵌入式和矢量搜索的嵌入式應用程序來解決此問題,或更具體地說,以說明如何使用OpenAI的聊天完成API來創建對話界面以特定於領域的知識。
以浮點數為代表的向量表示嵌入,測量文本字符串的“相關性”。這些對於對搜索結果,聚類,分類等進行排名非常有用。相關性是通過餘弦相似性來衡量的。如果兩個向量之間的餘弦相似性接近1,則向量高度相似,並指向相同的方向。在文本嵌入的情況下,兩個嵌入向量之間的高餘弦相似性表明相應的文本字符串高度相關。
該啟動器應用使用嵌入式來生成文檔的向量表示,然後使用向量搜索找到與查詢的最相似文檔。然後使用矢量搜索的結果來構建提示。然後將響應流向用戶。查看有關PGVECTOR和OpenAI嵌入的Supabase博客文章,以獲取更多背景。
使用的技術:
創建和存儲嵌入:
回答查詢:
以下設置指南至少假定具有React和NextJS的Web應用程序的基本熟悉度。使用OpenAI API和Supabase的經驗很有幫助,但並不需要使事情正常工作。
Database → Extensions從Web門戶進行。您也可以通過運行:在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是JavaScript渲染服務。它是一個帶有HTTP API的輕量級Web瀏覽器,使用twisted and qt5)在Python 3中實現了HTTP API。留下了""直接獲取URL。npm run dev