Co oferuje
- Wyszukiwanie słów kluczowych za pomocą pełnotekstowego indeksowania FTS5 (punktacja BM25).
- Wyszukiwanie wektorowe za pomocą embeddingów od dowolnego obsługiwanego dostawcy.
- Wyszukiwanie hybrydowe, które łączy obie metody w celu uzyskania najlepszych wyników.
- Obsługę języków CJK za pomocą tokenizacji trigramowej dla języka chińskiego, japońskiego i koreańskiego.
- Przyspieszenie sqlite-vec dla zapytań wektorowych wykonywanych w bazie danych (opcjonalnie).
Pierwsze kroki
Domyślnie wbudowany silnik używa embeddingów OpenAI. JeśliOPENAI_API_KEY lub
models.providers.openai.apiKey jest już skonfigurowany, wyszukiwanie wektorowe
działa bez dodatkowej konfiguracji pamięci.
Aby jawnie ustawić dostawcę:
local.modelPath na plik GGUF:
Obsługiwani dostawcy embeddingów
Ustaw
memorySearch.provider, aby zmienić dostawcę z OpenAI na innego.
Jak działa indeksowanie
OpenClaw indeksuje plikiMEMORY.md i memory/*.md w segmentach (domyślnie
po 400 tokenów z nakładaniem się 80 tokenów) i przechowuje je w bazie danych
SQLite przypisanej do agenta.
- Lokalizacja indeksu: baza danych agenta będącego właścicielem:
~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite - Konserwacja pamięci: rozmiar plików pomocniczych SQLite WAL jest ograniczany za pomocą okresowych punktów kontrolnych oraz punktów kontrolnych przy zamykaniu.
- Monitorowanie plików: zmiany w plikach pamięci wyzwalają ponowne indeksowanie z eliminacją drgań (domyślnie 1,5 s).
- Automatyczne ponowne indeksowanie: indeks jest automatycznie przebudowywany po zmianie dostawcy embeddingów, modelu, konfiguracji segmentowania, skonfigurowanych źródeł lub zakresu.
- Ponowne indeksowanie na żądanie:
openclaw memory index --force
Możesz również indeksować pliki Markdown spoza przestrzeni roboczej za pomocą
memorySearch.extraPaths. Zobacz
dokumentację konfiguracji.Kiedy używać
Wbudowany silnik jest właściwym wyborem dla większości użytkowników:- Działa od razu, bez dodatkowych zależności.
- Dobrze obsługuje wyszukiwanie słów kluczowych i wektorowe.
- Obsługuje wszystkich dostawców embeddingów.
- Wyszukiwanie hybrydowe łączy zalety obu metod pobierania informacji.
Rozwiązywanie problemów
Wyszukiwanie pamięci jest wyłączone? Sprawdźopenclaw memory status. Jeśli
nie wykryto dostawcy, ustaw go jawnie lub dodaj klucz API.
Nie wykryto lokalnego dostawcy? Upewnij się, że lokalna ścieżka istnieje, i uruchom:
local. Ustaw memorySearch.provider: "local", jeśli chcesz używać
lokalnych embeddingów.
Nieaktualne wyniki? Uruchom openclaw memory index --force, aby przebudować
indeks. W rzadkich przypadkach brzegowych mechanizm monitorowania może nie
wykryć zmian.
sqlite-vec nie jest ładowany? OpenClaw automatycznie przełącza się na
obliczanie podobieństwa cosinusowego w procesie. Polecenie
openclaw memory status --deep raportuje lokalny magazyn wektorów oddzielnie
od dostawcy embeddingów, dlatego Vector store: unavailable wskazuje na problem z ładowaniem sqlite-vec, natomiast Embeddings: unavailable
wskazuje na problem z dostawcą lub uwierzytelnianiem albo brak gotowości modelu.
Sprawdź dzienniki pod kątem konkretnego błędu ładowania.