{"id":30381,"date":"2025-10-29T00:41:43","date_gmt":"2025-10-29T07:41:43","guid":{"rendered":"https:\/\/preview-en.pingcap.com\/?post_type=tutorial&amp;p=29770"},"modified":"2025-10-29T00:41:43","modified_gmt":"2025-10-29T07:41:43","slug":"tutorial-vector-search-with-real-time-data","status":"publish","type":"tutorial","link":"https:\/\/www.pingcap.com\/ko\/tutorial\/tutorial-vector-search-with-real-time-data\/","title":{"rendered":"Tutorial: Vector Search with Real-time Data"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Tutorial: Vector Search with Real-time Data<\/h1>\n\n\n\n<p>This example demonstrates TiDB&#8217;s vector search capabilities with real-time data updates, simulating an e-commerce recommendation system. It showcases how TiDB automatically embeds product descriptions and uses vector similarity search to provide personalized recommendations based on user preferences.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Real time Vector Search with TiDB\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/YAI4_uhKd10?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Features\"><\/span>Features<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#features\"><\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ud83d\udd0d Vector Search<\/strong>: Semantic similarity search using auto-embedding<\/li>\n\n\n\n<li><strong>\ud83d\udcf1 Real-time Updates<\/strong>: Instant recommendation refresh when products are added, updated, or deleted<\/li>\n\n\n\n<li><strong>\ud83d\udecd\ufe0f Shopping Experience<\/strong>: Mobile app UI showing personalized product recommendations<\/li>\n\n\n\n<li><strong>\u2699\ufe0f Admin Panel<\/strong>: Full CRUD operations on products<\/li>\n\n\n\n<li><strong>\ud83c\udfaf Smart Filtering<\/strong>: Adjustable similarity threshold for recommendation precision<\/li>\n\n\n\n<li><strong>\ud83e\udd16 Auto-Embedding<\/strong>: TiDB automatically generates vector embeddings for product descriptions<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"UI_Layout\"><\/span>UI Layout<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#ui-layout\"><\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The application features a two-column layout:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Left Column: Shopping App (User View)<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#left-column-shopping-app-user-view\"><\/a><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mobile phone mockup showing personalized recommendations<\/li>\n\n\n\n<li>Displays up to 5 products that match the user&#8217;s profile<\/li>\n\n\n\n<li>Results filtered by similarity threshold<\/li>\n\n\n\n<li>Clean, modern design with product cards showing name, description, price, and category<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Right Column: Admin Panel<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#right-column-admin-panel\"><\/a><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Top Section<\/strong>: Product list with edit and delete functionality\n<ul class=\"wp-block-list\">\n<li>Edit products inline with a form<\/li>\n\n\n\n<li>Delete products with one click<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Bottom Section<\/strong>: Add new products form\n<ul class=\"wp-block-list\">\n<li>Input fields for name, description, category, and price<\/li>\n\n\n\n<li>Auto-embedding happens automatically when products are added<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_It_Works\"><\/span>How It Works<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#how-it-works\"><\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>User Profile<\/strong>: A text description of user preferences (e.g., &#8220;a user likes sports&#8221;)<\/li>\n\n\n\n<li><strong>Auto-Embedding<\/strong>: Product descriptions are automatically converted to vector embeddings by TiDB<\/li>\n\n\n\n<li><strong>Vector Search<\/strong>: The system searches for products similar to the user profile using vector similarity<\/li>\n\n\n\n<li><strong>Threshold Filtering<\/strong>: Only products within the similarity threshold are shown<\/li>\n\n\n\n<li><strong>Real-time Updates<\/strong>: Any changes to products trigger automatic recommendation refresh<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Initial State<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#initial-state\"><\/a><\/h3>\n\n\n\n<p>The application starts with 5 sample products:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>3 sports-related items<\/strong>&nbsp;(matching the default profile &#8220;a user likes sports&#8221;)\n<ul class=\"wp-block-list\">\n<li>Professional Basketball<\/li>\n\n\n\n<li>Running Shoes<\/li>\n\n\n\n<li>Yoga Mat<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>2 unrelated items<\/strong>&nbsp;(filtered out by default threshold)\n<ul class=\"wp-block-list\">\n<li>Cooking Pot Set<\/li>\n\n\n\n<li>Gardening Tools Kit<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>With the default threshold (0.5), only the 3 sports items appear in recommendations.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Prerequisites\"><\/span>Prerequisites<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#prerequisites\"><\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Python 3.10+<\/strong><\/li>\n\n\n\n<li><strong>A TiDB Cloud Serverless cluster<\/strong>: Create a free cluster here:&nbsp;<a href=\"https:\/\/tidbcloud.com\/?utm_source=github&amp;utm_medium=referral&amp;utm_campaign=pytidb_examples\">tidbcloud.com<\/a><\/li>\n\n\n\n<li><strong>OpenAI API Key<\/strong>: Required for embedding generation<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Setup_Instructions\"><\/span>Setup Instructions<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#setup-instructions\"><\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Clone the repository<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#step-1-clone-the-repository\"><\/a><\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">git clone https:\/\/github.com\/pingcap\/pytidb.git\ncd pytidb\/examples\/vector-search-with-realtime-data\/<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Install dependencies<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#step-2-install-dependencies\"><\/a><\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">python -m venv .venv\nsource .venv\/bin\/activate  # On Windows: .venv\\Scripts\\activate\npip install -r requirements.txt<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Configure environment variables<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#step-3-configure-environment-variables\"><\/a><\/h3>\n\n\n\n<p>The&nbsp;<code>.env.example<\/code>&nbsp;file is already in the directory. Create a&nbsp;<code>.env<\/code>&nbsp;file based on it:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">cp .env.example .env<\/pre>\n\n\n\n<p>Then edit&nbsp;<code>.env<\/code>&nbsp;with your credentials:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># TiDB Connection (get from https:\/\/tidbcloud.com\/clusters)\nTIDB_HOST=gateway01.ap-southeast-1.prod.aws.tidbcloud.com\nTIDB_PORT=4000\nTIDB_USERNAME=your-username.root\nTIDB_PASSWORD=your-password\nTIDB_DATABASE=test\n\n# OpenAI API Key (for embeddings)\nOPENAI_API_KEY=your-openai-api-key\n\n# User Profile (customize as needed)\nUSER_PROFILE=a user likes sports<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Run the application<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#step-4-run-the-application\"><\/a><\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">streamlit run app.py<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Open in browser<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#step-5-open-in-browser\"><\/a><\/h3>\n\n\n\n<p>Open your browser and visit&nbsp;<code>http:\/\/localhost:8501<\/code><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Usage_Guide\"><\/span>Usage Guide<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#usage-guide\"><\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Viewing Recommendations<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#viewing-recommendations\"><\/a><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>The left side shows a mobile app interface with personalized recommendations<\/li>\n\n\n\n<li>Recommendations are based on the USER_PROFILE from your&nbsp;<code>.env<\/code>&nbsp;file<\/li>\n\n\n\n<li>Only products within the similarity threshold are displayed<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Adjusting Settings<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#adjusting-settings\"><\/a><\/h3>\n\n\n\n<p>Click the &#8220;\u2699\ufe0f Settings&#8221; expander at the top to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Change User Profile<\/strong>: Modify preferences to see different recommendations\n<ul class=\"wp-block-list\">\n<li>Try: &#8220;a user likes cooking&#8221;, &#8220;someone interested in fitness&#8221;, &#8220;outdoor enthusiast&#8221;<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Adjust Threshold<\/strong>: Control how strictly products must match the profile\n<ul class=\"wp-block-list\">\n<li>Lower values (0.3-0.4): Stricter matching, fewer results<\/li>\n\n\n\n<li>Higher values (0.6-0.8): Looser matching, more results<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Managing Products<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#managing-products\"><\/a><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Adding Products<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#adding-products\"><\/a><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Scroll to the bottom of the right panel<\/li>\n\n\n\n<li>Fill in the &#8220;Add New Product&#8221; form:\n<ul class=\"wp-block-list\">\n<li>Product Name<\/li>\n\n\n\n<li>Description (this will be embedded automatically)<\/li>\n\n\n\n<li>Category<\/li>\n\n\n\n<li>Price<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Click &#8220;Add Product&#8221;<\/li>\n\n\n\n<li>Watch recommendations update automatically!<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Editing Products<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#editing-products\"><\/a><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Find the product in the list<\/li>\n\n\n\n<li>Click the \u270f\ufe0f (edit) button<\/li>\n\n\n\n<li>Modify the fields in the form<\/li>\n\n\n\n<li>Click &#8220;\ud83d\udcbe Save&#8221; to update, or &#8220;\u274c Cancel&#8221; to discard changes<\/li>\n\n\n\n<li>Updated products will be re-embedded and recommendations will refresh<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Deleting Products<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#deleting-products\"><\/a><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Find the product in the list<\/li>\n\n\n\n<li>Click the \ud83d\uddd1\ufe0f (delete) button<\/li>\n\n\n\n<li>Product is removed immediately<\/li>\n\n\n\n<li>Recommendations update automatically<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Example_Experiments\"><\/span>Example Experiments<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#example-experiments\"><\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Experiment 1: Add a Sports Item<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#experiment-1-add-a-sports-item\"><\/a><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Add a new product: &#8220;Tennis Racket&#8221; with description about tennis and sports<\/li>\n\n\n\n<li>Observe it appears in recommendations (if profile is sports-related)<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Experiment 2: Add an Unrelated Item<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#experiment-2-add-an-unrelated-item\"><\/a><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Add a product: &#8220;Classical Music CD&#8221; with description about music<\/li>\n\n\n\n<li>Observe it doesn&#8217;t appear in recommendations (filtered by threshold)<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Experiment 3: Change User Profile<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#experiment-3-change-user-profile\"><\/a><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open Settings and change profile to &#8220;a user likes cooking&#8221;<\/li>\n\n\n\n<li>Watch recommendations switch to show the Cooking Pot Set<\/li>\n\n\n\n<li>Sports items should no longer appear<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Experiment 4: Adjust Threshold<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#experiment-4-adjust-threshold\"><\/a><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Lower threshold to 0.3 (stricter matching)<\/li>\n\n\n\n<li>Fewer products appear in recommendations<\/li>\n\n\n\n<li>Raise threshold to 0.7 (looser matching)<\/li>\n\n\n\n<li>More products appear, including less relevant ones<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Technical_Details\"><\/span>Technical Details<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#technical-details\"><\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Database Schema<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#database-schema\"><\/a><\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">class Product(TableModel):\n    id: int                           # Primary key (auto-increment)\n    name: str                         # Product name\n    description: str                  # Product description\n    description_vec: list[float]      # Auto-generated embedding vector\n    category: str                     # Product category\n    price: float                      # Product price<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Vector Search Query<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#vector-search-query\"><\/a><\/h3>\n\n\n\n<p>The application uses TiDB&#8217;s vector search with distance threshold:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">results = (\n    table.search(user_profile)              # Search using user profile as query\n    .distance_threshold(distance_threshold) # Filter by similarity\n    .limit(5)                               # Return top 5 results\n    .to_list()\n)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Embedding Model<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#embedding-model\"><\/a><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Model<\/strong>: OpenAI&nbsp;<code>text-embedding-3-small<\/code><\/li>\n\n\n\n<li><strong>Dimensions<\/strong>: 1536<\/li>\n\n\n\n<li><strong>Provider<\/strong>: OpenAI API<\/li>\n\n\n\n<li><strong>Auto-embedding<\/strong>: Triggered automatically on insert\/update<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Learn_More\"><\/span>Learn More<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#learn-more\"><\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/pingcap.github.io\/ai\/\">PyTiDB Documentation<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/vector-search-overview\">TiDB Vector Search<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\">Vector Search Examples<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"License\"><\/span>License<a href=\"https:\/\/github.com\/pingcap\/pytidb\/tree\/main\/examples\/vector-search-with-realtime-data#license\"><\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>This example is part of the PyTiDB project and follows the same license.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tutorial: Vector Search with Real-time Data This example demonstrates TiDB&#8217;s vector search capabilities with real-time data updates, simulating an e-commerce recommendation system. It showcases how TiDB automatically embeds product descriptions and uses vector similarity search to provide personalized recommendations based on user preferences. Features UI Layout The application features a two-column layout: Left Column: Shopping [&hellip;]<\/p>\n","protected":false},"featured_media":0,"template":"","categories":[],"tags":[],"class_list":["post-30381","tutorial","type-tutorial","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial: Vector Search with Real-time Data | TiDB<\/title>\n<meta name=\"description\" content=\"See how TiDB uses real-time vector search and automatic embeddings to power personalized e-commerce recommendations.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.pingcap.com\/ko\/tutorial\/tutorial-vector-search-with-real-time-data\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Vector Search with Real-time Data | TiDB\" \/>\n<meta property=\"og:description\" content=\"See how TiDB uses real-time vector search and automatic embeddings to power personalized e-commerce recommendations.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.pingcap.com\/ko\/tutorial\/tutorial-vector-search-with-real-time-data\/\" \/>\n<meta property=\"og:site_name\" content=\"TiDB\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/pingcap2015\" \/>\n<meta property=\"og:image\" content=\"https:\/\/static.pingcap.com\/files\/2024\/09\/11005522\/Homepage-Ad.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1440\" \/>\n\t<meta property=\"og:image:height\" content=\"714\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.pingcap.com\/tutorial\/tutorial-vector-search-with-real-time-data\/\",\"url\":\"https:\/\/www.pingcap.com\/tutorial\/tutorial-vector-search-with-real-time-data\/\",\"name\":\"Tutorial: Vector Search with Real-time Data | TiDB\",\"isPartOf\":{\"@id\":\"https:\/\/www.pingcap.com\/#website\"},\"datePublished\":\"2025-10-29T07:41:43+00:00\",\"description\":\"See how TiDB uses real-time vector search and automatic embeddings to power personalized e-commerce recommendations.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.pingcap.com\/tutorial\/tutorial-vector-search-with-real-time-data\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.pingcap.com\/tutorial\/tutorial-vector-search-with-real-time-data\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.pingcap.com\/tutorial\/tutorial-vector-search-with-real-time-data\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.pingcap.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Vector Search with Real-time Data\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.pingcap.com\/#website\",\"url\":\"https:\/\/www.pingcap.com\/\",\"name\":\"TiDB\",\"description\":\"TiDB | SQL at Scale\",\"publisher\":{\"@id\":\"https:\/\/www.pingcap.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.pingcap.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.pingcap.com\/#organization\",\"name\":\"PingCAP\",\"url\":\"https:\/\/www.pingcap.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png\",\"width\":811,\"height\":232,\"caption\":\"PingCAP\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/facebook.com\/pingcap2015\",\"https:\/\/x.com\/PingCAP\",\"https:\/\/linkedin.com\/company\/pingcap\",\"https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutorial: Vector Search with Real-time Data | TiDB","description":"See how TiDB uses real-time vector search and automatic embeddings to power personalized e-commerce recommendations.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.pingcap.com\/ko\/tutorial\/tutorial-vector-search-with-real-time-data\/","og_locale":"ko_KR","og_type":"article","og_title":"Tutorial: Vector Search with Real-time Data | TiDB","og_description":"See how TiDB uses real-time vector search and automatic embeddings to power personalized e-commerce recommendations.","og_url":"https:\/\/www.pingcap.com\/ko\/tutorial\/tutorial-vector-search-with-real-time-data\/","og_site_name":"TiDB","article_publisher":"https:\/\/facebook.com\/pingcap2015","og_image":[{"width":1440,"height":714,"url":"https:\/\/static.pingcap.com\/files\/2024\/09\/11005522\/Homepage-Ad.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@PingCAP","twitter_misc":{"Est. reading time":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.pingcap.com\/tutorial\/tutorial-vector-search-with-real-time-data\/","url":"https:\/\/www.pingcap.com\/tutorial\/tutorial-vector-search-with-real-time-data\/","name":"Tutorial: Vector Search with Real-time Data | TiDB","isPartOf":{"@id":"https:\/\/www.pingcap.com\/#website"},"datePublished":"2025-10-29T07:41:43+00:00","description":"See how TiDB uses real-time vector search and automatic embeddings to power personalized e-commerce recommendations.","breadcrumb":{"@id":"https:\/\/www.pingcap.com\/tutorial\/tutorial-vector-search-with-real-time-data\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.pingcap.com\/tutorial\/tutorial-vector-search-with-real-time-data\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.pingcap.com\/tutorial\/tutorial-vector-search-with-real-time-data\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.pingcap.com\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Vector Search with Real-time Data"}]},{"@type":"WebSite","@id":"https:\/\/www.pingcap.com\/#website","url":"https:\/\/www.pingcap.com\/","name":"\ud2f0DB","description":"TiDB | SQL at Scale","publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.pingcap.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.pingcap.com\/#organization","name":"PingCAP","url":"https:\/\/www.pingcap.com\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/","url":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","contentUrl":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","width":811,"height":232,"caption":"PingCAP"},"image":{"@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/pingcap2015","https:\/\/x.com\/PingCAP","https:\/\/linkedin.com\/company\/pingcap","https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA"]}]}},"_links":{"self":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/tutorial\/30381","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/tutorial"}],"about":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/types\/tutorial"}],"wp:attachment":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media?parent=30381"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/categories?post=30381"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/tags?post=30381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}