रिडिसर्च वेक्टर सर्च सिंटैक्स त्रुटियों को डिबग करना
क्वेरी करते समय सिंटैक्स त्रुटि का सामना करना पड़ रहा है वेक्टर खोज और समय फ़िल्टर दोनों के साथ निराशा हो सकती है। यदि आप समानता और टाइमस्टैम्प के आधार पर परिणामों को फ़िल्टर करने का प्रयास कर रहे हैं, तो रिस्पॉन्स एरर: सिंटेक्स एरर एट ऑफसेट 50 निकट डेटटाइम त्रुटि आपको परेशान कर सकती है। 🧩
रिडिसर्च जटिल खोजों से निपटने के लिए शक्तिशाली है, विशेषकर इसके साथ क्षमताएं, जो इसे वेक्टर-आधारित समानता खोजों के लिए महान बनाती हैं। हालाँकि, अतिरिक्त फ़िल्टर जोड़ना—जैसे a -अप्रत्याशित वाक्यविन्यास त्रुटियों को जन्म दे सकता है। यह मार्गदर्शिका इस बात पर प्रकाश डालेगी कि समस्या का संभावित कारण क्या है और इसे कैसे हल किया जाए।
संरचित और असंरचित डेटा दोनों को संभालने के लिए RedisJSON को Redisearch के साथ एकीकृत करने वाले कई डेवलपर्स समान चुनौतियों का सामना करते हैं। Redisearch में सिंटैक्स सटीकता सुनिश्चित करना महत्वपूर्ण है, खासकर जब KNN और टाइमस्टैम्प जैसे फ़िल्टर का संयोजन होता है। सिंटैक्स और रेडिस बोलियों को समझने से जटिल क्वेरी के लिए रेडिसर्च की पूरी क्षमता को अनलॉक करने में मदद मिल सकती है।
इस लेख में, हम इस सामान्य रिडिसर्च समस्या का निवारण करेंगे, यह जानेंगे कि ऐसा क्यों होता है और समाधान पेश करेंगे। आइए सुनिश्चित करें कि टाइमस्टैम्प स्थितियों के साथ आपकी वेक्टर खोज सुचारू और सटीक रूप से चलती है। 🛠️
| आज्ञा | उपयोग और विवरण का उदाहरण | 
|---|---|
| client.ft("idx:myindex").search() | यह कमांड पूर्ण-पाठ और वेक्टर-आधारित खोज करने के लिए निर्दिष्ट इंडेक्स ("idx:myindex") पर एक रिडिसर्च क्वेरी शुरू करता है। यह Redisearch के भीतर क्वेरी करने के लिए केंद्रीय है और सटीक फ़िल्टरिंग के लिए संरचित खोज विकल्पों का समर्थन करता है। | 
| Query() | वेक्टर समानता और फ़िल्टरिंग स्थितियों सहित जटिल खोजों को संरचित करने के लिए Redisearch में एक क्वेरी ऑब्जेक्ट बनाता है। Redisearch के भीतर खोज प्रारूप और परिणाम क्रम को परिभाषित करने के लिए आवश्यक। | 
| KNN @vector $query_vector AS vector_score | वेक्टर समानता के आधार पर के-निकटतम पड़ोसियों (केएनएन) खोज करने के लिए एक रेडिसर्च-विशिष्ट कमांड पैटर्न, जहां "वेक्टर" फ़ील्ड है और "क्वेरी_वेक्टर" समानता रैंकिंग के लिए संदर्भ वेक्टर है। यह समानता के लिए मशीन लर्निंग मॉडल एकीकरण को सक्षम बनाता है। | 
| .sort_by("vector_score") | केएनएन खोज के आधार पर सबसे समान आइटम को प्राथमिकता देने के लिए निर्दिष्ट फ़ील्ड के अनुसार पुनः खोज परिणामों को क्रमबद्ध करता है - इस मामले में, "वेक्टर_स्कोर"। रैंकिंग परिणामों के लिए घटते समानता क्रम में महत्वपूर्ण। | 
| .return_fields() | निर्दिष्ट करता है कि खोज परिणामों में कौन से फ़ील्ड शामिल किए जाएं, केंद्रित और कुशल क्वेरी के लिए केवल प्रासंगिक डेटा जैसे "वेक्टर_स्कोर", "शीर्षक", और "दिनांक समय" लौटाने के लिए आउटपुट को अनुकूलित किया जाए। | 
| .dialect(2) | Redisearch में क्वेरी बोली को संस्करण 2 पर सेट करता है, जो वेक्टर और समय-आधारित स्थितियों के साथ जटिल फ़िल्टरिंग सहित उन्नत क्वेरी सिंटैक्स और सुविधाओं के उपयोग को सक्षम बनाता है। | 
| embedder.encode() | पाठ्य डेटा को एक संख्यात्मक वेक्टर प्रतिनिधित्व में एन्कोड करता है, इसे Redisearch के भीतर KNN समानता खोज के लिए तैयार करता है। आमतौर पर उन अनुप्रयोगों में उपयोग किया जाता है जहां प्राकृतिक भाषा प्रसंस्करण मॉडल खोज वैक्टर उत्पन्न करते हैं। | 
| np.array(query_vector, dtype=np.float32).tobytes() | क्वेरी वेक्टर को फ़्लोट32 प्रकार के NumPy सरणी में और फिर बाइट प्रारूप में परिवर्तित करता है, जिसे Redisearch को वेक्टर-आधारित खोजों को कुशलतापूर्वक संसाधित करने के लिए आवश्यक होता है। रेडिस डेटा प्रकारों के साथ संगतता सुनिश्चित करता है। | 
| client.pipeline() | कुशल नेटवर्क प्रदर्शन के लिए कई कमांड को एक साथ बैचने के लिए रेडिस पाइपलाइन शुरू करता है। उच्च-मात्रा वाली खोजों में उपयोगी, यह प्रतिक्रिया समय को कम करता है और सर्वर लोड को कम करता है। | 
| result.docs | Redisearch क्वेरी से लौटाए गए दस्तावेज़ों तक पहुँचता है, जिससे डेवलपर्स को कोड के भीतर प्रत्येक दस्तावेज़ को व्यक्तिगत रूप से संभालने की अनुमति मिलती है। खोज परिणामों को पुनः प्राप्त करने और स्वरूपित करने की कुंजी। | 
टाइमस्टैम्प फ़िल्टर के साथ रिडिसर्च वेक्टर क्वेरीज़ को समझना और कार्यान्वित करना
ऊपर दी गई उदाहरण स्क्रिप्ट डेवलपर्स को जटिल खोज निष्पादित करने में मदद करने के लिए डिज़ाइन की गई हैं RedisJSON के साथ, विशेष रूप से वेक्टर और टाइमस्टैम्प फ़ील्ड वाले डेटाबेस के लिए। इस सेटअप में, प्राथमिक लक्ष्य उन वस्तुओं को ढूंढना है जो न केवल वेक्टर निकटता के मामले में सबसे समान हैं बल्कि टाइमस्टैम्प रेंज द्वारा फ़िल्टर भी की गई हैं। इसके लिए K-निकटतम पड़ोसी (KNN) वेक्टर खोज और रेडिस टाइमस्टैम्प फ़िल्टर के संयोजन की आवश्यकता होती है। पहली स्क्रिप्ट एक क्वेरी सेट करती है जो एम्बेडिंग मॉडल द्वारा उत्पादित क्वेरी वेक्टर के साथ-साथ 'DateTime' फ़ील्ड का उपयोग करके एक निश्चित समय सीमा के भीतर शीर्ष 10 सबसे समान परिणामों की तलाश करती है। रिडिसर्च अत्यधिक अनुकूलित क्वेरी मापदंडों की अनुमति देता है, जो इसे मशीन लर्निंग अनुप्रयोगों के लिए आदर्श बनाता है जहां समानता और दिनांक फ़िल्टरिंग दोनों महत्वपूर्ण हैं, जैसे कि अनुशंसा प्रणाली में जहां परिणाम प्रासंगिक और हालिया दोनों होने की आवश्यकता होती है। 📅
इसे प्राप्त करने के लिए, स्क्रिप्ट विशिष्ट Redisearch कमांड पर बहुत अधिक निर्भर करती है। `क्वेरी` कमांड आवश्यक है, जो क्वेरी ऑब्जेक्ट बनाता है और हमें केएनएन और टाइमस्टैम्प रेंज जैसे विकल्पों के साथ जटिल फ़िल्टरिंग तर्क जोड़ने की अनुमति देता है। क्वेरी स्वयं समानता खोज करने के लिए वेक्टर फ़ील्ड का उपयोग करती है, जिसे `@DateTime` श्रेणी की स्थिति के साथ जोड़ा जाता है, जो परिणामों को एक विशिष्ट दिनांक विंडो में फ़िल्टर करता है। कमांड `sort_by` वेक्टर स्कोर के आधार पर परिणामों को व्यवस्थित करने में मदद करता है, यह सुनिश्चित करते हुए कि केवल सबसे प्रासंगिक दस्तावेज़ ही लौटाए जाते हैं। यह विशेष रूप से उन क्वेरीज़ को निष्पादित करते समय उपयोगी होता है जहां परिणामों को अनुकूलित मीट्रिक के अनुसार क्रमबद्ध करने की आवश्यकता होती है, जैसे समानता स्कोर, और अन्य विशेषताओं द्वारा फ़िल्टर किया जाता है। उदाहरण के लिए, यदि कोई उपयोगकर्ता "प्रौद्योगिकी पर नवीनतम लेख" खोज रहा है, तो केएनएन खोज विषय के आधार पर निकटतम लेख ढूंढती है, और टाइमस्टैम्प फ़िल्टर सुनिश्चित करता है कि ये लेख हाल के हैं। 🧠
दूसरा समाधान पाइपलाइन संरचना और त्रुटि प्रबंधन की शुरुआत करके इस अवधारणा को और आगे ले जाता है, जिससे यह उत्पादन के लिए और अधिक मजबूत हो जाता है। रेडिस बैच में पाइपलाइनें एक साथ कमांड करती हैं, जिससे प्रदर्शन में सुधार होता है और नेटवर्क विलंबता कम होती है, जो उच्च-मांग वाले सिस्टम में महत्वपूर्ण है। यह तकनीक तेजी से और लगातार क्वेरी निष्पादन की आवश्यकता वाले अनुप्रयोगों में मूल्यवान है, जैसे ऑनलाइन अनुशंसाएं या वास्तविक समय डेटा निगरानी। स्क्रिप्ट में, पाइपलाइन Redisearch कमांड को कुशलतापूर्वक निष्पादित करने के लिए समूहित करती है, जो नेटवर्क बाधाओं को रोकने में विशेष रूप से सहायक होती है। इसके अलावा, हमने ट्राई-एक्सेप्ट ब्लॉक के रूप में त्रुटि प्रबंधन को शामिल किया है, जिससे यह सुनिश्चित होता है कि अमान्य इनपुट या रेडिस कनेक्टिविटी समस्याओं के मामले में स्क्रिप्ट के क्रैश होने की संभावना कम है। ये सुधार वास्तविक दुनिया के परिदृश्यों में स्केलिंग के लिए इसे और अधिक व्यावहारिक बनाते हैं, जहां कुशल क्वेरी प्रबंधन और त्रुटि लचीलापन सर्वोपरि है।
अन्य महत्वपूर्ण आदेशों में `रिटर्न_फील्ड्स` शामिल है, जो लौटाए गए फ़ील्ड को सीमित करता है, केवल आवश्यक डेटा पुनर्प्राप्त करके प्रदर्शन को अनुकूलित करता है। अंत में, `डायलेक्ट(2)` कमांड क्वेरी बोली को संस्करण 2 पर सेट करता है, जो रिडिसर्च में उपयोग किए गए उन्नत सिंटैक्स के लिए आवश्यक है। यह एक ही क्वेरी स्टेटमेंट के भीतर वेक्टर समानता और जटिल फ़िल्टर जैसी उन्नत क्वेरी सुविधाओं की अनुमति देता है। साथ में, ये स्क्रिप्ट दर्शाती हैं कि परिष्कृत क्वेरी आवश्यकताओं को संभालने के लिए पायथन में रिडिसर्च का लाभ कैसे उठाया जा सकता है, खासकर जब टाइमस्टैम्प-संवेदनशील संदर्भ में वास्तविक समय की खोज और फ़िल्टरिंग के लिए मशीन लर्निंग मॉडल को एकीकृत किया जाता है। चाहे अनुशंसा इंजन या न्यूज़फ़ीड पर लागू किया जाए, वेक्टर और टाइमस्टैम्प डेटा के साथ रिडिसर्च का लचीलापन इसे उत्तरदायी, उच्च प्रदर्शन वाले अनुप्रयोगों के निर्माण के लिए एक उत्कृष्ट विकल्प बनाता है।
डेटटाइम फिल्टर के साथ रिडिसर्च वेक्टर सर्च की समस्या का निवारण
बैक-एंड क्वेरी के लिए RedisJSON और Redisearch के साथ Python का उपयोग करना
from redis.commands.search.query import Queryimport numpy as npfrom datetime import datetimefrom redis import Redis# Initialize Redis client connectionclient = Redis(host="localhost", port=6379, decode_responses=True)# Define function to perform vector search with timestamp filterdef vector_search_with_timestamp(client, query_text, vector_field, time_field,start_time, end_time, top_k=10):# Encode query text to vector formatquery_vector = embedder.encode(query_text)# Create Redisearch query with KNN and time conditionquery = (Query(f'*=>[KNN {top_k} @{vector_field} $query_vector AS vector_score] @{time_field}:[{start_time} {end_time}]').sort_by("vector_score").return_fields("vector_score", "title", time_field).dialect(2))# Run the search query on Redisearch indexresult = client.ft("idx:myindex").search(query,{"query_vector": np.array(query_vector, dtype=np.float32).tobytes()})return result.docs# Example usage of the functionquery_text = "Some text to search"start_time = 1696672140005end_time = 1696958220000results = vector_search_with_timestamp(client, query_text, "vector", "DateTime",start_time, end_time)# Output the resultsfor doc in results:print(f"Title: {doc.title}, Score: {doc.vector_score}, DateTime: {doc.DateTime}")
वैकल्पिक समाधान: मजबूती के लिए पाइपलाइन और त्रुटि प्रबंधन का उपयोग करना
रेडिस पाइपलाइनों और त्रुटि प्रबंधन का उपयोग करते हुए पायथन बैकएंड स्क्रिप्ट
import numpy as npfrom redis import Redisfrom redis.commands.search.query import Queryfrom datetime import datetime# Connect to Redis clientclient = Redis(host="localhost", port=6379, decode_responses=True)# Define a function for a pipelined search with error handlingdef robust_vector_search(client, query_text, vector_field, time_field,start_time, end_time, top_k=10):try:# Encode the queryquery_vector = embedder.encode(query_text)# Construct search query with KNN and date range filterquery = (Query(f'*=>[KNN {top_k} @{vector_field} $query_vector AS vector_score] @{time_field}:[{start_time} {end_time}]').sort_by("vector_score").return_fields("vector_score", "title", time_field).dialect(2))# Execute within a pipelinewith client.pipeline() as pipe:pipe.ft("idx:myindex").search(query, {"query_vector": np.array(query_vector, dtype=np.float32).tobytes()})results = pipe.execute()return results[0].docsexcept Exception as e:print(f"Error occurred: {e}")return None# Function call examplequery_text = "Another search text"start_time = 1696672140005end_time = 1696958220000docs = robust_vector_search(client, query_text, "vector", "DateTime", start_time, end_time)# Display resultsif docs:for doc in docs:print(f"Title: {doc.title}, Score: {doc.vector_score}, DateTime: {doc.DateTime}")else:print("No results found or error occurred")
डेटटाइम फ़िल्टर के साथ रिडिसर्च में वेक्टर खोज चुनौतियों का पता लगाना
साथ काम करने का एक महत्वपूर्ण पहलू इसमें वेक्टर समानता खोजों के साथ-साथ टाइमस्टैम्प-आधारित फ़िल्टर प्रबंधित करना शामिल है, विशेष रूप से RedisJSON डेटाबेस को एकीकृत करते समय। RedisJSON संरचित और अर्ध-संरचित डेटा को संभालने के लिए मजबूत समर्थन प्रदान करता है, लेकिन संयोजन करते समय चुनौतियाँ उत्पन्न हो सकती हैं दिनांक-आधारित फ़िल्टरिंग के साथ. त्रुटि "डेटटाइम के पास ऑफसेट 50 पर सिंटेक्स त्रुटि" अक्सर होती है क्योंकि Redisearch क्वेरीज़ सटीक सिंटैक्स की अपेक्षा करती हैं। जब कोई क्वेरी स्ट्रिंग बिल्कुल Redisearch की आवश्यकताओं के अनुसार स्वरूपित नहीं होती है - विशेष रूप से KNN खोज और दिनांक सीमा जैसी मिश्रित स्थितियों के लिए - त्रुटियाँ प्रगति को रोक सकती हैं।
एक संभावित समाधान इसके उपयोग की सावधानीपूर्वक समीक्षा करना है ऑब्जेक्ट और वेक्टर समानता और टाइमस्टैम्प जैसे फ़ील्ड कैसे व्यक्त किए जाते हैं। रिडिसर्च अलग-अलग क्वेरी व्यवहारों को अलग करने के लिए बोली संस्करणों का उपयोग करता है, इसलिए केएनएन और टाइमस्टैम्प से जुड़े मामलों के लिए, क्वेरी को सेट करना जरूरी है। सही बोली के बिना, Redisearch क्वेरी की गलत व्याख्या कर सकता है, जिससे वाक्यविन्यास त्रुटियाँ हो सकती हैं। और return_fields फ़ंक्शंस अतिरिक्त अनुकूलन की अनुमति देते हैं, लेकिन इन आदेशों को उपयोग में आने वाले विशिष्ट रेडिसर्च संस्करण के साथ संरेखित करने की आवश्यकता होती है।
ऐसी त्रुटियों से प्रभावी ढंग से निपटने के लिए, डेवलपर्स अक्सर पूर्ण डेटासेट पर लागू करने से पहले क्वेरी व्यवहार का निरीक्षण करने के लिए रिकॉर्ड के एक छोटे बैच में परीक्षण करते हैं। रेडिस के भीतर प्रश्नों का परीक्षण बैच कमांड की मदद कर सकता है और अधिक जटिल मल्टी-कमांड संरचनाओं को संभाल सकता है, दक्षता बढ़ा सकता है और नेटवर्क विलंबता को कम कर सकता है। की बारीकियों को समझकर और विशिष्ट डेटाबेस संस्करण में फिट होने के लिए कमांड को समायोजित करके, डेवलपर्स सामान्य सिंटैक्स समस्याओं को हल कर सकते हैं। यह ज्ञान उच्च-प्रदर्शन समानता-आधारित खोजों, जैसे अनुशंसा इंजन या लक्षित सामग्री वितरण प्रणाली पर निर्भर अनुप्रयोगों के लिए आवश्यक है। 🛠️
- रिडिसर्च का उपयोग किस लिए किया जाता है?
 - रिडिसर्च एक शक्तिशाली उपकरण है जिसका उपयोग पूर्ण-पाठ खोज अनुक्रमणिका बनाने, वेक्टर-आधारित समानता खोजों को संभालने और जटिल प्रश्नों का समर्थन करने के लिए किया जाता है। , जो इसे अनुशंसा इंजन जैसे अनुप्रयोगों के लिए आदर्श बनाता है।
 - मैं Redisearch में सिंटैक्स त्रुटियों का समाधान कैसे करूँ?
 - क्वेरी सिंटैक्स की जाँच करें, जिसमें यह भी शामिल है कि फ़ील्ड पसंद हैं या नहीं और सही ढंग से स्वरूपित हैं. की स्थापना Redisearch की आवश्यकताओं से मेल खाने वाला संस्करण भी त्रुटियों को हल करने में मदद कर सकता है।
 - क्या रिडिसर्च जटिल फ़िल्टरिंग को संभाल सकता है?
 - हाँ, Redisearch वेक्टर फ़ील्ड और टाइमस्टैम्प फ़िल्टर दोनों का उपयोग करके जटिल फ़िल्टरिंग की अनुमति देता है, जब तक कि सिंटैक्स का सावधानीपूर्वक पालन किया जाता है। उपयोग और सटीक नियंत्रण के लिए.
 - रिडिसर्च में डायलेक्ट कमांड क्यों आवश्यक है?
 - निर्दिष्ट करना (बोली 2 की तरह) यह सुनिश्चित करता है कि Redisearch क्वेरी सिंटैक्स की सटीक व्याख्या करता है, जो कि दिनांक सीमाओं के साथ KNN जैसे उन्नत फ़िल्टरिंग विकल्पों का उपयोग करते समय आवश्यक है।
 - पाइपलाइनें रिडिसर्च प्रदर्शन को कैसे सुधार सकती हैं?
 - का उपयोग करते हुए बैच एक साथ कमांड करते हैं, नेटवर्क विलंबता को कम करते हैं और अधिक कुशल डेटा क्वेरी की अनुमति देते हैं, विशेष रूप से उच्च-ट्रैफ़िक या वास्तविक समय अनुप्रयोगों में उपयोगी।
 - यदि Redisearch कोई परिणाम नहीं लौटाता तो मुझे क्या करना चाहिए?
 - जांचें कि क्वेरी फ़ील्ड और मान सटीक हैं, क्योंकि सिंटैक्स त्रुटियां या गलत कॉन्फ़िगर किए गए मान हैं या फ़ील्ड समस्या हो सकती है. परीक्षण प्रश्नों के साथ डिबगिंग से समस्या को कम करने में मदद मिलती है।
 - मैं रिडिसर्च क्वेरीज़ को कैसे डिबग कर सकता हूं?
 - छोटे प्रश्नों के साथ परीक्षण या रेडिस के सीएलआई का उपयोग करने से वाक्यविन्यास संबंधी समस्याएं सामने आ सकती हैं। जैसे अलग-अलग आदेशों को आज़माना उन्हें संयोजित करने से पहले एक और प्रभावी रणनीति है।
 - क्या Redisearch वास्तविक समय डेटा को संभाल सकता है?
 - हाँ, Redisearch वास्तविक समय के अनुप्रयोगों के लिए उपयुक्त है, खासकर जब इसे पाइपलाइन जैसी अनुकूलित क्वेरी और तकनीकों के साथ जोड़ा जाता है, जो लाइव डेटा खोजों के लिए प्रतिक्रिया समय को कम करता है।
 - RedisJSON और Redisearch के बीच क्या अंतर है?
 - RedisJSON JSON डेटा को संग्रहीत और प्रबंधित करने पर ध्यान केंद्रित करता है, जबकि Redisearch उन्नत खोज कार्यक्षमता प्रदान करता है। इन्हें संरचित और कुशल खोज-संचालित एप्लिकेशन बनाने के लिए जोड़ा जा सकता है।
 - क्या Redisearch बड़े डेटाबेस के लिए कुशल है?
 - रिडिसर्च कुशल है लेकिन क्वेरी अनुकूलन पर निर्भर करता है। पाइपलाइनों और कैशिंग का उपयोग करना, और परिणाम फ़ील्ड को सीमित करना बड़े डेटासेट पर प्रदर्शन में उल्लेखनीय सुधार कर सकता है।
 
