Skip to content

Commit 2777fae

Browse files
zcuderchen zhanggemini-code-assist[bot]
authored
bugfix: rag memleak with weakref (#294)
* fix rag memleak with weakref * Update api/rag.py Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --------- Co-authored-by: chen zhang <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
1 parent e4d0e6b commit 2777fae

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

api/rag.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import logging
2+
import weakref
23
import re
34
from dataclasses import dataclass
45
from typing import Any, List, Tuple, Dict
@@ -242,14 +243,17 @@ def __init__(self, provider="google", model=None, use_s3: bool = False): # noqa
242243
self.memory = Memory()
243244
self.embedder = get_embedder()
244245

246+
self_weakref = weakref.ref(self)
245247
# Patch: ensure query embedding is always single string for Ollama
246248
def single_string_embedder(query):
247249
# Accepts either a string or a list, always returns embedding for a single string
248250
if isinstance(query, list):
249251
if len(query) != 1:
250252
raise ValueError("Ollama embedder only supports a single string")
251253
query = query[0]
252-
return self.embedder(input=query)
254+
instance = self_weakref()
255+
assert instance is not None, "RAG instance is no longer available, but the query embedder was called."
256+
return instance.embedder(input=query)
253257

254258
# Use single string embedder for Ollama, regular embedder for others
255259
self.query_embedder = single_string_embedder if self.is_ollama_embedder else self.embedder

0 commit comments

Comments
 (0)