Vector Search RAG Tutorial - Combine Your Data with LLMs with Advanced Search

Sdílet
Vložit
  • čas přidán 29. 07. 2024
  • Learn how to use vector search and embeddings to easily combine your data with large language models like GPT-4. You will first learn the concepts and then create three projects.
    ✏️ Course developed by Beau Carnes.
    💻 Code: github.com/beaucarnes/vector-...
    🔗 Access MongoDB Atlas: cloud.mongodb.com/
    🏗️ MongoDB provided a grant to make this course possible.
    ⭐️ Contents ⭐️
    ⌨️ (00:00) Introduction
    ⌨️ (01:18) What are vector embeddings?
    ⌨️ (02:39) What is vector search?
    ⌨️ (03:40) MongoDB Atlas vector search
    ⌨️ (04:30) Project 1: Semantic search for movie database
    ⌨️ (32:55) Project 2: RAG with Atlas Vector Search, LangChain, OpenAI
    ⌨️ (54:36) Project 3: Chatbot connected to your documentation
    🎉 Thanks to our Champion and Sponsor supporters:
    👾 davthecoder
    👾 jedi-or-sith
    👾 南宮千影
    👾 Agustín Kussrow
    👾 Nattira Maneerat
    👾 Heather Wcislo
    👾 Serhiy Kalinets
    👾 Justin Hual
    👾 Otis Morgan
    👾 Oscar Rahnama
    --
    Learn to code for free and get a developer job: www.freecodecamp.org
    Read hundreds of articles on programming: freecodecamp.org/news

