- Notifications
You must be signed in to change notification settings - Fork9
Template for building your own custom ChatGPT style doc search powered by Fresh, Deno, OpenAI, and Supabase.
supabase-community/deno-fresh-openai-doc-search
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Template for building your own custom ChatGPT style doc search powered by Fresh,Deno, OpenAI, and Supabase.
This starter takes all the.mdx files in thedocs directory and processesthem to use as custom context withinOpenAI Text Completionprompts.
cp .env.example .env
Set the required env vars as outlined in the file.
supabase startdeno task embeddingsdeno task start
This will watch the project directory and restart as necessary.
- Create a new project on Supabase
- Link your project:
supabase link --project-ref=your-project-ref - Push up migration:
supabase db push
We're using aGitHub Action togenerate the embeddings whenever we merge into themain branch.
- Get
SUPABASE_URLandSUPABASE_SERVICE_ROLE_KEYfrom yourSupabase Studio and setthem as Actions secrets in GitHub. - Set
OPENAI_KEYas Actions secrets in GitHub. - Push or merge into
mainto kick off the GitHub action.
These steps show you how to deploy your app close to your users at the edge withDeno Deploy.
Clone this repository to your GitHub account.
Sign intoDeno Deploy with your GitHub account.
Select your GitHub organization or user, repository, and branch
Select "Automatic" deployment mode and
main.tsas the entry pointClick "Link", which will start the deployment.
Once the deployment is complete, click on "Settings" and add the productionenvironmental variables, then hit "Save"
Voila, you've got your own custom ChatGPT!
Building your own custom ChatGPT involves four steps:
- [⚡️ GitHub Action] Pre-process the knowledge base (your
.mdxfiles in yourdocsfolder). - [⚡️ GitHub Action] Store embeddings in Postgres withpgvector.
- [🏃 Runtime] Perform vector similarity search to find the content that'srelevant to the question.
- [🏃 Runtime] Inject content into OpenAI GPT-3 text completion prompt andstream response to the client.
Step 1. and 2. happen via aGitHub Action anytime we makechanges to themain branch. During this time thegenerate-embeddings script is being executedwhich performs the following tasks:
sequenceDiagram participant GitHub Action participant DB (pgvector) participant OpenAI (API) loop 1. Pre-process the knowledge base GitHub Action->>GitHub Action: Chunk .mdx files into sections loop 2. Create & store embeddings GitHub Action->>OpenAI (API): create embedding for page section OpenAI (API)->>GitHub Action: embedding vector(1536) GitHub Action->>DB (pgvector): store embedding for page section end endIn addition to storing the embeddings, this script generates a checksum for eachof your.mdx files and stores this in another database table to make sure theembeddings are only regenerated when the file has changed.
Step 3. and 4. happen at runtime, anytime the user submits a question. When thishappens, the following sequence of tasks is performed:
sequenceDiagram participant Client participant Edge Function participant DB (pgvector) participant OpenAI (API) Client->>Edge Function: { query: lorem ispum } critical 3. Perform vector similarity search Edge Function->>OpenAI (API): create embedding for query OpenAI (API)->>Edge Function: embedding vector(1536) Edge Function->>DB (pgvector): vector similarity search DB (pgvector)->>Edge Function: relevant docs content end critical 4. Inject content into prompt Edge Function->>OpenAI (API): completion request prompt: query + relevant docs content OpenAI (API)-->>Client: text/event-stream: completions response endThe relevant files for this are theSearchDialog (Client) component and thevector-search (Edge Function).
The initialization of the database, including the setup of thepgvectorextension is stored in thesupabase/migrations folder which is automaticallyapplied to your local Postgres instance when runningsupabase start.
- Read the blogpost on how we builtChatGPT for the Supabase Docs.
- [Docs] pgvector: Embeddings and vector similarity
- WatchGreg's "How I built this"video on theRabbit Hole Syndrome YouTube Channel:
About
Template for building your own custom ChatGPT style doc search powered by Fresh, Deno, OpenAI, and Supabase.
Topics
Resources
Code of conduct
Contributing
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors2
Uh oh!
There was an error while loading.Please reload this page.
