हम एक नई विशेषता साझा करने के लिए उत्सुक हैं जो सेमांटिक खोज ऐप बनाने को SQL लिखने जितना सरल बनाती है: ऑटो एम्बेडिंग्स।
इस जोड़ के साथ, Manticore Search आपके लिए एम्बेडिंग निर्माण का ध्यान रखता है—कोई अतिरिक्त पाइपलाइन्स, कोई बाहरी सेवाएं, कोई परेशानी नहीं।
पहले की चुनौती
अब तक, सेमांटिक खोज का मतलब अक्सर संघर्ष करना होता था:
- एम्बेडिंग निर्माण के लिए अलग ML पाइपलाइन्स सेट करना
- मॉडलों और उनके निर्भरताओं का प्रबंधन करना
- अपने ऐप, एम्बेडिंग सेवा, और खोज इंजन का समार्थन करना
- वेक्टर आयाम असंगतियों और पूर्व प्रसंस्करण को संभालना
- यह सुनिश्चित करना कि एम्बेडिंग हमेशा एक ही तरीके से उत्पन्न किए जाते हैं
वह ओवरहेड अबGone है।
ऑटो एम्बेडिंग्स क्या हैं?
ऑटो एम्बेडिंग्स के साथ, आप सिर्फ टेक्स्ट डालते हैं। Manticore स्वचालित रूप से:
✨ श्रेष्ठतम मॉडलों के साथ एम्बेडिंग्स उत्पन्न करता है
✨ इन्हें वेक्टर इंडेक्स में कुशलतापूर्वक संग्रहित करता है
✨ आपको प्राकृतिक भाषा में क्वेरी करने देता है
✨ जटिलता को छिपाता है ताकि आप सुविधाओं पर ध्यान केंद्रित कर सकें, अव्यवस्था पर नहीं
यह कैसे काम करता है
एक सेमांटिक खोज ऐप बनाएं 3 चरणों में:
1. एक टेबल बनाएं (SQL उदाहरण)
CREATE TABLE products (
title TEXT,
description TEXT,
category STRING,
price INT,
vector FLOAT_VECTOR KNN_TYPE='hnsw' HNSW_SIMILARITY='l2'
MODEL_NAME='sentence-transformers/all-MiniLM-L6-v2'
FROM='title,description'
);
एक पंक्ति में कॉन्फ़िगर किया गया: Manticore title
और description
से एम्बेडिंग उत्पन्न करता है।
2. डेटा डालें (SQL उदाहरण)
INSERT INTO products(id, title, description, category, price) VALUES
(1, 'green hiking backpack', 'Lightweight backpack suitable for hiking trails', 'outdoors', 5999),
(2, 'laptop sleeve', 'Slim padded case for 15-inch laptops', 'electronics', 1999),
(3, 'travel daypack', 'Compact daypack perfect for light travel or hiking', 'luggage', 3999),
(4, 'black laptop backpack', 'Spacious backpack with padded laptop compartment', 'electronics', 6900),
(5, 'mountain hiking bag', 'Durable trail-ready backpack for mountain hikes', 'outdoors', 8950),
(6, 'everyday backpack', 'Versatile backpack for work, gym and school', 'general', 4900),
(7, 'trail running shoes', 'Lightweight shoes with great grip for trails', 'footwear', 7500),
(8, 'camping gear set', 'Complete set for weekend camping adventures', 'outdoors', 12000),
(9, 'outdoor laptop pack', 'Trail-optimized backpack with laptop sleeve', 'outdoors', 7800),
(10, 'compact hiking backpack', 'Light and foldable backpack for trail hikes', 'outdoors', 4200),
(11, 'portable solar charger', 'Foldable solar panel charger for phones and USB devices', 'electronics', 3400),
(12, 'reusable water bottle', 'Insulated stainless steel bottle keeps drinks cold or hot', 'lifestyle', 2500),
(13, 'noise-cancelling headphones', 'Over-ear headphones with noise cancellation', 'electronics', 13900),
(14, 'organic trail mix', 'Healthy mix of nuts and dried fruit, ideal for hikes', 'food', 899),
(15, 'wireless mouse', 'Compact wireless mouse for laptops and desktops', 'electronics', 1599),
(16, 'office chair', 'Ergonomic office chair with lumbar support and mesh back', 'furniture', 27900),
(17, 'notebook and pen set', 'Elegant A5 notebook with smooth-writing pen', 'stationery', 1200),
(18, 'children\'s adventure book', 'Illustrated storybook about outdoor exploration', 'books', 1299),
(19, 'mini drone', 'Lightweight drone with HD camera and remote control', 'gadgets', 4599),
(20, 'wooden puzzle box', 'Challenging mechanical puzzle made of natural wood', 'toys', 1899);
यह विविध डेटासेट बाहरी गतिविधियों, इलेक्ट्रॉनिक्स, फर्नीचर, पुस्तकों, खिलौनों, और अधिक में फैला हुआ है। ध्यान दें: कोई वेक्टर की आवश्यकता नहीं है। सभी एम्बेडिंग टेक्स्ट से स्वचालित रूप से उत्पन्न होते हैं।
नोट: कीमतें सेंट में हैं (जैसे, 5999 = $59.99)।
3. प्राकृतिक भाषा के साथ खोजें (SQL उदाहरण)
SELECT id, title, description, price, knn_dist()
FROM products
WHERE knn(vector, 5, 'lightweight laptop backpack for trail hiking')
LIMIT 5;
परिणाम:
+------+-------------------------+--------------------------------------------------+-------+------------+
| id | title | description | price | knn_dist() |
+------+-------------------------+--------------------------------------------------+-------+------------+
| 9 | outdoor laptop pack | Trail-optimized backpack with laptop sleeve | 7800 | 0.35392243 |
| 1 | green hiking backpack | Lightweight backpack suitable for hiking trails | 5999 | 0.53113687 |
| 5 | mountain hiking bag | Durable trail-ready backpack for mountain hikes | 8950 | 0.62034285 |
| 4 | black laptop backpack | Spacious backpack with padded laptop compartment | 6900 | 0.65785009 |
| 10 | compact hiking backpack | Light and foldable backpack for trail hikes | 4200 | 0.68591022 |
+------+-------------------------+--------------------------------------------------+-------+------------+
क्वेरी “लाइटवेट लैपटॉप बैकपैक फॉर ट्रेल हाइकिंग” ने सबसे प्रासंगिक आइटम को पहले पाया: “आउटडोर लैपटॉप पैक” जो लैपटॉप और ट्रेल दोनों सुविधाओं को जोड़ता है, इसके बाद हाइकिंग बैकपैक और लैपटॉप-उन्मुख उत्पाद आते हैं।
सही मॉडल चुनें
आप अपनी आवश्यकताओं के अनुसार अलग-अलग मॉडलों का चयन कर सकते हैं:
- 🏠 स्थानीय (Hugging Face मॉडल) — कोई API कुंजी नहीं, अनलिमिटेड उपयोग
- 🌐 OpenAI मॉडल — सर्वश्रेष्ठ-इन-क्लास सेमांटिक गुणवत्ता
- 🚀 Voyage & Jina मॉडल — क्षेत्र- और भाषा-इष्टतम
हाइब्रिड खोज और फ़िल्टरिंग (SQL उदाहरण)
सेमांटिक, कीवर्ड, और संरचित फ़िल्टर एक क्वेरी में मिलाएं:
SELECT id, price, highlight()
FROM products
WHERE knn(vector, 7, 'lightweight laptop backpack for trail hiking')
AND category = 'outdoors'
AND MATCH('"lightweight laptop backpack for trail hiking"/0.5');
परिणाम:
+------+-------+-----------------------------------------------------------------------------------------------+
| id | price | highlight() |
+------+-------+-----------------------------------------------------------------------------------------------+
| 9 | 7800 | outdoor <b>laptop</b> pack | <b>Trail</b>-optimized <b>backpack</b> with <b>laptop</b> sleeve |
| 1 | 5999 | green <b>hiking backpack</b> | <b>Lightweight backpack</b> suitable <b>for hiking</b> trails |
| 5 | 8950 | mountain <b>hiking</b> bag | Durable <b>trail</b>-ready <b>backpack for</b> mountain hikes |
| 10 | 4200 | compact <b>hiking backpack</b> | Light and foldable <b>backpack for trail</b> hikes |
+------+-------+-----------------------------------------------------------------------------------------------+
नोट: highlight() मार्कअप लौटाता है (जैसे, <b>...</b>
).
यह शक्तिशाली संयोजन श्रेणी (outdoors
) द्वारा फ़िल्टर करता है, एम्बेडिंग के माध्यम से सेमांटिक प्रासंगिकता सुनिश्चित करता है, पाठ स्तर की कीवर्ड मेल की आवश्यकता होती है, और मिलान करने वाली शर्तों को उजागर करता है - सभी एक क्वेरी में!
पूर्ण HTTP/JSON API समर्थन
ऑटो एम्बेडिंग्स Manticore के HTTP/JSON API के साथ सहजता से काम करते हैं, SQL की तरह ही कार्यक्षमता प्रदान करते हैं लेकिन REST अंत बिंदुओं के माध्यम से।
JSON के माध्यम से डेटा डालना (HTTP/JSON API उदाहरण)
/insert
अंत बिंदु का उपयोग करें - एम्बेडिंग स्वचालित रूप से उत्पन्न होती हैं:
curl "http://localhost:9308/insert" -H "Content-Type: application/json" \
-d '{
"table": "products",
"id": 21,
"doc": {
"title": "wireless headphones",
"description": "Bluetooth headphones with noise cancellation",
"category": "electronics",
"price": 15900
}
}'
उत्तर:
{
"table": "products",
"id": 21,
"created": true,
"result": "created",
"status": 201
}
ऑटो एम्बेडिंग्स के साथ बल्क इनसर्ट (HTTP/JSON API उदाहरण)
/bulk
का उपयोग करके कई दस्तावेज़ कुशलतापूर्वक डालें:
curl "http://localhost:9308/bulk" -H "Content-Type: application/x-ndjson" \
--data-raw $'{"insert": {"table": "products", "id": 22, "doc": {"title": "gaming laptop", "description": "High-performance laptop for gaming and work", "category": "electronics", "price": 159900}}}
{"insert": {"table": "products", "id": 23, "doc": {"title": "smartphone", "description": "Latest flagship smartphone with 5G", "category": "electronics", "price": 89900}}}
{"insert": {"table": "products", "id": 24, "doc": {"title": "tablet computer", "description": "Lightweight tablet for work and entertainment", "category": "electronics", "price": 49900}}}'
उत्तर:
{
"items": [
{
"bulk": {
"table": "products",
"_id": 24,
"created": 3,
"deleted": 0,
"updated": 0,
"result": "created",
"status": 201
}
}
],
"current_line": 3,
"skipped_lines": 0,
"errors": false,
"error": ""
}
बल्क ऑपरेशन ने स्वचालित रूप से उत्पन्न एम्बेडिंग के साथ 3 दस्तावेज़ सफलतापूर्वक डाले।
JSON के माध्यम से सेमांटिक खोज (HTTP/JSON API उदाहरण)
प्राकृतिक भाषा की क्वेरियों के साथ /search
का उपयोग करें:
curl "http://localhost:9308/search" -H "Content-Type: application/json" \
-d '{
"table": "products",
"_source": ["title"],
"size": 5,
"knn": {
"field": "vector",
"query": "outdoor hiking adventure",
"k": 3
}
}'
उत्तर:
{
"took": 8,
"timed_out": false,
"hits": {
"total": 24,
"total_relation": "eq",
"hits": [
{
"_id": 18,
"_score": 1,
"_knn_dist": 0.75467718,
"_source": {
"title": "children's adventure book"
}
},
{
"_id": 1,
"_score": 1,
"_knn_dist": 0.83226496,
"_source": {
"title": "green hiking backpack"
}
},
{
"_id": 5,
"_score": 1,
"_knn_dist": 0.89348459,
"_source": {
"title": "mountain hiking bag"
}
},
{
"_id": 10,
"_score": 1,
"_knn_dist": 0.92611158,
"_source": {
"title": "compact hiking backpack"
}
},
{
"_id": 3,
"_score": 1,
"_knn_dist": 0.98721427,
"_source": {
"title": "travel daypack"
}
}
]
}
}
क्वेरी “आउटडोर हाइकिंग एडवेंचर” ने सबसे प्रासंगिक मिलान “बच्चों की एडवेंचर बुक” (0.754 दूरी) पाया, इसके बाद हाइकिंग से संबंधित बैकपैक। यह दिखाता है कि सेमांटिक खोज कैसे वैचारिक रूप से संबंधित वस्तुओं को ढूंढ सकती है जो केवल शाब्दिक कीवर्ड मेल से परे हैं।
JSON के माध्यम से फ़िल्टरिंग और हाइब्रिड खोज (HTTP/JSON API उदाहरण)
सेमांटिक खोज को पारंपरिक फ़िल्टर के साथ मिलाएं:
curl "http://localhost:9308/search" -H "Content-Type: application/json" \
-d '{
"table": "products",
"_source": ["title", "price"],
"size": 5,
"knn": {
"field": "vector",
"query": "technology electronic device",
"k": 5,
"filter": {
"range": {"price": {"gte": 15000}}
}
}
}'
उत्तर:
{
"took": 10,
"timed_out": false,
"hits": {
"total": 5,
"total_relation": "eq",
"hits": [
{
"_id": 24,
"_score": 1,
"_knn_dist": 1.31113040,
"_source": {
"title": "tablet computer",
"price": 49900
}
},
{
"_id": 23,
"_score": 1,
"_knn_dist": 1.56920886,
"_source": {
"title": "smartphone",
"price": 89900
}
},
{
"_id": 22,
"_score": 1,
"_knn_dist": 1.59042466,
"_source": {
"title": "gaming laptop",
"price": 159900
}
},
{
"_id": 16,
"_score": 1,
"_knn_dist": 1.84979212,
"_source": {
"title": "office chair",
"price": 27900
}
},
{
"_id": 21,
"_score": 1,
"_knn_dist": 1.88567829,
"_source": {
"title": "wireless headphones",
"price": 15900
}
}
]
}
}
“प्रौद्योगिकी इलेक्ट्रॉनिक डिवाइस” की खोज कीमत के फ़िल्टरिंग (≥$150) के साथ ने सही ढंग से इलेक्ट्रॉनिक्स आइटम को प्राथमिकता दी और कम कीमत वाले उत्पादों जैसे हाइकिंग बैकपैक और छोटे इलेक्ट्रॉनिक्स को बाहर कर दिया। ध्यान दें कि “tablet computer” शीर्ष स्थान पर है क्योंकि यह क्वेरी के प्रति मजबूत सेमांटिक मेल है।
सीधे वेक्टर बनाम ऑटो-एम्बेडेड टेक्स्ट क्वेरियां
HTTP/JSON API दोनों का समर्थन करता है:
- ऑटो-एम्बेडेड टेक्स्ट क्वेरियां:
"query": "outdoor hiking adventure"
(ऑटो-एम्बेडेड) - सीधे वेक्टर क्वेरियां:
"query": [0.1, 0.2, 0.3, ...]
(पूर्व-संगणित वेक्टर)
यह लचीलापन आपको एक ही एप्लिकेशन में स्वचालित रूप से उत्पन्न एम्बेडिंग को कस्टम वेक्टर के साथ मिलाने की अनुमति देता है।
OpenAI एकीकरण (OpenAI API उदाहरण)
बेहतर सेमांटिक समझ के लिए, आप OpenAI के एम्बेडिंग मॉडलों का उपयोग कर सकते हैं:
-- Create table with OpenAI embeddings
CREATE TABLE products_openai (
title TEXT,
description TEXT,
category string,
price INT,
vector FLOAT_VECTOR KNN_TYPE='hnsw' HNSW_SIMILARITY='l2'
MODEL_NAME='openai/text-embedding-ada-002'
FROM='title, description'
API_KEY='your-openai-api-key'
);
-- Insert data (embeddings generated via OpenAI API)
INSERT INTO products_openai(title, description, category, price) VALUES
('smartphone device', 'latest mobile technology with advanced features', 'electronics', 79900),
('laptop computer', 'portable workstation for developers and professionals', 'electronics', 129900);
-- Search with natural language
SELECT id, title, description, knn_dist()
FROM products_openai
WHERE knn(vector, 2, 'mobile phone technology');
परिणाम:
+---------------------+-------------------+-------------------------------------------------------+------------+
| id | title | description | knn_dist() |
+---------------------+-------------------+-------------------------------------------------------+------------+
| 2309215617435041807 | smartphone device | latest mobile technology with advanced features | 0.20333229 |
| 2309215617435041808 | laptop computer | portable workstation for developers and professionals | 0.40197325 |
+---------------------+-------------------+-------------------------------------------------------+------------+
OpenAI के मॉडल सूक्ष्म संबंधों को समझने में उत्कृष्ट हैं - “मोबाइल फोन तकनीक” ने स्मार्टफोन को लैपटॉप की तुलना में बहुत अधिक प्रासंगिक के रूप में सही ढंग से पहचाना।
उत्पादन के लिए निर्मित
- ⚡ तेज: HNSW अनुक्रमण, वैकल्पिक क्वांटाइजेशन, अनुकूलित भंडारण
- 🛡️ विश्वसनीय: कई मॉडल प्रदाताओं, खाली-वेक्टर प्रबंधन
- 🔧 लचीला: आप चुनते हैं कि किस क्षेत्र से एम्बेड करें
उपयोग के मामले
ऑटो एम्बेडिंग्स को बनाना आसान बनाते हैं:
- 🛍️ ई-कॉमर्स खोज: “वाटरप्रूफ हाइकिंग बूट्स” → प्रासंगिक उत्पादों को ढूंढता है
- 📚 दस्तावेज़ खोज: “डेटा गोपनीयता के बारे में अनुबंध” → कानूनी दस्तावेज़ों की सतह को उठाता है
- 🎵 सामग्री की सिफारिशें: “वर्कआउट के लिए उत्साही संगीत” → वाइब द्वारा मेल खाता है
- 🏠 रियल एस्टेट खोज: “पार्कों के करीब कोज़ी अपार्टमेंट” → जीवनशैली के अनुसार घरों को ढूंढता है
अधिक वास्तविक-विश्व उदाहरण
आइए अलग-अलग खोज परिदृश्यों में ऑटो एम्बेडिंग्स को कार्रवाई में देखें:
कार्य और उत्पादकता आइटम ढूंढना
SELECT id, title, description, price, knn_dist()
FROM products
WHERE knn(vector, 3, 'work productivity office')
LIMIT 3;
परिणाम:
+------+----------------------+----------------------------------------------------------+-------+------------+
| id | title | description | price | knn_dist() |
+------+----------------------+----------------------------------------------------------+-------+------------+
| 24 | tablet computer | Lightweight tablet for work and entertainment | 49900 | 1.306459 |
| 16 | office chair | Ergonomic office chair with lumbar support and mesh back | 27900 | 1.44871426 |
| 17 | notebook and pen set | Elegant A5 notebook with smooth-writing pen | 1200 | 1.48466742 |
+------+----------------------+----------------------------------------------------------+-------+------------+
खोज ने “कार्य उत्पादकता कार्यालय” को समझा और कार्यालय के फर्नीचर, स्टेशनरी, और कार्य-उपयुक्त गियर लौटाए।
स्मार्ट श्रेणी फ़िल्टरिंग
कभी-कभी सेमांटिक खोज बहुत व्यापक होती है। चलिए “आउटडोर कैंपिंग के लिए USB चार्जर” के लिए खोजते हैं:
SELECT id, title, description, price, knn_dist()
FROM products
WHERE knn(vector, 5, 'usb charger for outdoor camping');
शीर्ष परिणामों में कई आइटम शामिल हैं: सौर चार्जर (0.888), बाहरी पैक (1.139), ट्रेकिंग उपकरण (1.213), आदि।
लेकिन जब हम श्रेणी फ़िल्टरिंग जोड़ते हैं:
SELECT id, highlight()
FROM products
WHERE knn(vector, 5, 'usb charger for outdoor camping')
AND category = 'electronics'
AND MATCH('"usb charger for outdoor camping"/0.5')
LIMIT 3;
सटीक परिणाम:
+------+-------------------------------------------------------------------------------------------------------+
| id | highlight() |
+------+-------------------------------------------------------------------------------------------------------+
| 11 | portable solar <b>charger</b> | Foldable solar panel <b>charger for</b> phones and <b>USB</b> devices |
+------+-------------------------------------------------------------------------------------------------------+
नोट: highlight() मार्कअप (जैसे, <b>...</b>
) लौटाता है। तालिका में बोल्ड पढ़ने में आसानी के लिए है।
अर्थपूर्ण समझ + श्रेणी फ़िल्टरिंग + कीवर्ड मिलान के संयोजन ने हमें बिल्कुल वही दिया जो हम चाहते थे!
मजेदार और रचनात्मक आइटम ढूँढना
SELECT id, title, description, price, knn_dist()
FROM products
WHERE knn(vector, 3, 'fun creative play toys')
LIMIT 3;
परिणाम:
+------+---------------------------+----------------------------------------------------+-------+------------+
| id | title | description | price | knn_dist() |
+------+---------------------------+----------------------------------------------------+-------+------------+
| 8 | camping gear set | Complete set for weekend camping adventures | 12000 | 1.30462146 |
| 20 | wooden puzzle box | Challenging mechanical puzzle made of natural wood | 1899 | 1.305056 |
| 18 | children's adventure book | Illustrated storybook about outdoor exploration | 1299 | 1.47192979 |
+------+---------------------------+----------------------------------------------------+-------+------------+
ऑटो एंबेडिंग्स ने “मजेदार रचनात्मक खेल” के विचार को समझा और साहसिक उपकरण, पहेलियाँ, और बच्चों की पुस्तकें ढूंढीं—सभी आइटम जो रचनात्मकता और खेल से संबंधित हैं!
दृश्य के पीछे
ऑटो एंबेडिंग्स पर निर्भर करते हैं:
- वाक्य ट्रांसफार्मर अर्थपूर्ण समझ के लिए
- HNSW तेज समानता खोज के लिए
- स्मार्ट कैशिंग कुशल अनुमान के लिए
- बहु-प्रदाता APIs लचीलापन के लिए
आज ही कोशिश करें
जैसा कि आपने हमारे उदाहरणों से देखा है, ऑटो एंबेडिंग्स अद्भुत अर्थपूर्ण खोज की क्षमताएँ कम से कम सेटअप के साथ प्रदान करते हैं। चाहे आप बना रहे हों:
- ई-कॉमर्स प्लेटफ़ॉर्म स्वाभाविक भाषा उत्पाद खोज के साथ
- सामग्री प्रबंधन प्रणाली बुद्धिमान दस्तावेज़ खोज के साथ
- सिफारिश इंजन जो उपयोगकर्ता के इरादे को समझते हैं
- ज्ञान आधार अर्थपूर्ण प्रश्न उत्तर देने के साथ
ऑटो एंबेडिंग्स सबसे कठिन भाग को हटा देते हैं — एंबेडिंग्स का प्रबंधन — ताकि आप शानदार फ़ीचर्स बनाने पर ध्यान केंद्रित कर सकें जिन्हें उपयोगकर्ता पसंद करते हैं।
🚀 क्या आप अपने खोज अनुभव को बदलने के लिए तैयार हैं?
👉
Manticore Search डाउनलोड करें
और आज ही ऑटो एंबेडिंग्स के साथ निर्माण शुरू करें।
📚 विस्तृत मार्गदर्शिकाओं के लिए
KNN खोज दस्तावेज़ देखें
।
💬 अपने सफलता की कहानियों को साझा करने के लिए हमारे
Slack समुदाय
में शामिल हों।
कोई प्रश्न या प्रतिक्रिया? हमारे समुदाय फोरम में शामिल हों या हमें Twitter पर फॉलो करें।