The missing pieces to your AI app (pgvector + RAG in prod)

Поделиться
HTML-код
  • Опубликовано: 11 июл 2024
  • A step-by-step guide to going from pgvector to prod using Supabase. We'll discuss best practices across the board so that you can be confident deploying your application in the real world. Learn more about pgvector: supabase.com/docs/guides/data...
    Workshop GitHub repo:
    github.com/supabase-community...
    It's easy to build an AI proof-of-concept (POC), but how do you turn that into a real production-ready application?
    What are the best practices when implementing:
    - Retrieval augmented generation (RAG)
    - Authorization (row level security)
    - Embedding generation (open source models)
    - pgvector indexes
    - Similarity calculations
    - REST APIs
    - File storage
    00:00 Intro
    01:06 Demo & setup
    05:28 Step 1 (File storage)
    31:40 Step 2 (Documents & splitting)
    1:19:02 Step 3 (Embeddings)
    1:36:32 Step 4 (Chat & RAG)
    2:10:11 Demo & next steps
  • НаукаНаука

Комментарии • 97

  • @shinchima
    @shinchima 7 месяцев назад +23

    Give this man a raise. Good speed and complete. 9.99/10 - nobody gets a 10

    • @Supabase
      @Supabase  7 месяцев назад +3

    • @HashimWarren
      @HashimWarren 2 месяца назад +6

      so the scale is from 0 - 9.99 🙂

    • @shinchima
      @shinchima 2 месяца назад

      @@HashimWarren absolutely!😉

    • @rembautimes8808
      @rembautimes8808 Месяц назад +1

      Excellent tutorial, so well explained. Thanks so much

  • @VictorSouto
    @VictorSouto 17 дней назад +2

    This video is mindblowing. 10/10
    I'm a Tech Lead, with more than 15years in software engineering and I can already feel that this video is a game changer for me.
    So much crucial/game changing infos gathered in an incredible way, with amazing presentation and pace.

  • @jcottam505
    @jcottam505 7 дней назад

    Stellar presentation! The presenter knows his stuff. Can’t fake this level of experience. Thank you!

  • @dheerajs2838
    @dheerajs2838 7 месяцев назад +31

    this is one of the best video came out of Supabase. Please do more such detailed videos. thanks

    • @gregnr
      @gregnr 7 месяцев назад +2

      Good to know this style is helpful - thanks for watching!

  • @CarloL525
    @CarloL525 17 дней назад +2

    I'm sold! Diving deeper into Supabase because of this :) Great 2 hours content!

  • @sgruhier
    @sgruhier 22 дня назад +2

    I had this in my todo, it's mind blowing. Well detailed, great speed, tis is amazing. My only regret is not have watched it before. Thank you so much

  • @brucewayne2480
    @brucewayne2480 6 месяцев назад +10

    One of the best tutorials I've seen in my entire life. Everything is clear, no shortcuts, no analogies, no abtractions. we learn a lot of things from different fields along with production best practices.
    This is how tutorials should be.
    Thank you so much ! Looking forward to learn more from you

  • @hawarhekmat1174
    @hawarhekmat1174 7 месяцев назад +18

    Next time a recommendation system.

  • @Mburdo511
    @Mburdo511 5 месяцев назад +12

    This is truly an unbelievable tutorial. College professors could learn a lot from you. The fact that this quality is free is mind blowing

  • @JohnBucy-rz8qo
    @JohnBucy-rz8qo 2 месяца назад +5

    Joining the crowd - this is one of the best tutorials I have ever seen (and I have seen many). Great Job!

    • @JohnBucy-rz8qo
      @JohnBucy-rz8qo 2 месяца назад

      And the first one I have ever commented on

  • @sumodd
    @sumodd 7 месяцев назад +15

    Please do more videos like this, truly amazing work. This helps me prevent a whole lot of headaches. I love Supabase 💚

    • @Supabase
      @Supabase  7 месяцев назад +1

      We love you too 💚

  • @TheStabacco
    @TheStabacco 7 месяцев назад +2

    Incredible clarity! More like these please.

  • @MrArbitraryNumber
    @MrArbitraryNumber 7 месяцев назад +2

    Man you are consistently saving me when I hit a wall on my projects. Thank you!!!!!!

  • @mtin79
    @mtin79 6 месяцев назад +3

    Fantastic in depth walkthrough with code examples and reasoning behind implementation decision. Helped me understand supabase, its services and architecture and how things fit together much more. Thank you!

  • @zzej
    @zzej 5 месяцев назад +2

    This is the best video tutorial I have ever seen.

  • @benjaminw9624
    @benjaminw9624 7 месяцев назад +8

    This an amazing guide. Like absolutely amazing, bravo.

    • @gregnr
      @gregnr 7 месяцев назад

      Thanks! Don't hesitate to give me a shout if you have any questions/issues

  • @MachineLearningZuu
    @MachineLearningZuu 7 месяцев назад +2

    Superbase. I freaking love you. Long live the king

  • @2an_sound
    @2an_sound 6 месяцев назад +1

    Thank you so much for this tutorial! You are an amazing teacher

  • @swissturtel
    @swissturtel 6 месяцев назад +1

    Thank you very much - you are such a great teacher 🧑‍🏫

  • @ferrychandra8585
    @ferrychandra8585 Месяц назад +1

    Thank you for the great video!! Would like to see more videos on implementing Supabase using Python (not sure about the demand actually) if possible. :)

  • @shaharnechmad2586
    @shaharnechmad2586 7 месяцев назад +3

    This is one amazing video. Thanks so much!
    One suggestion, will be super cool to have aversion if this video using langchain as well.
    There are a lot of great benefits using it instead of going directly to Open AI (like the ability to easily switch or use multiple model providers)

  • @ipranay
    @ipranay 7 месяцев назад +2

    Vaults looks cool! More more more!

    • @gregnr
      @gregnr 7 месяцев назад +1

      Comes in very handy in some situations 👍 thanks for watching!

  • @funkdefied1
    @funkdefied1 Месяц назад

    This video is PERFECT

  • @teeks4geeks
    @teeks4geeks 17 дней назад

    This video is a treasure 🏆👑🥇🌟💛

  • @nishanthg5532
    @nishanthg5532 Месяц назад +1

    Brilliant 🥂

  • @rembautimes8808
    @rembautimes8808 Месяц назад

    There were so many parts to like in this video, my favourite was how to extract the authorisation headers in making the call to a REST endpoint. Will probably implement the endpoint in python with Fast API rather than Deno. 😂

  • @PavelLang
    @PavelLang 7 месяцев назад +2

    It's brilliant. Just keep me breath outhht between important pieces of code! …next time!
    Dynamic of video is really good - but pieces where I need to learn something new, wish to look for references, sources… I cannot ever hit space… tracking back 🙂
    BTW Thank you for so great tutorial! 🙂

  • @tamsssss6765
    @tamsssss6765 7 месяцев назад +2

    This is exactly what Im looking for! Thank you! Now only if I could get it to work locally =(

    • @gregnr
      @gregnr 7 месяцев назад +1

      Glad it resonates! What issues are you having locally?

    • @tamsssss6765
      @tamsssss6765 7 месяцев назад

      @@gregnr I think it's the Deno? I keep getting errors like these "Type error: Cannot find module 'common-tags' or its corresponding type declarations." even if I've installed them. =/

    • @tamsssss6765
      @tamsssss6765 7 месяцев назад

      nvm I got it!@@gregnr

    • @gregnr
      @gregnr 7 месяцев назад

      @@tamsssss6765 got it - just to confirm, are you getting those errors at runtime, or just in your editor (ie. VS Code)? If it's in VS Code, can you double check you have the Deno extension installed? Without that extension, VS Code doesn't handle Deno dependency management correctly.

  • @NixBiks
    @NixBiks 7 месяцев назад +2

    What an excellent video! Amazing work - I love all the "rabbitholes" which are all very important. I have two questions though; instead of using Supabase functions, one could use NextJS Route Handlers, right? Also; are there some open source alternatives to OpenAI LLM that could easily be integrated instead? Thanks for this video!

    • @samanderson4881
      @samanderson4881 7 месяцев назад

      Good tip. I think it could be done, seems like the edge functions on the free tier time out when doing the calculations.

  • @eleah2665
    @eleah2665 7 месяцев назад +2

    Hi not-Jon, this looks good. Thanks.

    • @gregnr
      @gregnr 7 месяцев назад

      Thanks for watching! Let me know if you hit any road blocks.

    • @JonMeyers
      @JonMeyers 7 месяцев назад +2

      I agree! Non-Jon is killing it! 💯

  • @tamsssss6765
    @tamsssss6765 7 месяцев назад

    Would love a video on how to easily migrate supabase ssr w/ this! =D

  • @davidho2901
    @davidho2901 5 месяцев назад

    Without this video, how could we possibly learn to do this? 😢

  • @theitaliandev
    @theitaliandev 7 месяцев назад

    Amazing video! Thank you. I have a question: best way to set up multiple supabase projects locally
    using docker?

    • @Supabase
      @Supabase  6 месяцев назад

      That would be through using Supabase CLI. supabase.com/docs/guides/cli/local-development

  • @nikitastriuk
    @nikitastriuk 4 месяца назад +1

    Great stuff, thanks a lot!
    One question. What's the point of deploying Deno edge functions (and calling them with pg_net inside postgres) instead of simply using Next.js actions for processing files after upload? It adds a lot of complexity imo. Any real benefits?

  • @jeffshatton
    @jeffshatton 4 месяца назад

    Great tutorial! Do you start running into problems with chat conversations as time goes on ... given you are including all previous messages and the limited window that OpenAI provides? How do you handle that? Just truncate it?

  • @jonathanma4206
    @jonathanma4206 4 месяца назад +2

    This is great. What changes would need to be made to use this with an open source model like Mistral or Llama 2? Is it just whatever model library is used and the embedding model that goes with it?

    • @maryamashraf6370
      @maryamashraf6370 4 месяца назад

      Hey did you get any further with this? I'm building a similar model using Mistral 7B - would really like to hear how you went about with using a local llm

  • @samanderson4881
    @samanderson4881 7 месяцев назад

    Very good tutorial. Only problem I have is that I don't get embeddings generated for every item in the documents_sections. I followed the code to the letter and it only generates the first 5 embeddings.

  • @OviDB
    @OviDB 4 месяца назад

    First, thank you!
    One question, how does one go about debugging the functions defined as database functions?

  • @DouglasHewitt
    @DouglasHewitt Месяц назад

    I followed the entire tutorial, very good, thank you for this. I am a beginner with nextjs and supabase, two things that I can't get working at the end: my supabase does not create the sections and therefore embeddings when a file is uploaded, I guess I missed something with either the migration or edge function?
    also, the chat doesn't work because CORS blocks it when its coming from the supabase cloud, how do I configure CORS on the cloud dashboard?

  • @yorgohoebeke
    @yorgohoebeke Месяц назад

    Amazing tutorial! Could you make a similar tutorial but for using supabase with AI agenst (+ RAG) that use function calling. For example, how to create a chatbot that can add tasks to our to do list or complete tasks on our todo list.

  • @stonedizzleful
    @stonedizzleful 7 месяцев назад +2

    How would you handle this if you actually wanted to reference the document/location where the RAG has pulled the info from (ie. like a references list on the front end)?

    • @gregnr
      @gregnr 7 месяцев назад +3

      Yep this is a great question. We are actually in the process of bringing this type of functionality to the Supabase docs via Supabase AI assistant. The strategy more or less comes down to:
      1. During the RAG prompt injection step, prefix each section with a heading (or id, link, storage path, etc) that references the document it came from
      2. As part of the initial prompt, ask the LLM to insert references to these respective section headings throughout its response
      3. On the frontend, parse the response coming back to extract these references, replace with a [1], [2], [3], etc, and add them as footnotes

    • @stonedizzleful
      @stonedizzleful 7 месяцев назад

      Sweet that makes a lot of sense. I pulled something similar together using pinecone but found I was double handling a lot of the prompt injection and then parsing the references. The way you have described it within the Supabase framework makes a lot of sense.@@gregnr

  • @Lamevire
    @Lamevire 6 месяцев назад

    interesting video!. so the whole reason for using RAG here is to minimize the token inputs when eventually passing it to GPT? (also maybe getting more accurate results because of using a specific embedding model that's better than GPT)

  • @learn-with-dr-sajjad
    @learn-with-dr-sajjad 6 месяцев назад

    Thanks for making this video for my favorite platform. I have followed it along and ported this method to use Google gemini api but I am having a weird problem. In chat function in the part where we add injectedDocuments to the system prompt. It runs fine for the first time, i checked by console.logging the completionMessages and all injected Documents and system prompt is added to the first prompt by the user but for all later messages neither the system prompt nor the injected documents are added and are not added to the user messages. However strangely enough the output from the gemini pro clearly indicates that it is getting the context and gives spot on replies. (I compared with the output from gemini pro without any context and answers were way different). Can somebody guide me if this is default behavior of vercel's ai sdk or there is problem with my code?

  • @GilbertZhuo-uv1ux
    @GilbertZhuo-uv1ux Месяц назад

    can i check for the generate embeddings part why we need to remove the javascript elements from markdown thanks!

  • @saminamanat
    @saminamanat 28 дней назад

    ctrl shift i just blew my mind

  • @kirso
    @kirso 7 месяцев назад +1

    One thing when reseting the DB because of Todos, there is a directive how to do it locally but not via the cloud. `pnpx supabase db reset` doesn't work unfortunately and I can't find it in the docs.

    • @sumodd
      @sumodd 7 месяцев назад

      Getting this as well... did you figure it out?
      Edit: actually, here is what I did:
      1. npx supabase db reset --linked
      2. Deleted 'files' from storage in cloud.
      3. npx supabase db push.
      Both of my migrations (the files and documents) were applied.

    • @kirso
      @kirso 7 месяцев назад

      @@sumodd sorry I accidently replied to a wrong video on another issue 🤦🏻Actually the wrong was on my side, since db reset is for the docker, I think you just need to do db push

  • @cjpettigrew
    @cjpettigrew 6 месяцев назад

    I think something has broken with the repo. The Chat function for example no longer deploys (i have pinpointed it to the AI library import from Vercel) Can you or anyone else reproduce this?

  • @adamtesla284
    @adamtesla284 4 месяца назад

    I want to integrate supabase with my flutterflow app but the problem I'm facing is that I dose not allow to present user dispaly name . Any solution ?

  • @user-xd6ut8vm4d
    @user-xd6ut8vm4d 5 месяцев назад

    Thank you so much one of the Best Tutorial. Query - when we are using cloud based option means files uploaded to supabase server and embeddings as well. Just want to confirm how secured our documents will be and can we use for financial and health care files as same application. Really interested to signup with Supabase if this query is solved.

    • @Supabase
      @Supabase  5 месяцев назад

      Supabase can be HIIPA compliant with certain plans, so it is safe to store those types of information. supabase.com/blog/supabase-soc2-hipaa

    • @user-xd6ut8vm4d
      @user-xd6ut8vm4d 5 месяцев назад

      Thank you so much for your response. Request to please share direct link or email id where I can ask more queries for any further doubts@@Supabase

  • @JJ-sz8wf
    @JJ-sz8wf Месяц назад

    In the embbeding column 7 - 10 rows are empty, but the rest is filled. Why is this? Has nothing to do with the code, since the nummer of blank space is different each time.

  • @nikhilsingh4329
    @nikhilsingh4329 2 месяца назад

    Hey, i am beginner i received api key and base url generated by my organization , this tutorial just include API key only directly by open ai , I need tutorial which can help me to create the chat bot with my API key and base URL can anyone suggest me tutorial or code base ?

  • @rydonahue1
    @rydonahue1 Месяц назад

    Couldn't a lot of these edge functions just be handled by API routes since you're using Next?

  • @laggy9764
    @laggy9764 Месяц назад

    if my data is confidentiel will i have t use gpt even so

  • @hatimmoaiyadi8388
    @hatimmoaiyadi8388 2 месяца назад

    Please guide me to create a logic to upload excel and pdf files

  • @JT-oh6th
    @JT-oh6th 3 месяца назад

    Great tutorial but if you actually deploy this to supabase the CPU time is SO restrictive the embedding pipeline doesn't work. 🤦‍♂

  • @hussienhassin7334
    @hussienhassin7334 4 месяца назад

    anyone facing could not Auth user when trying to sign up?

  • @marksughnenter526
    @marksughnenter526 3 месяца назад

    can you do this in python?

  • @Mavesound
    @Mavesound 7 месяцев назад

    Looking for a tool to get text from my pdf. Is this possible aswell?

    • @gregnr
      @gregnr 7 месяцев назад +4

      PDFs have notoriously been difficult to pull text from in a sane way (because there's lots of variance between PDFs, and some PDFs embed text while others are just images). One solution we're working on is using GPT's new vision model to extract the text - still WIP right now, but stay tuned!

    • @Mavesound
      @Mavesound 7 месяцев назад

      @@gregnr thought about that aswell. All libraries I tried worked so bad

  • @moritz8618
    @moritz8618 4 месяца назад

    hiawd

  • @moritz8618
    @moritz8618 4 месяца назад

    hallo

  • @namesare4fools
    @namesare4fools 7 месяцев назад

    its good & detailed, but why can't you make this more straightforward to setup

    • @gregnr
      @gregnr 7 месяцев назад +1

      hey, which parts did you find were slow to setup?

    • @namesare4fools
      @namesare4fools 7 месяцев назад

      @gregnr why cant i just run git clone, then run npm install and insert my env vars and run.. also do you have to use deno ?

    • @gregnr
      @gregnr 7 месяцев назад

      @@namesare4fools if you don’t care about the details, you can 100% just clone the repo and run it. Yes, Supabase’s edge runtime is built on Deno - you wouldn’t run this in vanilla Deno yourself though, instead use the supabase CLI to serve the edge function as shown in the video/readme.

  • @user-lu5wm7vu1x
    @user-lu5wm7vu1x 2 месяца назад +1

    worst ever tutorial. so unclear, it cannot be more confusing

  • @sidhuk3128
    @sidhuk3128 7 месяцев назад

    Thanks for a detailed video. but why did you use @supabase/auth-helpers instead of @supabase/ssr as the docs recommends.