Langchain + Qdrant Cloud | Pinecone FREE Alternative (20GB) | Tutorial
Key Takeaways
This video tutorial demonstrates how to use Qdrant Cloud as a free alternative to Pinecone for Langchain applications, showcasing the setup of a vector database and its integration with language models like ChatGPT from OpenAI. The tutorial covers creating a Qdrant Cloud account, configuring a custom cluster, and using the Qdrant client in Python to interact with the vector database.
Full Transcript
good morning everyone how's it going today welcome to this week's new video tutorial in which I'm going to be showing you how to use quadrant now quadrant is a vector database that is an alternative and open source alternative to Pinecone and they also have a managed cloud service in this video I am going to show you how to set up and configure a free forever one gigabyte cluster in their cloud service and how to use it to connect it to your application okay this is especially useful if you want to have a language model application that has its Vector database persisting over time and you want to store that database in the cloud and you don't want to deal with all the configuration of the servers and all that it's basically going to allow you to have your database available from a URL and you're going to be able to fetch all the information from there with just quadrants API okay in most of the videos from this channel we have created applications that don't necessarily have a persistent database so this is going to be a complement to all of those videos so by the end of this video you will have something like this and you will be able to query it with information that is already inside the database without actually having to re-run the embeddings every time that the application loads okay so there you go I hope that by the video you will have a very robust project that you will be able to Showcase to your clients employers or future employers and you will be able to add this to your portfolio I hope that you enjoy and remember that if you like Ai and software videos don't forget to subscribe alright so without further Ado let's get right into the video [Music] alright so the first thing that we're going to want to do is we're going to want to create an account in quadrants Cloud platform okay in order to do that you're going to want to go to quadrant.tech and then you're going to want to click right here on cloud and it's going to ask you to create an account I'm going to set up mine with GitHub I have already created my account which is going to connect but you will probably have to create your account first and once your account is created you will be created with this page right here which prompts you to create your first cluster okay now in order to create the first cluster you can either just give it a name if you if you wanted to if you don't want to personalize it or you can create a custom tier a cluster which can also be free okay I'm going to create a custom one I'm going to call it my cluster and something interesting about this one is that you can choose the region where your servers are going to be located so myself I'm going to set it up in Europe and as you can see we're still inside the free tier pricing as I mentioned before you have a free one gigabyte of memory if you want to increase it you're going to want to you're going to have to pay for it but you can leave it free here and there you go now we can create the cluster and it's going to take a little bit of time initializing it and mounting it so I'll be back when once this is done it should take a few minutes and there we go now our cluster is healthy and ready to be used as you can see right here we have in the configuration we have a one gigabyte of ram we have half a virtual CPU and 20 Gigabytes of disk space which should be more than enough for any testing that you want to do or maybe even for a very small scale production application okay now what we're going to do is we're going to go back to overview and as you can see the next step after setting up the cluster is creating an API key to connect to that cluster okay so that's what we're going to do if you had several clusters you're going to want to select the one that you want the API key from right here and then you can click on get API key here this is the API key that I'm going to be copying and I'm going to paste it right here in my notebook and then we can just continue and you can see that this is the curl command that you can use to access your your cluster okay so now let's start interacting with our cluster through this endpoint all right so let's do that now all right so now the next step to take is to start testing our our cluster okay once you create your cluster you get a URL which is the one that you're going to be using to send requests in order to interact with your cluster okay so for example if you want to create new vectors or if you want to store something or if you want to fetch the vectors that you have stored in a collection this is the URL that you're going to be fetching them from okay so the first thing that I recommend you to do is just like to get familiarized with how these things work is to start testing it using a HTTP client okay um you can use Postman for example if you if you want or you can use Thunder which is a HTTP client for vs code it's very minimalistic and I really like it um it's basically just like this you create a new request and right here you just write the URL that you want to send the HTTP request to so I'm going to send it to my URL that I just created and as you can see right here they ask us to send the API key as a header so I'm going to copy my API key I'm going to go to headers I'm going to say API key I'm just going to paste it right here in the value and there you go so now this is going to allow us to send HTTP requests to my cluster okay now before I show you some of the of the endpoints that you can use let me just explain to you a little bit of how the architecture of quadrant works so in quadrant we just created a cluster okay and the cluster can have several collections collection you can think of it as a database so you create your cluster then you can have several collections or several databases inside of your cluster and each collection can contain one or more points and each point is a vector okay and remember that a vector is just a numerical representation of your text so whenever you um embed your text and you send it to your database that is going to be stored as points inside the collection that you specify okay so the first thing that we're going to do is we're going to want to ask our host how many collections it has in in the cluster okay so in order to do that we're going to come right here to the quadrant documentation and here you have a an endpoint that lists all the connections the collections so you can see that it's a get request that you we send to collections so I'm going to add slash right here and say collections and I'm sending a get request my API key is here in the header so if I send it you can see that I get a response to 100 OK and you can see that I get that the result is collections it's an empty array which means that there are no collections in this cluster which makes sense because we just created it okay now if you wanted to create a collection using a HTTP client like this you can send a put request to this endpoint right here you just add the collection name and then you just specify what specs you want your collection to have but in our case we're going to be creating our collection from a python script so that we can implement it in our applications okay so let's get right into doing that all right so what we're going to be doing now is I'm going to be showing you right here on a notebook how to create a client to interact with your host in Python how to create a collection and how to add points or vectors to that collection in your cluster okay so um first of all what you're going to want to do is you're going to want to install the dependencies in our case we're going to be using Lang chain quadrant and open AI because those are the libraries that we have been using in the other videos of this playlist so that we can actually implement this in one of the applications that we have built before next let's actually start in importing our our dependencies so we're going to say that from Lang chain dot Vector store we're going to import quadrant and then from Lang chain dot embeddings dot open AI we're going to import open AI embeddings like that um sorry it's not Vector store here it's Vector stores like that there you go so then we're going to import quadrant client like that and we're also going to import OS to use environment variables there you go um there you go so now the first thing that you're going to want to do is you're going to create a quadrant client okay so in order to do that the first of the first thing that I'm going to do is I'm going to store my host and my API key in some environment variables okay so I'm going to say Environ and this one I'm going to call it quadrant oops I'm going to call it quadrant quadrant host and this one's going to be equal to my host URL right here like that then I'm going to do the same but quadrant API key like that and the value for this one is going to be my API key there you go um once that's done what you're going to want to do is you're going to create your client in my case I'm just going to call it client oops client like this and in order to initialize it this is going to be an object that is going to allow us to connect to our cluster okay so what I'm going to do is I'm going to do quadrant client like this and then I'm going to initialize a quadrant client like that now this one takes several parameters the first one as you can see is the URL of your of your database okay in our case it's our quadrant host so I'm going to just get the environment variable called quadrant host like this and then the API key is the second variable right here I'm going to call it I'm going to call I'm also going to do os.get EnV and this one we're just going to get our quadrant API key like that now if I run this it should create my client objective there you go now we can use this client object to actually start creating Collections and interacting with our cluster okay so let's do that right now all right so the second thing that we're going to want to do is to create a collection okay remember that I told you that in quadrant you we just created a cluster but we don't have any collections inside of it a collection remember it's just a database with vectors right so we're going to create a collection using the client object that we initialized up here so in order to do that it's going to create collection right here and the first thing I want to do is I want to set the name of the collection in an environment variable this just makes it a close look closer to production okay so I'm going to say OS Environ which I'm just going to copy this up here like this and it's going to be quadrant collection name like this The Collection name you can name it whatever you want remember we're just creating a new collection so you can really name it whatever you want in my case I'm just going to call it my collection like that and this name has to be unique okay you cannot create two collections in the same cluster with the same name um so there you go now we can use this client object to actually start initializing our new collection in order to do that I'm just going to come back here to the documentation of quadrant inside Concepts I have collections and here is the code for python in order that we can use to create a collection I'm just going to copy it right here I don't need the client initialization because I just initialized it before so I'm just going to copy this and paste it right here okay as you can see this one takes two different arguments two different parameters the first one is the collection name and the second one is the vectors configuration which I'm going to initialize up here I'm just going to call it effectors configuration like that all right so the collection name we have already initialized it up here so I'm just going to get the environment variable from there remember this is how we call environment variables and then the vector configuration is another object that we import from Quadrant okay in this case I think that they imported it from quadrantclient.http dot models so that's what I'm going to do since I already imported quadrant client I'm just going to call it directly from quarter client.hdp dot models there you go and there you go so now what we're doing right here is we're creating our vectors configuration object as you can as you can see the first one is the size I mean the first um parameters the size of the vectors this one right here takes the dimension of the vectors that are returned by your embeddings model okay for example open AIS embeddings return a model return vectors with a dimension of 1536 if you're using for example instructor Excel you're dealing with a dimension of 768 and these are things that you can just Google and you can just find out which dimension each embeddings model is going to be using in our case we're going to be using open ai's embeddings so I'm going to be setting it to 1536 let me just add this um comment right here just to indicate that for instructor Excel it's 760 768 and then the second parameter is the distance um if you're not familiar with how NLP Works don't worry about it you don't really need this to build an application this is more if you're more into the data machine learning side of this but the idea is that you want to tell quadrant which distance metric it's going to be using to find the most I mean the closest I mean to perform the similarity search okay so in our case we're going to be using cosine similarity and as you can see right here we're going to be that's an object also in my quadrant HTTP models and there you go so now this is the variable that I'm going to be adding to my vectors configuration parameter and now when I do run this you can see that I get a return message from the client which means that the collection has been created there you go so now what we can do is we can go back here to our HTTP client and in order to test that our collection has been correctly created we just send the same request that we sent a moment ago so remember we keep the same host here and remember that we want to hit the endpoint collections remember API key all is the same you can also do this in Postman I just like thunder because I think it's just more it's minimalist and then if I send it you can see that I get this time I get returned a list of Collections and this time it's not empty this time we have one element with the name of my collection which is precisely The Collection that I created a moment ago all right so next thing we need to do is we need to create our Vector store object which is the one that we're going to be plugging into our application in order to interact with um with our collection okay so in order to do that we're going to be using the integration that quadrant has right here we're going to go to the documentation page to Integrations and we had been using launching in the other video so I'm going to show you how to do this in launching in a pro in a future video I'm going to show you how to do the same with learner index which is also super powerful um and here you have the code that you need as you can see you require you need to create some embeddings you need to Define your client which we already did and then you need to initialize your document store or your vector store object and this one uses a quadrant class which you import from langching Vector stores here I noticed that I forgot I think that I named mine with a lowercase Q so it's supposed to be uppercase there you go and now we can actually just copy this part right here which is the one that we need in order to initialize our Vector store object okay so I'm just going to call it Vector store like this I'm going to be initializing it from Quadrant it takes as you can see three different arguments the first one is the client which we already defined the second one is the collection name which we defined right here um I'm actually just going to use OS get EnV and I'm just going to paste this one right here and then it requires the embeddings as well so let me just initialize the embeddings embeddings is going to be the open AI embeddings that we imported up here remember that if you want to use a different embeddings model you're going to have to change the size of the collection that you're using because you cannot add joint instructor embeddings to a collection that was uh that also has open AI embeddings in it okay so you're going to have to be consistent with the same embeddings model for each collection so in this case we're going to be using this collection and the embeddings is initialized and the open AI embeddings actually requires you to have an environment variable with the open AI key that you that you're going to be using okay so in our case um I'm just going to come right here to to my API keys in openai it's going to create a new API key copy there you go I'm gonna come back here and I'm going to initialize it like this I'm gonna do OS dot Environ and the name of the environment variable has to be open AI API key otherwise Lang chain will not recognize it and there you go now this if I'm not mistaken should create the vector store object that we require just add a comment right here create Vector store there you go now we have created our Vector store and now we can actually start adding vectors to this Vector store in our application so let's do that now all right so now that we have our Vector store we want to add some text to it okay I mean some vectors in my case I asked chatgpt to create a very quick story about a few friends who find a fluffy dog on the street and this is the story that I'm going to be feeding to my Vector store and that I'm going to be querying so I'm going to be asking questions about this story and my my application is going to be able to retrieve that from the database okay so let's I already uploaded the story.txt file right here to my workspace and that's where I'm going to be fetching it so first this cell is going to be titled add the documents to vector store like this so to do this first of all we're going to have to create a function that takes this huge string of text and it's going to split it into shorter chunks of text so that remember that where we what we're going to want to do is we're going to fetch the the chunks of text that are going to be relevant to our question so we don't want to send like uh 10 000 characters to our language model because we could very easily reach the token limit so what we're going to do is we're going to take all of this huge text and we're going to split it into shorter chunks so that we can feed them to our language model in order to do that we're going to use blank chains text splitter a class called character text splitter let's see there you go and I'm going to define a function called get chunks which is basically going to divide to split my huge string of text into several chunks of smaller size so this one was going to take a string of text I'm going to initialize my object called text splitter and I'm going to use my my class that I imported now this one takes several parameters the first one is my separator which is the character that is going to define the line break in my case it's just one line and then we're going to have to define the chunk size chunk size and in this case the chunk size is going to be a thousand characters this means that it's going to return different chunks of a thousand characters each then the other parameters is the chunk overlap which means oh sorry this thousand is not supposed to be a string it's supposed to be a number like that the chunk overlap is the overlap for each chunk size okay so for example if the first chunk goes from the character Zero to the character one thousand if I set an overlap of 200 the second chunk is not going to start at the character 1001 but on the character a thousand minus 200 so it's going to start at the add to character 800. so the first chunk is going to be 0 to 1000 and the second one is going to be eight hundred to a thousand eight hundred this basically allows us to get more context for in to each one of our chunks of text because if we split our text like arbitrarily add the character 1000 we might fall in the middle of a sentence and we will lose the sense of that sentence into different chunks so that's basically how this works and last but not least the length function that we want our uh text player to use to measure the text in this case we're just going to use regular python length function and then with this what we're going to do is we're going to create a new chunks array which is going to take my object that I just created and this one has a method called split text and this one's going to take my string of text that I'm going to feed my function then we're just going to return the chunks of text so in short this function is going to be returning an array of shorts uh short chunks of text that have been I mean is going to return this text split into different chunks okay there we go now what we're going to do is we're going to use this function to split my story so what I'm going to do is going to say that my texts are going to come from well first of all I have to open my story so I'm going to do with open story.txt that as file we're going to say that raw text is going to beam F dot read There You Go my file.read this means that inside this variable I have all these contents right here okay all the contents of my story are now in my raw text variable so now what I'm going to do is I'm going to take this text I'm going to take my raw text I'm going to divide it into different chunks of text with my function get chunks so in order to do that I'm just going to call get chunks I'm going to pass in my raw text function like this and now that I have my text function right here let me just show you what it looks like if I print it and I have error length function language length function nope not like that length functions written like that there you go so now you have an array with a bunch of chunks of text and each one a thousand character long and each one has a part of this story right here and now from this text these are the ones that we're going to embed using open Ai embeddings and starting in my Vector store so in order to do that I'm going to call my Vector store that I created up here and I'm going to say Vector store dot add texts and here I'm just going to pass in an array of texts that I want to import so this is just going to take my texts like that now before I run this I want to show you something real quick remember that I told you that inside a collection you can have several vectors in this case we have my I mean if we go back to the documentation we can see that there is this option to list all the collections that we have and also we can get information about a certain collection so we send us a get request to collections endpoint and then the name of our collection so if I come back here to my collections in my HTTP client and I say that I want information about this collection right here and I click on send you can see that I currently have zero vectors in my collection okay which makes sense because I just created my collection a few moments ago but now after I run this Vector store add text this is going to add those vectors to my collection okay so let's see how that works now if I run this if I don't have any errors there you go now my my vectors have been added to my Vector store and now if I go back to here and I send this again you can see that my Vector store account is now 5 because they have been added to my Vector database now if I it doesn't matter if I refresh this or if I or if I close the application or open it again I will still have these five vectors in my Vector database and all I will have to do is to connect to my database and to fetch these vectors in order to perform my my my querying from my language model okay so let me just do that right now great so now we have successfully added the vectors to our Vector store and this basically means that we now have a persistent database in the cloud that we can I mean as you can see we just got all the vector stores from a different program like this is not connected to to to this notebook which means that my vectors are actually stored in the cloud and I can fetch them from whichever applications from whichever application I want as long as I have the credentials this means that I don't have to recreate my embeddings every time I want to use them I can just connect to my to my database and then just fetch them and perform my computations and that's what we're going to be doing right now right now it is time to actually connect this Vector Store to our application and start querying it with user questions so that we can actually start chatting with our story that we uploaded to our database so let's do that right now so first of all I'm going to have to create a question and answer chain from language okay so let me just show you how that works if I go to line chain and I go to usage cases and I come right here to um q a over documents context aware there you go so here this is what this is basically what we're going to be doing we're going to be creating a question and answer chain that is going to retrieve the information from our from our Vector store and it's going to feed it to a language model so that we can actually chat with our information so let's do that right now so let me just title this cell plug Vector store into retrieval chain and this retrieval chain you will be able to use it inside your application so first of all I'm going to say that from Lang chain [Music] from Land chain dot chains about chains we're going to import the retrieval QA chain which is going to allow us to ask questions about a document and then also from Lang chain dot llms I'm going to import open AI because I'm just going to be using open AIS language models okay and I just need to create a QA object from my retrieval retrieval QA class and this one oops sorry now we're going to create it from chain type let's see from chain type there you go and this one actually takes a few parameters the first one is the language model that we're going to be using and in this case we're just going to be using open open AIS Le like that I think that by default I'm not mistaken we get um callbacks model name I think by default it's chat GPT turbo 3.5 I think so I'm not sure but yeah I mean like you can also like add some parameters here if you want to tweak it a little bit more but I'm just going to go like real fast on that then the chain type you're going to type it to stuff and then you're gonna have to set the retriever which is going to see which is going to be the place where you're going to get the information that you want to query from this means that it's your vector store okay so the retriever is going to be the vector store that we initialized before Vector store and this one has to be as retriever like this there you go and we run this and basically what we have done is um yeah basically what we have done is we have created our chain that we're going to be able to query about the information that is inside our database okay um so now what I'm going to do let's just Square it real quick I'm going to ask a question let's say how many friends are there and what are their names okay and then the response is just going to be my quer my q a object I'm going to say run I'm going to run my query and then let's just print my response if I'm not mistaken this should print a response related to my story there there are three friends namely Ben and Sarah and there you go apparently from my text here three friends indeed Emily Ben and Sarah so there you go we have successfully connected our application to quadrants hosted database in the cloud okay just to be sure that you understand what happened right here remember that we basically created our client created our collection that we didn't have before then we created our Vector store and it is inside this Vector store that we added new vectors and then we connected that Vector store to a retrieval chain which is the one that we use to actually query the text okay that we'll actually use and sort some sort of chat however this cell right here that added the vectors to our Vector store is not needed if we already had vectors in the database this means that since our database is persistent in the cloud if I reload the application I will already have my text from the story I will not need to re-add the documents to my Vector store okay and that is exactly what we wanted to achieve let me show you real quick how to do this in some sort of graphical use of a graphical user interface so that you can see a little bit in in a little bit more real scenario let's do that right now alright so really quick let me just tour you around how to use what we just saw into an actual application okay in a previous video we had developed an application that looked something like this but we had to import a PDF file in order to be able to actually ask questions to it because we had to ask questions about the PDF file that we were going to upload in this case I just like stripped it down into its very minimum it's just an input text and the idea is that we're going to have it connect to our remote database that we just created and we're going to be able to fetch information from there and ask questions to our remote database about the story that we just embedded without actually doing the embeddings again every time we reload the application okay so let's do that if you want to see how to set up python project you can check out the video I did especially about that but in this case I just already set this up with this user interface right here the idea is that we have our load load dot tnv so that we can load our environment variables then we have a simple header and then just our text input angle of this I built it using streamlit which is a graphical user interface library that allows us to create user interfaces very very quick and very very beautiful so there we go now what we're going to want to do is since we have our user question right here we're going to want to do something whenever our user um or submits a question okay so I'm just going to copy this right here from here let's say so if my user question is um if we find that we have a user question we're going to write the user question and then we're going to use a q a chain and run it to to compute the answer okay and this is going to use our remote database and so in order to do that we're going to have to first create our chain and we're going to use the code that we had right here retrieval chain there you go there you go there you go so we created the chain like this we're going to have to import all the things that we imported before which are these two going to import them up here and we imported all of this up here too there you go and then we're going to have to create our API our environment variables we have qhost quadrant host API key collection name and open AI API key I have them set up conveniently before so that we can do this pretty quick there you go this is exactly the same information that I had in the notebook okay so there you go we save this we have this right here we are creating the chain as we did right here but what were we doing before we had to create the client we had to we're not creating the collection because the collection already exists because we're dealing with a database that we already created but we create the client then we create our Vector store and then we connect that to our chain so let's do that first of all let's just create a function right here that is going to get the vector store um so Vector store equals get Vector store then we just create a function that gets the vector store and in this function basically all that we are going to do is we are going to copy the code that we had in here so first of all we're going to want to create our create our client there you go then this client we're going to want to use it to not create a collection but we're going to want to create a vector store using the embeddings from openai like this there you go like that then what do we do next we return the vector store return the vector store there you go so now basically what we're doing creating the client embeddings in the vector store returning the vector store we're fetching the vector store here create Vector store and then we are connecting it to a q a query a chain sorry so there you go this is basically all that we're doing and this is basically all that you're gonna have to do if you want to connect to a four to a remote database so now if I save this and I think that's sold if I'm not mistaken I'm just going to re-run my streamlit application then if I go right here and I refresh and I say what are the names of the friends and then it's supposed to run it the names of the friends are Emily Ben and Sarah which comes from the text right here that we embedded and we saved in the notebook so as you can see we didn't we didn't embed it or saved it inside this application we're just accessing the quadrant database right here and as you can see our cluster actually has this disk usage of zero zero one gigabytes which of course it's just five vectors but um yeah so I hope this was useful here you can see um I'll gonna be set putting this up in GitHub so you can check it and yeah now you know how to connect your application to persistent databases in the cloud using quadrant which is a very very neat um substitute for pine cone if you find that it's too expensive and they are free tier one gigabyte free forever cluster is very very good if you want to try some things out and just experiment with llm applications okay so I hope this was useful to you and And subscribe if you want more videos like this and I will see you next time [Music] [Music] [Music] [Music]
Original Description
Do you want an alternative to Pinecone for your Langchain applications? Let's delve into the world of vector databases with Qdrant. If you're interested in harnessing the power of artificial intelligence and language models like ChatGPT from OpenAI, you're in the right place.
-------------LINKS
👉 Qdrant: https://qdrant.tech/
👉 Github: https://github.com/alejandro-ao/qdrant-cloud-app/tree/main
📕 Colab: https://colab.research.google.com/drive/1gGd1IMjSkJxz3XvgCFjfPEoOv4G2YTYp?usp=drive_link
💬 Join the Discord Help Server - https://link.alejandro-ao.com/HrFKZn
❤️ Buy me a coffee... or a beer (thanks): https://link.alejandro-ao.com/l83gNq
✉️ Join the mail list: https://link.alejandro-ao.com/AIIguB
-------------------------------------
Qdrant is a powerful vector similarity search engine with a user-friendly API that enables you to effortlessly store, search, and manage vectors along with additional payloads. Its expanding features support various applications such as neural network or semantic-based matching, faceted search, and more.
In this tutorial, we'll guide you through the process of configuring a free cluster in Qdrant's hosted cloud service. We'll also walk you through deploying a vector database to the cloud and connecting it to an application using Langchain. This combination proves incredibly useful for creating persistent databases for LLM (Language Model) applications.
By leveraging the capabilities of Qdrant, Langchain, and Pinecone, you'll gain valuable insights into building robust and efficient systems for natural language processing (NLP) tasks. You'll also get acquainted with other essential tools such as Chroma, Faiss, and OpenAI embeddings, which are vital for working with word embeddings, text embeddings, and more.
Whether you're a seasoned developer or just starting your AI journey, this Pinecone tutorial in Python will provide you with the necessary knowledge to kickstart your vector database endeavors. So, join us and unlock the immen
Watch on YouTube ↗
(saves to browser)
Sign in to unlock AI tutor explanation · ⚡30
Playlist
Uploads from Alejandro AO · Alejandro AO · 21 of 60
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
▶
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Linear Regression in R - Full Project for Beginners
Alejandro AO
Configure Webpack 5 in Wordpress (2025) with Typescript and SASS
Alejandro AO
R Programming 101 - Crash Course for beginners
Alejandro AO
Convert HTML template to WordPress Theme (2025) - Full Course
Alejandro AO
Javascript Interactive Map with Leaflet EASY (with Marker Clusters & Popups)
Alejandro AO
Vanilla JS Project: Multi Step form in HTML, CSS & OOP Javascript
Alejandro AO
How to do AJAX in WordPress correctly (2025)
Alejandro AO
React Leaflet Tutorial for Beginners (2025)
Alejandro AO
Linear Regression in Python - Full Project for Beginners
Alejandro AO
Logistic Regression Project: Cancer Prediction with Python
Alejandro AO
Display Equations in ChatGPT
Alejandro AO
Create a Chrome Extension (Manifest V3) for ChatGPT
Alejandro AO
Full-Stack Project | ChatGPT API, React, Node.js, Express
Alejandro AO
Streamlit Python Course: Build a Machine Learning App to Predict Cancer
Alejandro AO
Langchain PDF App (GUI) | Create a ChatGPT For Your PDF in Python
Alejandro AO
LangChain Memory Tutorial | Building a ChatGPT Clone in Python
Alejandro AO
Chat with a CSV | LangChain Agents Tutorial (Beginners)
Alejandro AO
Create a ChatGPT clone using Streamlit and LangChain
Alejandro AO
Chat with Multiple PDFs | LangChain App Tutorial in Python (Free LLMs and Embeddings)
Alejandro AO
Full Python Environment Setup for AI (or other) Apps + Virtual Environments
Alejandro AO
Langchain + Qdrant Cloud | Pinecone FREE Alternative (20GB) | Tutorial
Alejandro AO
LangChain Version 0.1 Explained | New Features & Changes
Alejandro AO
Create a RAG Chain using LangChain 0.1 (New version)
Alejandro AO
Tutorial | Chat with any Website using Python and Langchain (LATEST VERSION)
Alejandro AO
Deploy Your AI Streamlit App for FREE | Step-by-Step (Heroku Alternative)
Alejandro AO
What is Google's Gemini 1.5 Pro | 10 Million Token Window
Alejandro AO
Chat with MySQL Database with Python | LangChain Tutorial
Alejandro AO
Stream LLMs with LangChain + Streamlit | Tutorial
Alejandro AO
Chat with MySQL Database using GPT-4 and Mistral AI | Python GUI App
Alejandro AO
#1 Harrison Chase: LangChain and The Future of LLM Applications | Alejandro AO
Alejandro AO
CrewAI Step-by-Step | Complete Course for Beginners
Alejandro AO
Python: Automating a Marketing Team with AI Agents | Planning and Implementing CrewAI
Alejandro AO
Build a Web App (GUI) for your CrewAI Automation (Easy with Python)
Alejandro AO
Early days of RAG and LlamaIndex - Jerry Liu
Alejandro AO
LlamaParse: Convert PDF (with tables) to Markdown
Alejandro AO
#2 Jerry Liu - What is LlamaIndex, Agents & Advice for AI Engineers
Alejandro AO
CrewAI + Exa: Generate a Newsletter with Research Agents (Part 1)
Alejandro AO
#3 Joe Moura | Multi Agent Systems and CrewAI
Alejandro AO
Python: Create a ReAct Agent from Scratch
Alejandro AO
New Groq Models: Best for Function-Calling Agents
Alejandro AO
Introduction to LlamaIndex with Python (2025)
Alejandro AO
LlamaIndex: How to use LLMs
Alejandro AO
LlamaIndex: How to Get Structured Data from LLMs
Alejandro AO
Multimodal RAG: Chat with PDFs (Images & Tables) [2025]
Alejandro AO
Advanced RAG with LlamaIndex - Metadata Extraction [2025]
Alejandro AO
Learn MCP Servers with Python (EASY)
Alejandro AO
Create MCP Clients in JavaScript - Tutorial
Alejandro AO
Create an MCP Client in Python - FastAPI Tutorial
Alejandro AO
How to Build an MCP Client GUI with Streamlit and FastAPI
Alejandro AO
Vibe Coding For Engineers (make it ACTUALLY work)
Alejandro AO
LlamaExtract Tutorial: Convert PDF & Images into JSON
Alejandro AO
Local MCP Servers for Cursor (Step by step)
Alejandro AO
Anthropic: How to Build Multi Agent Systems
Alejandro AO
Deploy Remote MCP Servers in Python (Step by Step)
Alejandro AO
GPT-5 for Developers: API Changes, Pricing, Model Router & Security
Alejandro AO
Tutorial: Auth for Remote MCP Servers (Step by Step) | OAuth 2.1 with ScaleKit
Alejandro AO
Generate UI Tests with TestSprite MCP Server + TRAE
Alejandro AO
#4 Allan Guo | 19-yo YC Founder - Willow Voice
Alejandro AO
RAG Project: Build an AI Onboarding Chatbot with Streamlit, LangChain, and ChromaDB
Alejandro AO
MCP Security | Malicious MCP Servers (Protect Yourself)
Alejandro AO
More on: RAG Basics
View skill →Related AI Lessons
⚡
⚡
⚡
⚡
Your AI Keeps Making Things Up. RAG Is How You Make It Use Real Facts Instead.
Medium · RAG
Evaluation Metrics for RAG: Measure Retrieval, Generation, and End-to-End Quality With Numbers That…
Medium · AI
Evaluation Metrics for RAG: Measure Retrieval, Generation, and End-to-End Quality With Numbers That…
Medium · Data Science
When Does HyDE Help RAG? I Tested 3 Query Types and It Failed on Two
Medium · AI
🎓
Tutor Explanation
DeepCamp AI