Skip to content

Commit 9f0c031

Browse files
authored
fix: improve memory footprint of recall (#423)
1 parent 8b1a465 commit 9f0c031

File tree

5 files changed

+20
-23
lines changed

5 files changed

+20
-23
lines changed

hindsight-api/hindsight_api/engine/search/graph_retrieval.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ async def _retrieve_with_conn(
162162
entry_points = await conn.fetch(
163163
f"""
164164
SELECT id, text, context, event_date, occurred_start, occurred_end,
165-
mentioned_at, embedding, fact_type, document_id, chunk_id, tags,
165+
mentioned_at, fact_type, document_id, chunk_id, tags,
166166
1 - (embedding <=> $1::vector) AS similarity
167167
FROM {fq_table("memory_units")}
168168
WHERE bank_id = $2
@@ -216,7 +216,7 @@ async def _retrieve_with_conn(
216216
neighbors = await conn.fetch(
217217
f"""
218218
SELECT mu.id, mu.text, mu.context, mu.occurred_start, mu.occurred_end,
219-
mu.mentioned_at, mu.embedding, mu.fact_type,
219+
mu.mentioned_at, mu.fact_type,
220220
mu.document_id, mu.chunk_id, mu.tags,
221221
ml.weight, ml.link_type, ml.from_unit_id
222222
FROM {fq_table("memory_links")} ml

hindsight-api/hindsight_api/engine/search/link_expansion_retrieval.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ async def _find_semantic_seeds(
4545
rows = await conn.fetch(
4646
f"""
4747
SELECT id, text, context, event_date, occurred_start, occurred_end,
48-
mentioned_at, embedding, fact_type, document_id, chunk_id, tags,
48+
mentioned_at, fact_type, document_id, chunk_id, tags,
4949
1 - (embedding <=> $1::vector) AS similarity
5050
FROM {fq_table("memory_units")}
5151
WHERE bank_id = $2
@@ -216,7 +216,7 @@ async def retrieve(
216216
-- Only exclude the actual seed observations
217217
SELECT
218218
mu.id, mu.text, mu.context, mu.event_date, mu.occurred_start,
219-
mu.occurred_end, mu.mentioned_at, mu.embedding,
219+
mu.occurred_end, mu.mentioned_at,
220220
mu.fact_type, mu.document_id, mu.chunk_id, mu.tags,
221221
COUNT(DISTINCT cs.source_id)::float AS score
222222
FROM all_connected_sources cs
@@ -239,7 +239,7 @@ async def retrieve(
239239
f"""
240240
SELECT
241241
mu.id, mu.text, mu.context, mu.event_date, mu.occurred_start,
242-
mu.occurred_end, mu.mentioned_at, mu.embedding,
242+
mu.occurred_end, mu.mentioned_at,
243243
mu.fact_type, mu.document_id, mu.chunk_id, mu.tags,
244244
COUNT(*)::float AS score
245245
FROM {fq_table("unit_entities")} seed_ue
@@ -264,7 +264,7 @@ async def retrieve(
264264
f"""
265265
SELECT DISTINCT ON (mu.id)
266266
mu.id, mu.text, mu.context, mu.event_date, mu.occurred_start,
267-
mu.occurred_end, mu.mentioned_at, mu.embedding,
267+
mu.occurred_end, mu.mentioned_at,
268268
mu.fact_type, mu.document_id, mu.chunk_id, mu.tags,
269269
ml.weight + 1.0 AS score
270270
FROM {fq_table("memory_links")} ml
@@ -291,7 +291,7 @@ async def retrieve(
291291
WITH outgoing AS (
292292
-- Links FROM seeds TO other facts
293293
SELECT mu.id, mu.text, mu.context, mu.event_date, mu.occurred_start,
294-
mu.occurred_end, mu.mentioned_at, mu.embedding,
294+
mu.occurred_end, mu.mentioned_at,
295295
mu.fact_type, mu.document_id, mu.chunk_id, mu.tags,
296296
ml.weight
297297
FROM {fq_table("memory_links")} ml
@@ -305,7 +305,7 @@ async def retrieve(
305305
incoming AS (
306306
-- Links FROM other facts TO seeds (reverse direction)
307307
SELECT mu.id, mu.text, mu.context, mu.event_date, mu.occurred_start,
308-
mu.occurred_end, mu.mentioned_at, mu.embedding,
308+
mu.occurred_end, mu.mentioned_at,
309309
mu.fact_type, mu.document_id, mu.chunk_id, mu.tags,
310310
ml.weight
311311
FROM {fq_table("memory_links")} ml
@@ -323,12 +323,12 @@ async def retrieve(
323323
)
324324
SELECT DISTINCT ON (id)
325325
id, text, context, event_date, occurred_start,
326-
occurred_end, mentioned_at, embedding,
326+
occurred_end, mentioned_at,
327327
fact_type, document_id, chunk_id, tags,
328328
(MAX(weight) * 0.5) AS score
329329
FROM combined
330330
GROUP BY id, text, context, event_date, occurred_start,
331-
occurred_end, mentioned_at, embedding,
331+
occurred_end, mentioned_at,
332332
fact_type, document_id, chunk_id, tags
333333
ORDER BY id, score DESC
334334
LIMIT $4

hindsight-api/hindsight_api/engine/search/mpfp_retrieval.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ async def fetch_memory_units_by_ids(
449449
rows = await conn.fetch(
450450
f"""
451451
SELECT id, text, context, event_date, occurred_start, occurred_end,
452-
mentioned_at, embedding, fact_type, document_id, chunk_id, tags
452+
mentioned_at, fact_type, document_id, chunk_id, tags
453453
FROM {fq_table("memory_units")}
454454
WHERE id = ANY($1::uuid[])
455455
AND fact_type = $2

hindsight-api/hindsight_api/engine/search/retrieval.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ async def retrieve_semantic_bm25_combined(
127127
results = await conn.fetch(
128128
f"""
129129
WITH semantic_ranked AS (
130-
SELECT id, text, context, event_date, occurred_start, occurred_end, mentioned_at, embedding, fact_type, document_id, chunk_id, tags,
130+
SELECT id, text, context, event_date, occurred_start, occurred_end, mentioned_at, fact_type, document_id, chunk_id, tags,
131131
1 - (embedding <=> $1::vector) AS similarity,
132132
NULL::float AS bm25_score,
133133
'semantic' AS source,
@@ -139,7 +139,7 @@ async def retrieve_semantic_bm25_combined(
139139
AND (1 - (embedding <=> $1::vector)) >= 0.3
140140
{tags_clause}
141141
)
142-
SELECT id, text, context, event_date, occurred_start, occurred_end, mentioned_at, embedding, fact_type, document_id, chunk_id, tags,
142+
SELECT id, text, context, event_date, occurred_start, occurred_end, mentioned_at, fact_type, document_id, chunk_id, tags,
143143
similarity, bm25_score, source
144144
FROM semantic_ranked
145145
WHERE rn <= $4
@@ -194,7 +194,7 @@ async def retrieve_semantic_bm25_combined(
194194
# Single query template with backend-specific parts injected
195195
query = f"""
196196
WITH semantic_ranked AS (
197-
SELECT id, text, context, event_date, occurred_start, occurred_end, mentioned_at, embedding, fact_type, document_id, chunk_id, tags,
197+
SELECT id, text, context, event_date, occurred_start, occurred_end, mentioned_at, fact_type, document_id, chunk_id, tags,
198198
1 - (embedding <=> $1::vector) AS similarity,
199199
NULL::float AS bm25_score,
200200
'semantic' AS source,
@@ -207,7 +207,7 @@ async def retrieve_semantic_bm25_combined(
207207
{tags_clause}
208208
),
209209
bm25_ranked AS (
210-
SELECT id, text, context, event_date, occurred_start, occurred_end, mentioned_at, embedding, fact_type, document_id, chunk_id, tags,
210+
SELECT id, text, context, event_date, occurred_start, occurred_end, mentioned_at, fact_type, document_id, chunk_id, tags,
211211
NULL::float AS similarity,
212212
{bm25_score_expr} AS bm25_score,
213213
'bm25' AS source,
@@ -219,12 +219,12 @@ async def retrieve_semantic_bm25_combined(
219219
{tags_clause}
220220
),
221221
semantic AS (
222-
SELECT id, text, context, event_date, occurred_start, occurred_end, mentioned_at, embedding, fact_type, document_id, chunk_id, tags,
222+
SELECT id, text, context, event_date, occurred_start, occurred_end, mentioned_at, fact_type, document_id, chunk_id, tags,
223223
similarity, bm25_score, source
224224
FROM semantic_ranked WHERE rn <= $4
225225
),
226226
bm25 AS (
227-
SELECT id, text, context, event_date, occurred_start, occurred_end, mentioned_at, embedding, fact_type, document_id, chunk_id, tags,
227+
SELECT id, text, context, event_date, occurred_start, occurred_end, mentioned_at, fact_type, document_id, chunk_id, tags,
228228
similarity, bm25_score, source
229229
FROM bm25_ranked WHERE rn <= $4
230230
)
@@ -301,7 +301,7 @@ async def retrieve_temporal_combined(
301301
entry_points = await conn.fetch(
302302
f"""
303303
WITH ranked_entries AS (
304-
SELECT id, text, context, event_date, occurred_start, occurred_end, mentioned_at, embedding, fact_type, document_id, chunk_id, tags,
304+
SELECT id, text, context, event_date, occurred_start, occurred_end, mentioned_at, fact_type, document_id, chunk_id, tags,
305305
1 - (embedding <=> $1::vector) AS similarity,
306306
ROW_NUMBER() OVER (PARTITION BY fact_type ORDER BY COALESCE(occurred_start, mentioned_at, occurred_end) DESC, embedding <=> $1::vector) AS rn
307307
FROM {fq_table("memory_units")}
@@ -321,7 +321,7 @@ async def retrieve_temporal_combined(
321321
AND (1 - (embedding <=> $1::vector)) >= $6
322322
{tags_clause}
323323
)
324-
SELECT id, text, context, event_date, occurred_start, occurred_end, mentioned_at, embedding, fact_type, document_id, chunk_id, tags, similarity
324+
SELECT id, text, context, event_date, occurred_start, occurred_end, mentioned_at, fact_type, document_id, chunk_id, tags, similarity
325325
FROM ranked_entries
326326
WHERE rn <= 10
327327
""",
@@ -401,7 +401,7 @@ async def retrieve_temporal_combined(
401401

402402
neighbors = await conn.fetch(
403403
f"""
404-
SELECT mu.id, mu.text, mu.context, mu.event_date, mu.occurred_start, mu.occurred_end, mu.mentioned_at, mu.embedding, mu.fact_type, mu.document_id, mu.chunk_id, mu.tags,
404+
SELECT mu.id, mu.text, mu.context, mu.event_date, mu.occurred_start, mu.occurred_end, mu.mentioned_at, mu.fact_type, mu.document_id, mu.chunk_id, mu.tags,
405405
ml.weight, ml.link_type, ml.from_unit_id,
406406
1 - (mu.embedding <=> $1::vector) AS similarity
407407
FROM {fq_table("memory_links")} ml

hindsight-api/hindsight_api/engine/search/types.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ class RetrievalResult:
4646
mentioned_at: datetime | None = None
4747
document_id: str | None = None
4848
chunk_id: str | None = None
49-
embedding: list[float] | None = None
5049
tags: list[str] | None = None # Visibility scope tags
5150

5251
# Retrieval-specific scores (only one will be set depending on retrieval method)
@@ -70,7 +69,6 @@ def from_db_row(cls, row: dict[str, Any]) -> "RetrievalResult":
7069
mentioned_at=row.get("mentioned_at"),
7170
document_id=row.get("document_id"),
7271
chunk_id=row.get("chunk_id"),
73-
embedding=row.get("embedding"),
7472
tags=row.get("tags"),
7573
similarity=row.get("similarity"),
7674
bm25_score=row.get("bm25_score"),
@@ -154,7 +152,6 @@ def to_dict(self) -> dict[str, Any]:
154152
"mentioned_at": self.retrieval.mentioned_at,
155153
"document_id": self.retrieval.document_id,
156154
"chunk_id": self.retrieval.chunk_id,
157-
"embedding": self.retrieval.embedding,
158155
"tags": self.retrieval.tags,
159156
"semantic_similarity": self.retrieval.similarity,
160157
"bm25_score": self.retrieval.bm25_score,

0 commit comments

Comments
 (0)