Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
587e5a7
feat: update memos headers
fridayL Nov 19, 2025
5637c9d
feat: headers add
fridayL Nov 19, 2025
68831c0
feat: update search agent
fridayL Nov 20, 2025
58c512d
feat: upadte mem story
fridayL Nov 21, 2025
a497d46
feat: update mem scehduler
fridayL Nov 21, 2025
bd72e9b
feat: update deepsearch mem code
fridayL Nov 21, 2025
91664dc
Merge branch 'dev_new' into feat/deep-search
fridayL Nov 22, 2025
f332ef2
feat: update deepsearch agent
fridayL Nov 22, 2025
c21fc58
feat: update test code
fridayL Nov 22, 2025
fca3776
Merge branch 'dev_new' into feat/deep-search
fridayL Nov 24, 2025
0f62af8
fix: remove dup config
fridayL Nov 24, 2025
5f0a97c
Merge branch 'dev' into feat/deep-search
fridayL Nov 24, 2025
dac3394
feat: dock search pipeline
fridayL Nov 25, 2025
f38115c
Merge branch 'feat/deep-search' of https://github.com/fridayL/MemOS i…
fridayL Nov 25, 2025
696692d
Merge branch 'dev_new' into feat/deep-search
fridayL Nov 25, 2025
9489d54
fix: code test
fridayL Nov 25, 2025
e43e5db
feat: add test scripts
fridayL Nov 25, 2025
ecd4508
feat: add test
fridayL Nov 25, 2025
6e21032
feat: update need_raw process
fridayL Nov 25, 2025
fac355d
Merge branch 'dev_new' into feat/deep-search
fridayL Nov 25, 2025
592f637
fix: add initter
fridayL Nov 25, 2025
df4a66f
Merge branch 'dev_new' into feat/deep-search
fridayL Nov 25, 2025
fbdd07a
Merge branch 'dev_new' into feat/deep-search
fridayL Nov 27, 2025
ad99745
fix: change agent search func name
fridayL Nov 27, 2025
e203755
Merge branch 'dev' into feat/deep-search
fridayL Nov 27, 2025
ca780ea
Merge branch 'dev_new' into feat/deep-search
fridayL Nov 27, 2025
1b67652
Merge branch 'feat/deep-search' of https://github.com/fridayL/MemOS i…
fridayL Nov 27, 2025
94dba83
feat: update logs and defined
fridayL Nov 28, 2025
64414ea
Merge branch 'dev' into feat/deep-search
fridayL Nov 28, 2025
34e9ea4
Merge branch 'dev_new' into feat/deep-search
fridayL Nov 28, 2025
f361d1f
Merge branch 'feat/deep-search' of https://github.com/fridayL/MemOS i…
fridayL Nov 28, 2025
b3acc98
Merge branch 'dev_new' into feat/deep-search
fridayL Dec 1, 2025
953872e
feat: update full text mem search
fridayL Dec 1, 2025
20438e9
Merge branch 'dev_new' into feat/deep-search
fridayL Dec 1, 2025
2591c10
feat: cp plugin to dev
fridayL Dec 1, 2025
4836670
Merge branch 'dev_new' into feat/deep-search
fridayL Dec 1, 2025
383eaaa
feat: add one recall for fulltext retrieval
fridayL Dec 1, 2025
502e15e
fix: set default for fulltext search
fridayL Dec 2, 2025
f33aa47
Merge branch 'dev_new' into feat/deep-search
fridayL Dec 2, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/memos/graph_dbs/polardb.py
Original file line number Diff line number Diff line change
Expand Up @@ -1553,7 +1553,7 @@ def search_by_fulltext(
"""

params = [tsquery_string, tsquery_string]

logger.info(f"[search_by_fulltext] query: {query}, params: {params}")
conn = self._get_connection()
try:
with conn.cursor() as cursor:
Expand Down
68 changes: 67 additions & 1 deletion src/memos/memories/textual/tree_text_memory/retrieve/recall.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,13 +101,27 @@ def retrieve(
user_name=user_name,
search_filter=id_filter,
)
if use_fast_graph:
future_fulltext = executor.submit(
self._fulltext_recall,
query_words=parsed_goal.keys or [],
memory_scope=memory_scope,
top_k=top_k,
search_filter=search_filter,
search_priority=search_priority,
user_name=user_name,
)

graph_results = future_graph.result()
vector_results = future_vector.result()
bm25_results = future_bm25.result() if self.use_bm25 else []
fulltext_results = future_fulltext.result() if use_fast_graph else []

# Merge and deduplicate by ID
combined = {item.id: item for item in graph_results + vector_results + bm25_results}
combined = {
item.id: item
for item in graph_results + vector_results + bm25_results + fulltext_results
}

return list(combined.values())

Expand Down Expand Up @@ -404,3 +418,55 @@ def _bm25_recall(
)

return [TextualMemoryItem.from_dict(n) for n in bm25_results]

def _fulltext_recall(
self,
query_words: list[str],
memory_scope: str,
top_k: int = 20,
max_num: int = 5,
status: str = "activated",
cube_name: str | None = None,
search_filter: dict | None = None,
search_priority: dict | None = None,
user_name: str | None = None,
):
"""Perform fulltext-based retrieval.
Args:
query_words: list of query words
memory_scope: memory scope
top_k: top k results
max_num: max number of query words
status: status
cube_name: cube name
search_filter: search filter
search_priority: search priority
user_name: user name
Returns:
list of TextualMemoryItem
"""
if not query_words:
return []
logger.info(f"[FULLTEXT] query_words: {query_words}")
all_hits = self.graph_store.search_by_fulltext(
query_words=query_words,
top_k=top_k,
status=status,
scope=memory_scope,
cube_name=cube_name,
search_filter=search_priority,
filter=search_filter,
user_name=user_name,
)
if not all_hits:
return []

# merge and deduplicate
unique_ids = {r["id"] for r in all_hits if r.get("id")}
node_dicts = (
self.graph_store.get_nodes(
list(unique_ids), include_embedding=False, cube_name=cube_name, user_name=user_name
)
or []
)
return [TextualMemoryItem.from_dict(n) for n in node_dicts]
Loading