Komentáře • 119

  • @beau
    @beau Před 7 měsíci +30

    What kinds of projects do you plan to make with Vector Search?

    • @mishal_legit
      @mishal_legit Před 7 měsíci +4

      Currently making a discord chatbot with long term memory

    • @sameergaikwad222
      @sameergaikwad222 Před 7 měsíci +6

      Currently making Product Recommendation Project for My Organisation for which I'm working [Ecommerce Platform]

    • @MrKB_SSJ2
      @MrKB_SSJ2 Před 7 měsíci +1

      THIS COURSE IS AMAZING!!!!!!!!!!!!!!!

    • @ishaquenizamani9800
      @ishaquenizamani9800 Před 7 měsíci +1

      For Right now I am going try to create RAG project using google makersuit LLM which is free.
      if i am able to create it am I allow to share the github repo's link?

    • @milmanal
      @milmanal Před 7 měsíci

      I want to create a marketplace to match job posts with applicants. i would like both the job creators and the job seekers to be able to submit their requirements via a chatbot (chatgpt e.g) as well as a structured form. So ideally i'd like the llm to push the postings into the db, and also call an api function to pull the potential matches from the postings to the applicant requirements.
      Do you think this solution could work?

  • @psikosen
    @psikosen Před 7 měsíci +16

    Woah you're teaching this is the first time I've ever seen one from you

  • @andyhenrie2482
    @andyhenrie2482 Před 7 měsíci +4

    It would really help everyone if you followed the best practices of using your tokens/logins safely. The old practice what you preach. Many of your viewers might not really know how to do that. They NEED to do it. I appreciate it makes your video less expository and is a burden in terms of prep.

  • @muttdev
    @muttdev Před 2 měsíci +1

    Thanks for the video tutorial. Helped me to understand the core ideas used in this technology!

  • @real23lions
    @real23lions Před 5 měsíci +3

    That was awesome. I learnt a lot 🎉

  • @peterfaretra
    @peterfaretra Před 2 měsíci +1

    This is brilliant. Thanks so much from a grateful student at the School Of Code

  • @JeremyJanzen
    @JeremyJanzen Před 7 měsíci +58

    I understand MongoDB sponsored this but I’d really have appreciated WHY someone should choose MongoDB vs other options. Same with embedding model. WHY use the hugging face model vs OpenAI Ada. There are so many different options for vector store and model, so a tutorial that deep dives into this decision is super important.

    • @Nick-tv5pu
      @Nick-tv5pu Před 7 měsíci +30

      It was touched on:
      - Mongo DB allows you to store the vectors alongside the original data (i.e. in the same document). this means you can filter out documents that you don't want to use in your vector search before you run a vector query
      - Huggingface is free when starting out, Open AI's API costs money

    • @goldenfishes3695
      @goldenfishes3695 Před 7 měsíci

      The thing with openai, Claude and so on and so forth is that you are at the mercy of the suppliers. The most obvious concern would be that if for any reason openai Claude and the likes had downtime and or their servers are not responsive, your businesses will absolutely be affected.
      Take Openai as example, Openai lib gets updated super frequently, also they provide API instead of model. So you are absolutely at the mercy of Openai when they decide to change endpoints, decommission old models and etc. You are also at the mercy of their pricing. There's nothing wrong with just using openai's API just that you have to position your business well. If you're just an integrator then all's good but if you're an ai consultancy firm then it makes sense for you to have ur own model that is tuned specifically for specific task. E.g. Mistral mixture of experts. It is also cheaper if you make a leaner model and host it urself.
      Why is mongodb chosen? Because they are the sponsor. Obviously right. It doesn't really matter for now what db you are using because it's just a tutorial. However if you're really going into production then it is perfectly ok to have specific dbs for specific tasks.
      Lastly it's all about use case, no one has infinite money to burn. There's only small or big budget to use. If your wallet is deep then use openai for everything. If your wallet is shallow then you should provision resources correctly.

    • @jroamindia1754
      @jroamindia1754 Před 3 měsíci +4

      OpenAI is paid

    • @shadmansudipto7287
      @shadmansudipto7287 Před 2 měsíci +1

      Well this is freecodecamp. The place to get started.

    • @Snarfz0orz
      @Snarfz0orz Před měsícem

      SingleStore would have been a better choice imo

  • @ugoceruti8556
    @ugoceruti8556 Před 7 měsíci +21

    Where code for project two is available ? in github repository it is different, thanks

  • @adhammagdy730
    @adhammagdy730 Před 7 měsíci +1

    best video of the year ❤

  • @Enjoyablewalks
    @Enjoyablewalks Před 7 měsíci +1

    Awesome 🎉

  • @voloUA
    @voloUA Před 5 měsíci +2

    Hi, thanks for video!
    What about a follow-up questions in RAG?
    Example
    Q: Suggest some movie with Johny Depp
    A:
    Q: What year was it filmed?
    A: ...

  • @user-pv5qv7sq5d
    @user-pv5qv7sq5d Před 4 měsíci +7

    The files for project two in the Github repository do not match this video. Could you kindly verify the files please? Thanks

  • @Ignalvarez
    @Ignalvarez Před 7 měsíci +2

    Great content!

  • @mohamedhassan8260
    @mohamedhassan8260 Před 4 měsíci +3

    شكرا لك علي الشرح الرائع

  • @umeshkumarasamy6608
    @umeshkumarasamy6608 Před 2 měsíci +2

    அண்ணனுக்கு வணக்கம்🙏! சிறப்பா செஞ்சிருக்கீங்க ரொம்ப நல்லா இருந்துச்சு! 😄

  • @WavePlayz
    @WavePlayz Před 25 dny

    आपका बहुत-बहुत आभार

  • @MrStargazer777
    @MrStargazer777 Před měsícem

    You @beau are a much better teacher, I wish you created most of the tutorials! .. but then I don't want you to burn out! take care of yourself Sir.

  • @Canna_Science_and_Technology
    @Canna_Science_and_Technology Před 5 měsíci +1

    There’s a lot missing. I get this is basic, but the metadata is crucial.. and 90% of people will be using cosine similarly, especially in RAG systems. Great video by the way. It’s awesome that you take time out to help others…

  • @carl-w5927
    @carl-w5927 Před 4 měsíci +2

    Fantastic source of information! Learnt a lot 🤓

  • @lawful_neutral
    @lawful_neutral Před 7 měsíci +17

    Where is the sample_data used in project 2? Doesn't seem to be in the repository that is linked

  • @sofiavaleriatorochambi4234
    @sofiavaleriatorochambi4234 Před 7 měsíci

    Thank you for the course! I have a question, how can I search between data in multiple languages? I'd have to create embeddings for every language (though being the same data, ie "house" in English and "casa" in Spanish, which have the same meaning but I want to be able to search in any language)

  • @andymutale368
    @andymutale368 Před 7 měsíci +3

    Thats why he's the goat

  • @MrKB_SSJ2
    @MrKB_SSJ2 Před 7 měsíci +1

    AMAZING!!!!!!!!!!!!!!!!!!!

  • @milmanal
    @milmanal Před 7 měsíci

    Thanks that was really helpful!
    I want to create a marketplace to match job posts with applicants. i would like both the job creators and the job seekers to be able to submit their requirements via a chatbot (chatgpt e.g) as well as a structured form. So ideally i'd like the llm to push the postings into the db, and also call an api function to pull the potential matches from the postings to the applicant requirements.
    Do you think this solution could work with the vector search / RAG approach youve shown here?

  • @SlashIceman
    @SlashIceman Před 5 měsíci +1

    dude.. you are a bomb!!

  • @ummnine6938
    @ummnine6938 Před 5 měsíci +1

    people having trouble with loading sample data: be on the main screen and click project drop down menu on the top place to see "view all projects", next will be Overview screen, there is right pointing arrow close to it "view database deployments", there you will see your Cluster0, click it, next screen right side you will see buttons "connect", "configuration", and " ...", click the dots button to see "Load sample dataset".

  • @gangs0846
    @gangs0846 Před 7 měsíci +1

    Wow great Video thank you!
    How does this compares to just using chatgpt api for semantic search within our data?

  • @Saltvik0
    @Saltvik0 Před 7 měsíci

    Recently getting in Data Science/ML do you guys recommend any resources to learn more about vectors for programming?

  • @gangs0846
    @gangs0846 Před 7 měsíci

    May I ask why you did not use spacy to create vectors but llm models instead?

  • @mtalamona
    @mtalamona Před 4 měsíci +6

    Hi. Could you be so kind to add the three TXT files mentioned in project#2?. The are mandatory for completing the example... thanks.

  • @sriramananthakrishnan138
    @sriramananthakrishnan138 Před 7 měsíci +1

    How does this compare to Qdrant and weaviate ?

  • @clone45a6
    @clone45a6 Před 5 měsíci +1

    Would you be able to point me to some tutorials that achieves the same thing as Project 2, but without using langchain? The query_data function from that tutorial is pretty mysterious, and I'd love to learn what's happening behind the scenes.

  • @phoneix24886
    @phoneix24886 Před 5 měsíci

    How did you choose the dimension while creating the vector search index?

  • @dark_starr
    @dark_starr Před 2 měsíci

    How do we make the conversation with the ChatOpenAi model context aware(not limited to the freeCodeCamp documentation in this case but the question asked too), like if i asked 1st question "How to create a PR" then 2nd question like "Who reviews it?"
    How will it know in the 2nd question that I am talking about PRs?

  • @LLMTECHSTORIES
    @LLMTECHSTORIES Před 3 měsíci

    is there a way to use any other model other than openai , for doing these operations ? something like open source models ?

  • @menghongpor2667
    @menghongpor2667 Před 3 měsíci

    I could not find the same endpoint for the embedding model using in the video for the first project. Could you tell me where to get it for this specific model?

  • @brianscarborough5720
    @brianscarborough5720 Před 7 měsíci

    Is the embedding_url still valid? When I run the code at 15:09, it just returns "None". I tried pasting the url in a browser and it returns a 404.

  • @vadirajabhat3879
    @vadirajabhat3879 Před 5 měsíci +3

    Can you please upload these 3 files in the git repo? aerodynamics.txt, chat_conversation.txt and log_example.txt.

  • @SkeggiaTheBest
    @SkeggiaTheBest Před 5 měsíci +1

    Is the accuracy of the documents retrieved influenced by the user's query? For instance, you mentioned using "imaginary characters from outer space at war" as a user query at 25:14. Would employing a more detailed query, such as "Please, I need to find all the imaginary characters from outer space at war in the collected data, could you do that for me, please?" result in better or worse outcomes?

    • @jehnzcode
      @jehnzcode Před měsícem

      yeah that's why we have "prompt engineering"

  • @sameergaikwad222
    @sameergaikwad222 Před 7 měsíci +3

    Hi, I loved this session. I wanted to have my own Embedding Server. Can you please make a video on this. I want to have it based on Opensource LLM Model. Please Guide. 🙏🙏🙏🙏

  • @allen_d99
    @allen_d99 Před 7 měsíci

    Is there some kind of a limit on how much data I can provide? If I have documents with 1,000,000 words in total, will the RAG be able to retrieve the most relevant documents? And if most of the documents are relevant, will the LLM be able to take all of those as an input?
    Sorry, I just noticed I've asked quite a few questions 😂

  • @Techonsapevole
    @Techonsapevole Před 7 měsíci +1

    Which is a selfhosted opensource alternative to Mongodb cloud ?

    • @newgenico
      @newgenico Před 7 měsíci +1

      Selfhosted mongoDB 🙂

  • @Ricocase
    @Ricocase Před 7 měsíci +1

    Can it be down privately? May one question local .pdfs? At 30:00, why Euclidean? Thought it was 4 images vs. Test (cosign similarity).

  • @Babu_bha1
    @Babu_bha1 Před 7 měsíci

    Let's go

  • @vadirajabhat3879
    @vadirajabhat3879 Před 5 měsíci +3

    Please commit the latest code to git, the .txt files are missing

  • @ntramu4186
    @ntramu4186 Před 2 měsíci

    Is there a way to use vector db or vector search with a laravel back-end project, please help

  • @niedland16
    @niedland16 Před 2 měsíci

    Great video! I really enjoyed your introduction to Rag. Your explanation was clear and informative. I noticed you broke the text into segments instead of using the whole text. Could you explain the reasoning behind this approach? Thank you in advance!

  • @Walker-64812
    @Walker-64812 Před měsícem

    Is there any way to do this with pdfs or to convert pdfs to something that can be used like the one with chatbot?

  • @out-of-sight
    @out-of-sight Před 7 měsíci +12

    Guys please make a video with opensource llms API, like palm or hugging face. Please..

    • @muhannadobeidat
      @muhannadobeidat Před 4 měsíci

      Agreed. Nice video but calling openAI APIs is not practical for most folks trying to learn anything.

  • @pcgaming1586
    @pcgaming1586 Před 13 dny

    genial gracias

  • @mangeshprabhu
    @mangeshprabhu Před 3 měsíci

    @beau -The github repo doesnt match the contents of the video for Project two atleast.

  • @tharuntejreddythodimi2142
    @tharuntejreddythodimi2142 Před 7 měsíci

    Hello,
    I am getting following error can you please help me by sharing your thoughts
    OperationFailure: Unrecognized pipeline stage name: $vectorSearch, full error: {'ok': 0.0, 'errmsg': 'Unrecognized pipeline stage name: $vectorSearch', 'code': 40324, 'codeName': 'UnrecognizedCommand'}
    Thanks in advance !

  • @debgandharghosh3981
    @debgandharghosh3981 Před 2 měsíci

    In project 1 how did you get the embedding_url ?

  • @peterfaretra
    @peterfaretra Před 2 měsíci

    Its a shame the files arent there for the final two. I followed along with the second one but the third might be a push. anyone find the files elsewhere ?

  • @hamzaomari7052
    @hamzaomari7052 Před 2 měsíci

    In the privided link for the repos on github, the project two is missing!

  • @VillotaRJ
    @VillotaRJ Před 2 měsíci

    May i ask, where did you get the hugging face embedding_url?

  • @Comlami
    @Comlami Před 4 měsíci

    Where dis you get the hf model’s embedding url from?

  • @chiaragambone7680
    @chiaragambone7680 Před 6 měsíci +3

    I cannot for the life of me find the .py and .txt files for project number two and three?

  • @tommy2117
    @tommy2117 Před 3 měsíci

    when i log the vectorSearch api, why does it always return [] even if the data in mongodb correct?

  • @mohsenghafari7652
    @mohsenghafari7652 Před 4 měsíci

    hi. please help me. how to create custom model from many pdfs in Persian language? tank you.

  • @fcss-hf5rr
    @fcss-hf5rr Před 3 měsíci

    In 22:29, How to get Index Json on right the side? Thanks

  • @creaky2436
    @creaky2436 Před 7 měsíci

    Can’t you just fetch data from the database, stringify it, and pass it to the open ai completions api? And let chatgpt know about the data, what it is, etc? You could also use function calls to generate said data as well. Embeddings is something I haven’t invested time into yet since what I have said above is working well for me.

    • @josaelprz
      @josaelprz Před 3 měsíci

      That way you would need to make a request to the Completions API each time you want to query for something, which is more expensive than quering your database with just the user embedding. Also if your data grows, you will find yourself sending not just more requests but larger ones, which are gonna increase latency and costs again.

  • @z.ishraq
    @z.ishraq Před 5 měsíci

    What are the prerequisites for this tutorial?

  • @arielgarciahuante8720
    @arielgarciahuante8720 Před 7 měsíci

    Hi, thanks for the video, very good content, I have a question: how can I specify a "prompt" or how can I specify limits in the answers, for example, I ask the question: "from your knowledge base of what topics could you answer questions?" in my database I only have information of my company but the program adds general topics (movies, books, music, etc), the only way to limit the answers is in the .md files I must explicitly specify the topics or I must write the "prompt" in the file? thanks for your help

  • @vinitsunita
    @vinitsunita Před 3 měsíci

    You can generate vector embeddings by calling rest api exposed by Vendors like HuggingFace, OpenAI etc. One thing to note that, these vendors employ rate limiting at their ending basically throttling the no of request that you can make to theirs apis within second. You need to buy subscription accordingly depending on your requirement

  • @iftyislam6761
    @iftyislam6761 Před 3 měsíci

    Only for searching, is embeding method efficient? can any expert enliten me?

  • @Bulldog01234
    @Bulldog01234 Před 7 měsíci

    Is there any video in this channel for math? For AI u need linear algebra and all

    • @freecodecamp
      @freecodecamp  Před 7 měsíci

      We have quite a few math courses. Here is a linear algebra course: czcams.com/video/JnTa9XtvmfI/video.html

  • @user-td4pf6rr2t
    @user-td4pf6rr2t Před 15 dny

    I think for bpe models should have their tokens masked for problem/common character while sentencepiece need high quality repetitive data sets to leverage them correctly. Don't fix what ain't broken, right?

  • @user-ck1sn6mq7p
    @user-ck1sn6mq7p Před 7 měsíci

    Can I put this course in the cv

  • @rupalpatle6575
    @rupalpatle6575 Před 3 měsíci

    why is throwing an error in generate_embedding function?

  • @anyicleanup
    @anyicleanup Před 5 měsíci

    to bypass the HuggingFace rate limit, could I just download the model, and do the embedding on my laptop?

    • @thetagang6854
      @thetagang6854 Před 3 měsíci

      was this a good work around? I'm facing the same issue, even though I have pro

    • @ShaheenGhiassy
      @ShaheenGhiassy Před 3 měsíci

      I got it working locally, but the embedding were slightly different after the 6th level of precision in the floating point number

  • @kamilrajewski4422
    @kamilrajewski4422 Před 7 měsíci

    Author did not provide a lot of details, e.g. how did he got the reponse structure, embedding url.

  • @jroamindia1754
    @jroamindia1754 Před 3 měsíci

    I tried your 1st project it throws an error if i pass {"inputs":text}. Doc says we need to pass like this "inputs": {
    "source_sentence": "",
    "sentences": ["That is a happy person",],
    } but then I'm able generate 1 dimensionlity data e.g [0.111111145]

    • @Tehguuui
      @Tehguuui Před 18 dny

      did you manage to resolve this?

  • @hoangng16
    @hoangng16 Před 3 měsíci

    Can we create a new search index using code instead of using the MongoDB UI? Using the UI is not practical when making a real-world project. It's fine for fun project.

    • @kukuster
      @kukuster Před 3 měsíci

      just self-host your own MongoDB. You would have to change the URL to your db in your code to something like "localhost:27017". You would do everything in code then

  • @amityadav-or2ys
    @amityadav-or2ys Před 3 měsíci

    How to get the embedding_url

  • @AlexanderPetkov-fi9ow
    @AlexanderPetkov-fi9ow Před 3 měsíci +1

    🎯 Key Takeaways for quick navigation:
    00:00 *🕵️ Vector search allows searching based on meaning, transforming data into high-dimensional vectors.*
    01:10 *🚀 Vector search enhances large language models, offering knowledge beyond keywords, useful in various contexts like natural language processing and recommendations.*
    02:03 *💡 Benefits of vector search include semantic understanding, scalability for large datasets, and flexibility across different data types.*
    03:11 *🔗 Storing vectors with data in MongoDB simplifies architecture, avoiding data sync issues and ensuring consistency.*
    04:06 *📈 MongoDB Atlas supports vector storage and search, scaling for demanding workloads with efficiency.*
    05:02 *🔄 Setting up MongoDB Atlas trigger and OpenAI API integration for embedding vectors in documents upon insertion.*
    06:38 *🔑 Safely storing API keys in MongoDB Atlas using secrets for secure integration with external services.*
    08:56 *📄 Functions triggered on document insertion/update generate embeddings using OpenAI API and update MongoDB documents.*
    10:33 *🧩 Indexing data with vector embeddings in MongoDB Atlas enables efficient querying for similar content.*
    11:15 *📡 Using Node.js to query MongoDB Atlas with vector embeddings, transforming queries into embeddings for similarity search.*
    Made with HARPA AI

  • @creaky2436
    @creaky2436 Před 7 měsíci

    I could make a function call for whatever, asking what customers daily sales are, how many customers they have, anything at all. I really don’t know the true value of embeddings and I hope I’m not being naive.

  • @ramsescoraspe
    @ramsescoraspe Před 5 měsíci

    😍

  • @aryanmalhotra8414
    @aryanmalhotra8414 Před 5 měsíci +3

    you're speed running through the code and your project while it takes mongoDB atlas search as the vector store, you are not able to even briefly explain how integrations with other vector stores might happen. please explain in more detail next time

  • @JavierTorres-st7gt
    @JavierTorres-st7gt Před měsícem

    How to protect a company's information with technology ?

  • @aymanjaber2585
    @aymanjaber2585 Před 3 měsíci

    The github files are completely different from the tutorial, at least for the second project.

  • @aidanthompson5053
    @aidanthompson5053 Před 5 měsíci

    4:36

  • @user-hk7pw9jr1v
    @user-hk7pw9jr1v Před 7 měsíci

    Hi 👋 I'm new here

  • @vongimbelgroup
    @vongimbelgroup Před 7 měsíci

    Why do you have to ask for "imaginary characters" from space? Its a movie search. Aren't most characters in movies "imaginary"?
    Why couldn't you just ask for "aliens"?

  • @jacqueokatch9907
    @jacqueokatch9907 Před 7 měsíci +1

    First

  • @bhanuchirutha
    @bhanuchirutha Před 20 dny

    a diagram initially would have been more helpful

  • @andymutale368
    @andymutale368 Před 7 měsíci +1

    Thats why he's the goat

  • @andymutale368
    @andymutale368 Před 7 měsíci +1

    Thats why he's the goat

  • @andymutale368
    @andymutale368 Před 7 měsíci

    Thats why he's the goat