CHATGPT นั้นยอดเยี่ยมสำหรับคำตอบคำถามทั่วไปทั่วไป แต่สั้น ๆ เมื่อจำเป็นต้องมีความรู้เฉพาะโดเมน นอกจากนี้ยังทำคำตอบเพื่อเติมเต็มช่องว่างความรู้และไม่เคยอ้างถึงแหล่งข้อมูลดังนั้นจึงไม่น่าเชื่อถือได้ แอพเริ่มต้นนี้ใช้ Embeddings ควบคู่ไปกับการค้นหาเวกเตอร์เพื่อแก้ปัญหานี้หรือโดยเฉพาะอย่างยิ่งเพื่อแสดงให้เห็นว่าการแชทของ OpenAI สามารถใช้ API ได้อย่างไรในการสร้างอินเทอร์เฟซการสนทนาเพื่อความรู้เฉพาะโดเมน
EMBEDDINGS ซึ่งแสดงโดยเวกเตอร์ของหมายเลขจุดลอยตัววัด "ความเกี่ยวข้อง" ของสตริงข้อความ สิ่งเหล่านี้มีประโยชน์มากสำหรับการจัดอันดับผลการค้นหาการจัดกลุ่มการจัดหมวดหมู่ ฯลฯ ความเกี่ยวข้องนั้นวัดจากความคล้ายคลึงกันของโคไซน์ หากความคล้ายคลึงกันของโคไซน์ระหว่างเวกเตอร์สองตัวใกล้เคียงกับ 1 เวกเตอร์มีความคล้ายคลึงกันสูงและชี้ไปในทิศทางเดียวกัน ในกรณีของการฝังข้อความความคล้ายคลึงกันของโคไซน์สูงระหว่างเวกเตอร์การฝังสองตัวบ่งชี้ว่าสตริงข้อความที่เกี่ยวข้องมีความสัมพันธ์กันอย่างมาก
แอพเริ่มต้นนี้ใช้ Embeddings เพื่อสร้างการแสดงเวกเตอร์ของเอกสารแล้วใช้การค้นหาเวกเตอร์เพื่อค้นหาเอกสารที่คล้ายกันมากที่สุดในการสืบค้น ผลลัพธ์ของการค้นหาเวกเตอร์จะถูกใช้เพื่อสร้างพรอมต์ การตอบกลับจะถูกสตรีมไปยังผู้ใช้ ตรวจสอบโพสต์บล็อก supabase บน pgvector และ openai embeddings สำหรับพื้นหลังเพิ่มเติม
เทคโนโลยีที่ใช้:
การสร้างและจัดเก็บ embeddings:
ตอบคำถาม:
คู่มือการตั้งค่าต่อไปนี้ถือว่าอย่างน้อยที่สุดความคุ้นเคยขั้นพื้นฐานในการพัฒนาเว็บแอพด้วย React และ NextJS ประสบการณ์กับ OpenAI APIs และ 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 คีย์ API ควรเก็บไว้ในตัวแปร SUPABASE_ANON_KEY และ URL โครงการควรเก็บไว้ภายใต้ NEXT_PUBLIC_SUPABASE_URLAPI Keys คีย์ API ควรเก็บไว้ในตัวแปร OPENAI_API_KEYOPEAI_PROXY จะให้บริการเพื่อเปิดใช้งานพร็อกซีที่กำหนดเองของ Openai API ทิ้งไว้ "" เพื่อโทรหา API อย่างเป็นทางการโดยตรงSPLASH_URL ให้บริการเพื่อเปิดใช้งาน Splash ของคุณ (Splash เป็นบริการการเรนเดอร์ JavaScript มันเป็นเว็บเบราว์เซอร์ที่มีน้ำหนักเบาพร้อม HTTP API ซึ่งใช้ใน Python 3 โดยใช้ Twisted และ QT5) API ทิ้งไว้ "" เพื่อดึง URL โดยตรงnpm run dev