|
|
@ -783,6 +783,7 @@ class MemoryManager: |
|
|
results = [] |
|
|
results = [] |
|
|
try: |
|
|
try: |
|
|
async with self.db_factory() as db: |
|
|
async with self.db_factory() as db: |
|
|
|
|
|
flow_filter = "AND (flow_id = :fid OR flow_id IS NULL)" if fid else "" |
|
|
if embedding and len(embedding) > 0: |
|
|
if embedding and len(embedding) > 0: |
|
|
emb_str = "[" + ",".join(str(v) for v in embedding) + "]" |
|
|
emb_str = "[" + ",".join(str(v) for v in embedding) + "]" |
|
|
vector_results = await db.execute( |
|
|
vector_results = await db.execute( |
|
|
@ -791,7 +792,7 @@ class MemoryManager: |
|
|
(1.0 - (embedding <=> :emb::vector)) AS similarity |
|
|
(1.0 - (embedding <=> :emb::vector)) AS similarity |
|
|
FROM memory_atoms |
|
|
FROM memory_atoms |
|
|
WHERE user_id = :uid |
|
|
WHERE user_id = :uid |
|
|
{"""AND (flow_id = :fid OR flow_id IS NULL)""" if fid else ""} |
|
|
{flow_filter} |
|
|
AND embedding IS NOT NULL |
|
|
AND embedding IS NOT NULL |
|
|
ORDER BY embedding <=> :emb::vector |
|
|
ORDER BY embedding <=> :emb::vector |
|
|
LIMIT :limit |
|
|
LIMIT :limit |
|
|
@ -811,7 +812,7 @@ class MemoryManager: |
|
|
ts_rank(content_tsv, plainto_tsquery('simple', :query)) AS text_score |
|
|
ts_rank(content_tsv, plainto_tsquery('simple', :query)) AS text_score |
|
|
FROM memory_atoms |
|
|
FROM memory_atoms |
|
|
WHERE user_id = :uid |
|
|
WHERE user_id = :uid |
|
|
{"""AND (flow_id = :fid OR flow_id IS NULL)""" if fid else ""} |
|
|
{flow_filter} |
|
|
AND content_tsv @@ plainto_tsquery('simple', :query) |
|
|
AND content_tsv @@ plainto_tsquery('simple', :query) |
|
|
ORDER BY text_score DESC |
|
|
ORDER BY text_score DESC |
|
|
LIMIT :limit |
|
|
LIMIT :limit |
|
|
|