मुख्य सामग्री पर जाएं
memory_search आपकी मेमोरी फ़ाइलों से प्रासंगिक नोट्स ढूंढता है, भले ही शब्दावली मूल टेक्स्ट से अलग हो। यह मेमोरी को छोटे चंक्स में इंडेक्स करके और उन्हें embeddings, कीवर्ड्स, या दोनों से खोजकर काम करता है.

तुरंत शुरू करें

मेमोरी खोज डिफ़ॉल्ट रूप से OpenAI embeddings का उपयोग करती है। किसी दूसरे embedding बैकएंड का उपयोग करने के लिए, एक प्रदाता स्पष्ट रूप से सेट करें:
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "openai", // or "gemini", "local", "ollama", "openai-compatible", etc.
      },
    },
  },
}
मेमोरी-विशिष्ट प्रदाताओं वाले मल्टी-एंडपॉइंट सेटअप के लिए, provider एक कस्टम models.providers.<id> एंट्री भी हो सकता है, जैसे ollama-5080, जब वह प्रदाता api: "ollama" या कोई दूसरा मेमोरी embedding adapter owner सेट करता है. बिना API कुंजी वाले local embeddings के लिए, @openclaw/llama-cpp-provider इंस्टॉल करें और provider: "local" सेट करें। सोर्स चेकआउट में अभी भी नेटिव बिल्ड स्वीकृति की आवश्यकता हो सकती है: pnpm approve-builds फिर pnpm rebuild node-llama-cpp. कुछ OpenAI-compatible embedding endpoints को खोजों के लिए input_type: "query" और indexed chunks के लिए input_type: "document" या "passage" जैसे asymmetric labels की आवश्यकता होती है। इन्हें memorySearch.queryInputType और memorySearch.documentInputType से कॉन्फ़िगर करें; मेमोरी कॉन्फ़िगरेशन संदर्भ देखें.

समर्थित प्रदाता

प्रदाताआईडीAPI कुंजी चाहिएनोट्स
BedrockbedrockनहींAWS credential chain का उपयोग करता है
DeepInfradeepinfraहाँडिफ़ॉल्ट: BAAI/bge-m3
Geminigeminiहाँimage/audio indexing का समर्थन करता है
GitHub Copilotgithub-copilotनहींCopilot subscription का उपयोग करता है
LocallocalनहींGGUF model, ~0.6 GB download
Mistralmistralहाँ
OllamaollamaनहींLocal/self-hosted
OpenAIopenaiहाँडिफ़ॉल्ट
OpenAI-compatibleopenai-compatibleआमतौर परGeneric /v1/embeddings
Voyagevoyageहाँ

खोज कैसे काम करती है

OpenClaw दो retrieval paths समानांतर में चलाता है और परिणामों को merge करता है:
  • वेक्टर खोज समान अर्थ वाले नोट्स ढूंढती है (“gateway host” का मिलान “the machine running OpenClaw” से होता है).
  • BM25 keyword search सटीक मिलान ढूंढती है (IDs, error strings, config keys).
अगर केवल एक path उपलब्ध है, तो दूसरा अकेले चलता है। जानबूझकर FTS-only mode (provider: "none") और automatic/default provider selection तब भी lexical ranking का उपयोग कर सकते हैं जब embeddings उपलब्ध न हों. स्पष्ट non-local embedding providers अलग हैं। अगर आप memorySearch.provider को किसी ठोस remote-backed provider पर सेट करते हैं और वह provider runtime पर उपलब्ध नहीं है, तो memory_search चुपचाप FTS-only results का उपयोग करने के बजाय मेमोरी को अनुपलब्ध बताता है। इससे टूटा हुआ configured semantic provider दिखता रहता है। जानबूझकर FTS-only recall के लिए provider: "none" सेट करें, या semantic ranking बहाल करने के लिए provider/auth configuration ठीक करें.

खोज गुणवत्ता बेहतर बनाना

जब आपके पास लंबा note history हो, तो दो वैकल्पिक सुविधाएँ मदद करती हैं:

Temporal decay

पुराने नोट्स धीरे-धीरे ranking weight खोते हैं ताकि हाल की जानकारी पहले सतह पर आए। 30 दिनों की डिफ़ॉल्ट half-life के साथ, पिछले महीने का नोट अपने मूल weight के 50% पर स्कोर करता है। MEMORY.md जैसी Evergreen files कभी decayed नहीं होतीं.
अगर आपके agent के पास महीनों के daily notes हैं और stale जानकारी हाल के context से ऊपर rank होती रहती है, तो temporal decay सक्षम करें.

MMR (विविधता)

दोहराव वाले results कम करता है। अगर पाँच नोट्स सभी उसी router config का उल्लेख करते हैं, तो MMR सुनिश्चित करता है कि top results दोहराने के बजाय अलग-अलग topics cover करें.
अगर memory_search अलग-अलग daily notes से लगभग duplicate snippets लौटाता रहता है, तो MMR सक्षम करें.

दोनों सक्षम करें

{
  agents: {
    defaults: {
      memorySearch: {
        query: {
          hybrid: {
            mmr: { enabled: true },
            temporalDecay: { enabled: true },
          },
        },
      },
    },
  },
}

Multimodal memory

Gemini Embedding 2 के साथ, आप Markdown के साथ images और audio files को index कर सकते हैं। Search queries टेक्स्ट ही रहती हैं, लेकिन वे visual और audio content से match करती हैं। setup के लिए मेमोरी कॉन्फ़िगरेशन संदर्भ देखें. आप वैकल्पिक रूप से session transcripts को index कर सकते हैं ताकि memory_search पहले की conversations याद कर सके। यह memorySearch.experimental.sessionMemory और sources: ["sessions"] के माध्यम से opt-in है; डिफ़ॉल्ट source list केवल memory है। experimental flag session transcript indexing सक्षम करता है, जबकि sources नियंत्रित करता है कि session chunks खोजे जाएँ या नहीं. Session hits tools.sessions.visibility का पालन करते हैं: डिफ़ॉल्ट tree setting केवल वर्तमान session और उससे spawned sessions को expose करती है। अलग DM session से किसी unrelated same-agent gateway-dispatched session को याद करने के लिए, visibility को जानबूझकर agent तक बढ़ाएँ. QMD का उपयोग करते समय, memory.qmd.sessions.enabled: true भी सेट करें ताकि transcripts QMD collection में export हों। विवरण के लिए कॉन्फ़िगरेशन संदर्भ देखें.

समस्या निवारण

कोई परिणाम नहीं? index जांचने के लिए openclaw memory status चलाएँ। अगर खाली है, तो openclaw memory index --force चलाएँ. केवल keyword matches? आपका embedding provider कॉन्फ़िगर नहीं हो सकता। जांचें openclaw memory status --deep. Local embeddings time out? ollama, lmstudio, और local डिफ़ॉल्ट रूप से लंबा inline batch timeout उपयोग करते हैं। अगर host बस धीमा है, तो agents.defaults.memorySearch.sync.embeddingBatchTimeoutSeconds सेट करें और openclaw memory index --force फिर से चलाएँ. CJK text नहीं मिला? FTS index को openclaw memory index --force से rebuild करें.

आगे पढ़ें

संबंधित