Redisearch के साथ वेक्टर खोज शक्तिशाली है लेकिन इसके लिए सही सिंटैक्स की आवश्यकता होती है, खासकर जब इसे DateTime जैसे फ़िल्टर के साथ संयोजित किया जाता है। सही बोली सेट करने सहित, क्वेरी को उचित रूप से संरचित करने से त्रुटियों से बचने में बहुत अंतर आ सकता है। उदाहरण के लिए, यह सुनिश्चित करना कि वेक्टर फ़ील्ड और टाइमस्टैम्प फ़िल्टर सही ढंग से निर्दिष्ट हैं, सामान्य सिंटैक्स समस्याओं को रोका जा सकता है।
उच्च-प्रदर्शन खोज की आवश्यकता वाले किसी भी सिस्टम के लिए, सही ढंग से अनुकूलित होने पर रिडिसर्च उत्कृष्ट है। बैचों में परीक्षण, रेडिस पाइपलाइनों का उपयोग करना, और लौटाए गए फ़ील्ड का सावधानीपूर्वक चयन करना दक्षता को काफी बढ़ा सकता है। जैसे-जैसे आप स्केलेबल, सटीक खोज कार्यक्षमताओं का निर्माण करेंगे, ये सर्वोत्तम प्रथाएं एक सहज अनुभव प्रदान करेंगी। 🛠️
- Redisearch सिंटैक्स और कमांड की जानकारी आधिकारिक Redisearch दस्तावेज़ में पाई जा सकती है: पुनः खोज दस्तावेज़ीकरण .
 - RedisJSON के साथ वेक्टर खोज को एकीकृत करने पर विस्तृत मार्गदर्शन के लिए, संरचित डेटा प्रबंधन पर RedisJSON का अवलोकन देखें: RedisJSON दस्तावेज़ीकरण .
 - Redisarch में KNN क्वेरीज़ और फ़िल्टर को संभालने के लिए गहन उदाहरण और समाधान Redis सामुदायिक पृष्ठ पर उपलब्ध हैं: रेडिस समुदाय .