--- title: Cloud Quickstart weight: 4 partition: cloud aliases: - ../cloud-quick-start - cloud-quick-start - cloud-quickstart - cloud/quickstart-cloud/ - /documentation/quickstart-cloud/ --- # Quick Start with Qdrant Cloud

Learn how to set up Qdrant Cloud and perform your first semantic search in just a few minutes. We'll use a sample dataset of menu items pre-embedded with the `BAAI/bge-small-en-v1.5` model. ## 1. Create a Cloud Cluster 1. Register for a [Cloud account](https://cloud.qdrant.io/signup) with your email, Google or Github credentials. 2. Go to **Clusters** and click **Create First Cluster**. 3. Copy your **API key** when prompted - you'll need it to connect. Store it somewhere safe as it won't be displayed again. For detailed cluster setup instructions, see the [Cloud documentation](/documentation/cloud-intro/). ## 2. Install the Qdrant Client Once you have a cluster, the fastest way to get started is to use our official SDKs which provide a convenient interface for working with Qdrant in your preferred programming language. ```bash pip install qdrant-client fastembed # for Python projects # cargo add qdrant-client fastembed # for Rust projects # npm install @qdrant/js-client-rest fastembed # for Node.js projects ``` ## 3. Connect to Qdrant Cloud Import the qdrant client and create a connection to your Qdrant Cloud cluster using your cluster URL and API key. ```python from qdrant_client import QdrantClient # connect to Qdrant Cloud client = QdrantClient( url="https://xyz-example.eu-central.aws.cloud.qdrant.io", api_key="your-api-key", ) ``` ```rust use qdrant_client::Qdrant; // Connect to Qdrant Cloud let client = Qdrant::from_url("https://xyz-example.eu-central.aws.cloud.qdrant.io:6334") .api_key("your-api-key") .build()?; ``` ```typescript import { QdrantClient } from "@qdrant/js-client-rest"; const client = new QdrantClient({ url: "https://xyz-example.eu-central.aws.cloud.qdrant.io", apiKey: "your-api-key", }); ``` ```bash # test the connection curl -X GET \ 'http://:6333/collections' \ --header 'api-key: ' ``` ## 4. Create our collection We will use some sample menu items to demonstrate how to create a collection and add data to it. Each menu item has a name, description, price, and category. First, we need to create a collection in Qdrant to store our menu items. ```python from qdrant_client.models import Distance, VectorParams # create collection client.create_collection( collection_name="items", vectors_config=VectorParams(size=384, distance=Distance.COSINE), ) ``` ```rust use qdrant_client::qdrant::{CreateCollectionBuilder, Distance, VectorParamsBuilder}; // create collection client.create_collection( CreateCollectionBuilder::new("items") .vectors_config(VectorParamsBuilder::new(384, Distance::Cosine)), ) .await?; ``` ```typescript await client.createCollection("items", { vectors: { size: 384, distance: "Cosine" }, }); ``` ```bash curl -X PUT \ 'http://:6333/collections/items' \ --header 'api-key: ' \ --header 'Content-Type: application/json' \ --data-raw '{ "vectors": { "size": 384, "distance": "Cosine" } }' ``` ## 5. Populate the collection Next, we will populate the collection with menu items. Each item will be represented as a point in the collection, with its vector embedding and associated metadata. ```python from qdrant_client.models import PointStruct from fastembed import TextEmbedding # load the embedding model model = TextEmbedding('BAAI/bge-small-en-v1.5') menu_items = [ ("Pad Thai with Tofu", "Stir-fried rice noodles with tofu bean sprouts scallions and crushed peanuts in traditional tamarind sauce", "$13.95", "Noodles"), ("Grilled Salmon Fillet", "Wild-caught Atlantic salmon grilled with lemon butter and fresh herbs served with seasonal vegetables", "$24.50", "Seafood Entrees"), ("Mushroom Risotto", "Creamy arborio rice with mixed mushrooms parmesan truffle oil and fresh thyme", "$16.75", "Vegetarian"), ("Bibimbap Bowl", "Korean rice bowl with seasoned vegetables fried egg gochujang sauce and choice of protein", "$14.50", "Korean Bowls"), ("Falafel Wrap", "Crispy chickpea fritters with hummus tahini cucumber tomato and pickled vegetables in warm pita", "$11.25", "Mediterranean"), ("Shrimp Tacos", "Three soft tacos with grilled shrimp cabbage slaw chipotle aioli and fresh lime", "$13.00", "Tacos"), ("Vegetable Curry", "Mixed vegetables in aromatic coconut curry sauce with jasmine rice and naan bread", "$12.95", "Indian Curries"), ("Tuna Poke Bowl", "Fresh ahi tuna with avocado edamame cucumber seaweed salad over sushi rice with spicy mayo", "$16.50", "Poke Bowls"), ("Margherita Pizza", "Fresh mozzarella san marzano tomatoes basil and extra virgin olive oil on wood-fired crust", "$14.00", "Pizza"), ("Chicken Tikka Masala", "Tandoori chicken in creamy tomato sauce with aromatic spices served with basmati rice", "$15.95", "Indian Entrees"), ("Greek Salad", "Romaine lettuce tomatoes cucumbers kalamata olives feta cheese red onion with lemon oregano dressing", "$10.50", "Salads"), ("Lobster Roll", "Fresh Maine lobster meat with light mayo on toasted buttery roll served with chips", "$22.00", "Seafood Sandwiches"), ("Quinoa Buddha Bowl", "Organic quinoa with roasted chickpeas kale sweet potato tahini dressing and hemp seeds", "$13.50", "Healthy Bowls"), ("Beef Pho", "Traditional Vietnamese beef noodle soup with rice noodles fresh herbs bean sprouts and lime", "$12.75", "Noodle Soups"), ("Eggplant Parmesan", "Breaded eggplant layered with marinara mozzarella and parmesan served with pasta", "$15.25", "Italian Entrees"), ("Crab Cakes", "Maryland-style lump crab cakes with remoulade sauce and mixed greens", "$18.50", "Seafood Appetizers"), ("Tofu Stir Fry", "Crispy tofu with broccoli bell peppers snap peas in garlic ginger sauce over steamed rice", "$12.50", "Vegetarian Entrees"), ("Salmon Sushi Platter", "12 pieces of fresh salmon nigiri and sashimi with wasabi pickled ginger and soy sauce", "$19.95", "Sushi"), ("Caprese Sandwich", "Fresh mozzarella tomatoes basil pesto balsamic glaze on ciabatta bread", "$11.75", "Sandwiches"), ("Tom Yum Soup", "Spicy and sour Thai soup with shrimp lemongrass galangal mushrooms and kaffir lime leaves", "$11.50", "Soups"), ("Lentil Dal", "Red lentils simmered with turmeric cumin coriander served with rice and naan", "$11.95", "Vegan Entrees"), ("Fish and Chips", "Beer-battered cod with crispy fries malt vinegar and tartar sauce", "$16.00", "British Classics"), ("Veggie Burger", "House-made black bean and quinoa patty with avocado sprouts tomato on brioche bun", "$13.25", "Burgers"), ("Miso Ramen", "Rich miso broth with ramen noodles soft-boiled egg bamboo shoots nori and scallions", "$14.50", "Ramen"), ("Stuffed Bell Peppers", "Roasted bell peppers filled with rice vegetables herbs and melted cheese", "$13.75", "Vegetarian Entrees"), ("Scallop Risotto", "Pan-seared sea scallops over creamy parmesan risotto with white wine and lemon", "$26.50", "Seafood Specials"), ("Spring Rolls", "Fresh rice paper rolls with vegetables tofu rice noodles herbs and peanut dipping sauce", "$8.95", "Appetizers"), ("Oyster Po Boy", "Fried oysters with lettuce tomato pickles and remoulade on french bread", "$15.50", "Sandwiches"), ("Portobello Mushroom Steak", "Grilled portobello cap marinated in balsamic with roasted vegetables and quinoa", "$14.95", "Vegan Entrees"), ("Coconut Shrimp", "Jumbo shrimp breaded in shredded coconut served with sweet chili sauce", "$14.25", "Seafood Appetizers") ] # embedding generator points = [] embeddings = model.embed([f"{item[0]} {item[1]}" for item in menu_items]) for i, embedding in enumerate(embeddings): vector = embedding.tolist() point = PointStruct( id=i, vector=vector, payload={ "item_name": menu_items[i][0], "description": menu_items[i][1], "price": menu_items[i][2], "category": menu_items[i][3], } ) points.append(point) # upsert points to collection client.upsert( collection_name="items", points=points, ) ``` ```rust use fastembed::{EmbeddingModel, InitOptions, TextEmbedding}; use qdrant_client::qdrant::{PointStruct, UpsertPointsBuilder}; use qdrant_client::{Qdrant, Payload}; use serde_json::json; // load the embedding model let mut model = TextEmbedding::try_new( InitOptions::new(EmbeddingModel::BGESmallENV15).with_show_download_progress(true), ) .expect("Failed to load embedding model"); // generate embeddings and prepare points let menu_items = vec![ ( "Pad Thai with Tofu", "Stir-fried rice noodles with tofu bean sprouts scallions and crushed peanuts in traditional tamarind sauce", "$13.95", "Noodles", ), ( "Grilled Salmon Fillet", "Wild-caught Atlantic salmon grilled with lemon butter and fresh herbs served with seasonal vegetables", "$24.50", "Seafood Entrees", ), ( "Mushroom Risotto", "Creamy arborio rice with mixed mushrooms parmesan truffle oil and fresh thyme", "$16.75", "Vegetarian", ), ( "Bibimbap Bowl", "Korean rice bowl with seasoned vegetables fried egg gochujang sauce and choice of protein", "$14.50", "Korean Bowls", ), ( "Falafel Wrap", "Crispy chickpea fritters with hummus tahini cucumber tomato and pickled vegetables in warm pita", "$11.25", "Mediterranean", ), ( "Shrimp Tacos", "Three soft tacos with grilled shrimp cabbage slaw chipotle aioli and fresh lime", "$13.00", "Tacos", ), ( "Vegetable Curry", "Mixed vegetables in aromatic coconut curry sauce with jasmine rice and naan bread", "$12.95", "Indian Curries", ), ( "Tuna Poke Bowl", "Fresh ahi tuna with avocado edamame cucumber seaweed salad over sushi rice with spicy mayo", "$16.50", "Poke Bowls", ), ( "Margherita Pizza", "Fresh mozzarella san marzano tomatoes basil and extra virgin olive oil on wood-fired crust", "$14.00", "Pizza", ), ( "Chicken Tikka Masala", "Tandoori chicken in creamy tomato sauce with aromatic spices served with basmati rice", "$15.95", "Indian Entrees", ), ( "Greek Salad", "Romaine lettuce tomatoes cucumbers kalamata olives feta cheese red onion with lemon oregano dressing", "$10.50", "Salads", ), ( "Lobster Roll", "Fresh Maine lobster meat with light mayo on toasted buttery roll served with chips", "$22.00", "Seafood Sandwiches", ), ( "Quinoa Buddha Bowl", "Organic quinoa with roasted chickpeas kale sweet potato tahini dressing and hemp seeds", "$13.50", "Healthy Bowls", ), ( "Beef Pho", "Traditional Vietnamese beef noodle soup with rice noodles fresh herbs bean sprouts and lime", "$12.75", "Noodle Soups", ), ( "Eggplant Parmesan", "Breaded eggplant layered with marinara mozzarella and parmesan served with pasta", "$15.25", "Italian Entrees", ), ( "Crab Cakes", "Maryland-style lump crab cakes with remoulade sauce and mixed greens", "$18.50", "Seafood Appetizers", ), ( "Tofu Stir Fry", "Crispy tofu with broccoli bell peppers snap peas in garlic ginger sauce over steamed rice", "$12.50", "Vegetarian Entrees", ), ( "Salmon Sushi Platter", "12 pieces of fresh salmon nigiri and sashimi with wasabi pickled ginger and soy sauce", "$19.95", "Sushi", ), ( "Caprese Sandwich", "Fresh mozzarella tomatoes basil pesto balsamic glaze on ciabatta bread", "$11.75", "Sandwiches", ), ( "Tom Yum Soup", "Spicy and sour Thai soup with shrimp lemongrass galangal mushrooms and kaffir lime leaves", "$11.50", "Soups", ), ( "Lentil Dal", "Red lentils simmered with turmeric cumin coriander served with rice and naan", "$11.95", "Vegan Entrees", ), ( "Fish and Chips", "Beer-battered cod with crispy fries malt vinegar and tartar sauce", "$16.00", "British Classics", ), ( "Veggie Burger", "House-made black bean and quinoa patty with avocado sprouts tomato on brioche bun", "$13.25", "Burgers", ), ( "Miso Ramen", "Rich miso broth with ramen noodles soft-boiled egg bamboo shoots nori and scallions", "$14.50", "Ramen", ), ( "Stuffed Bell Peppers", "Roasted bell peppers filled with rice vegetables herbs and melted cheese", "$13.75", "Vegetarian Entrees", ), ( "Scallop Risotto", "Pan-seared sea scallops over creamy parmesan risotto with white wine and lemon", "$26.50", "Seafood Specials", ), ( "Spring Rolls", "Fresh rice paper rolls with vegetables tofu rice noodles herbs and peanut dipping sauce", "$8.95", "Appetizers", ), ( "Oyster Po Boy", "Fried oysters with lettuce tomato pickles and remoulade on french bread", "$15.50", "Sandwiches", ), ( "Portobello Mushroom Steak", "Grilled portobello cap marinated in balsamic with roasted vegetables and quinoa", "$14.95", "Vegan Entrees", ), ( "Coconut Shrimp", "Jumbo shrimp breaded in shredded coconut served with sweet chili sauce", "$14.25", "Seafood Appetizers", ), ]; let embeddings = model .embed( menu_items .iter() .map(|item| format!("{} {}", item.0, item.1)) .collect::>(), None, ) .expect("Failed to generate embeddings"); let points = embeddings .into_iter() .enumerate() .map(|(idx, embedding)| { PointStruct::new( idx as u64, embedding, Payload::try_from(json!({ "item_name": menu_items[idx].0, "description": menu_items[idx].1, "price": menu_items[idx].2, "category": menu_items[idx].3, })) .unwrap(), ) }) .collect::>(); let _ = client .upsert_points(UpsertPointsBuilder::new("items", points).wait(true)) .await; ``` ```typescript import { TextEmbedding, EmbeddingModel } from 'fastembed'; // load the embedding model const model = await FlagEmbedding.init({ model: EmbeddingModel.BGESmallENV15, }); let menuItems = [ [ "Pad Thai with Tofu", "Stir-fried rice noodles with tofu bean sprouts scallions and crushed peanuts in traditional tamarind sauce", "$13.95", "Noodles", ], [ "Grilled Salmon Fillet", "Wild-caught Atlantic salmon grilled with lemon butter and fresh herbs served with seasonal vegetables", "$24.50", "Seafood Entrees", ], [ "Mushroom Risotto", "Creamy arborio rice with mixed mushrooms parmesan truffle oil and fresh thyme", "$16.75", "Vegetarian", ], [ "Bibimbap Bowl", "Korean rice bowl with seasoned vegetables fried egg gochujang sauce and choice of protein", "$14.50", "Korean Bowls", ], [ "Falafel Wrap", "Crispy chickpea fritters with hummus tahini cucumber tomato and pickled vegetables in warm pita", "$11.25", "Mediterranean", ], [ "Shrimp Tacos", "Three soft tacos with grilled shrimp cabbage slaw chipotle aioli and fresh lime", "$13.00", "Tacos", ], [ "Vegetable Curry", "Mixed vegetables in aromatic coconut curry sauce with jasmine rice and naan bread", "$12.95", "Indian Curries", ], [ "Tuna Poke Bowl", "Fresh ahi tuna with avocado edamame cucumber seaweed salad over sushi rice with spicy mayo", "$16.50", "Poke Bowls", ], [ "Margherita Pizza", "Fresh mozzarella san marzano tomatoes basil and extra virgin olive oil on wood-fired crust", "$14.00", "Pizza", ], [ "Chicken Tikka Masala", "Tandoori chicken in creamy tomato sauce with aromatic spices served with basmati rice", "$15.95", "Indian Entrees", ], [ "Greek Salad", "Romaine lettuce tomatoes cucumbers kalamata olives feta cheese red onion with lemon oregano dressing", "$10.50", "Salads", ], [ "Lobster Roll", "Fresh Maine lobster meat with light mayo on toasted buttery roll served with chips", "$22.00", "Seafood Sandwiches", ], [ "Quinoa Buddha Bowl", "Organic quinoa with roasted chickpeas kale sweet potato tahini dressing and hemp seeds", "$13.50", "Healthy Bowls", ], [ "Beef Pho", "Traditional Vietnamese beef noodle soup with rice noodles fresh herbs bean sprouts and lime", "$12.75", "Noodle Soups", ], [ "Eggplant Parmesan", "Breaded eggplant layered with marinara mozzarella and parmesan served with pasta", "$15.25", "Italian Entrees", ], [ "Crab Cakes", "Maryland-style lump crab cakes with remoulade sauce and mixed greens", "$18.50", "Seafood Appetizers", ], [ "Tofu Stir Fry", "Crispy tofu with broccoli bell peppers snap peas in garlic ginger sauce over steamed rice", "$12.50", "Vegetarian Entrees", ], [ "Salmon Sushi Platter", "12 pieces of fresh salmon nigiri and sashimi with wasabi pickled ginger and soy sauce", "$19.95", "Sushi", ], [ "Caprese Sandwich", "Fresh mozzarella tomatoes basil pesto balsamic glaze on ciabatta bread", "$11.75", "Sandwiches", ], [ "Tom Yum Soup", "Spicy and sour Thai soup with shrimp lemongrass galangal mushrooms and kaffir lime leaves", "$11.50", "Soups", ], [ "Lentil Dal", "Red lentils simmered with turmeric cumin coriander served with rice and naan", "$11.95", "Vegan Entrees", ], [ "Fish and Chips", "Beer-battered cod with crispy fries malt vinegar and tartar sauce", "$16.00", "British Classics", ], [ "Veggie Burger", "House-made black bean and quinoa patty with avocado sprouts tomato on brioche bun", "$13.25", "Burgers", ], [ "Miso Ramen", "Rich miso broth with ramen noodles soft-boiled egg bamboo shoots nori and scallions", "$14.50", "Ramen", ], [ "Stuffed Bell Peppers", "Roasted bell peppers filled with rice vegetables herbs and melted cheese", "$13.75", "Vegetarian Entrees", ], [ "Scallop Risotto", "Pan-seared sea scallops over creamy parmesan risotto with white wine and lemon", "$26.50", "Seafood Specials", ], [ "Spring Rolls", "Fresh rice paper rolls with vegetables tofu rice noodles herbs and peanut dipping sauce", "$8.95", "Appetizers", ], [ "Oyster Po Boy", "Fried oysters with lettuce tomato pickles and remoulade on french bread", "$15.50", "Sandwiches", ], [ "Portobello Mushroom Steak", "Grilled portobello cap marinated in balsamic with roasted vegetables and quinoa", "$14.95", "Vegan Entrees", ], [ "Coconut Shrimp", "Jumbo shrimp breaded in shredded coconut served with sweet chili sauce", "$14.25", "Seafood Appetizers", ], ] as const; // generate embeddings and prepare points const points: any[] = []; let idx = 0; const embeddings = model.embed(menuItems.map(item => `${item[0]} ${item[1]}`)); for await (const embedding of embeddings) { points.push({ id: idx, vector: Array.from(embedding[0]), payload: { item_name: menuItems[idx][0], description: menuItems[idx][1], price: menuItems[idx][2], category: menuItems[idx][3], }, }); idx++; } // upsert points to collection await client.upsert("items", { points }); ``` ## 6. Search the Menu Items Now we can search the menu item dataset! We'll use the same `BAAI/bge-small-en-v1.5` model to embed our query text, then find the best dishes matching that embedding. ```python # generate query embedding query_text = "vegetarian dishes" query_vector = next(iter(model.embed(query_text))) # search for similar menu items results = client.query_points( collection_name="items", query=query_vector, with_payload=True, limit=5 ) # print results for result in results.points: print(f"Item: {result.payload.get('item_name', 'N/A')}") print(f"Score: {result.score}") print(f"Description: {result.payload['description'][:150]}...") print(f"Price: {result.payload.get('price', 'N/A')}") print("---") ``` ```rust // generate query embedding let query_text = "vegetarian dishes"; let query_embeddings = model .embed(vec![query_text], None) .expect("Failed to generate embeddings"); let query_vector = query_embeddings[0].clone(); let results = client .query( QueryPointsBuilder::new("items") .query(query_vector) .with_payload(true) .limit(5), ) .await .expect("Query failed"); let na_str = "N/A".to_string(); for result in results.result { let payload = result.payload; println!("Item: {}", payload.get("item_name") .and_then(|v| v.as_str()).unwrap_or(&na_str)); println!("Score: {}", result.score); println!("Description: {}", payload.get("description") .and_then(|v| v.as_str()).unwrap_or(&na_str)); println!("Price: {}", payload.get("price") .and_then(|v| v.as_str()).unwrap_or(&na_str)); println!("---"); } ``` ```typescript // generate query embedding const queryText = "vegetarian dishes"; const queryEmbedding = (await model.embed([queryText]).next()).value! // search for similar items const results = await client.query("items", { query: Array.from(queryEmbedding[0]), with_payload: true, limit: 5, }); // print results for (const result of results.points) { console.log(`Item: ${result.payload?.item_name || 'N/A'}`); console.log(`Score: ${result.score}`); console.log(`Description: ${result.payload?.description || 'N/A'}`); console.log(`Price: ${result.payload?.price || 'N/A'}`); console.log('---'); } ``` ## That's Vector Search! You've just performed semantic search on real menu item data. The query "vegetarian dishes" returned similar menu items based on meaning, not just keyword matching. ## What's Next? - Explore [filtering](/documentation/concepts/filtering/) to combine semantic search with structured queries - Learn about [collections](/documentation/concepts/collections/) and advanced configuration options - Check out more [examples and tutorials](/documentation/tutorials-overview/)