CHATGPT отлично подходит для повседневных, общего назначения вопросов-ответов, но не хватает, когда необходимы знания, специфичные для домена. Кроме того, он составляет ответы, чтобы заполнить свои пробелы в знаниях и никогда не ссылаться на свои источники, поэтому его нельзя доверять. В этом стартовом приложении используются вставки в сочетании с векторным поиском, чтобы решить это или, в частности, чтобы показать, как API завершения чата OpenAI можно использовать для создания разговорных интерфейсов для знаний, специфичных для домена.
Встраиваемые, представленные векторами чисел с плавающей точкой, измеряют «родственность» текстовых строк. Они очень полезны для ранжирования результатов поиска, кластеризации, классификации и т. Д. Связанность измеряется сходством косинуса. Если сходство косинуса между двумя векторами близко к 1, векторы очень похожи и указывают в одном и том же направлении. В случае встроенных текста высокое сходство косинуса между двумя векторами встраивания указывает на то, что соответствующие текстовые строки тесно связаны.
В этом стартовом приложении используются встраиваемые вставки для генерации векторного представления документа, а затем использует векторный поиск, чтобы найти наиболее похожие документы для запроса. Результаты векторного поиска затем используются для построения подсказки. Затем ответ передается пользователю. Проверьте сообщения в блоге Supabase на PGVector и Openai Entgdings для получения дополнительной информации.
Используются технологии:
Создание и хранение вторжений:
Отвечая на запросы:
Следующее руководство по настройке предполагает, по крайней мере, базовое знакомство, разрабатывая веб-приложения с React и NextJS. Опыт работы с APIS Openai и 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_URL .API Keys . Ключ API должен храниться в переменной OPENAI_API_KEY .OPEAI_PROXY будет предоставлена для включения пользовательского прокси Openai API. Оставил его "" чтобы позвонить официальному API напрямую.SPLASH_URL для включения вашего SPLASH (SPLASH - это служба рендеринга JavaScript. Это легкий веб -браузер с API HTTP, реализованный в Python 3 с использованием API Twisted и QT5). Оставил это "" , чтобы принести URL Direct.npm run dev