[memory/RAG] Duplicated _embed() logic in MemoryVectorStore and VectorRAG with subtle differences #760

Closed
opened 2026-06-03 00:21:13 +02:00 by sleepy · 0 comments
Owner

"Files: src/rag_vector.py and services/memory/memory_vector.py Both VectorRAG._embed() and MemoryVectorStore._embed() implement embedding logic: python # rag_vector.py line 72 vecs = self._model.encode(texts, normalize_embeddings=True) return np.array(vecs, dtype=np.float32).tolist() # memory_vector.py line 56 vecs = self._model.encode(texts, normalize_embeddings=True) return vecs.tolist() Subtle difference: rag_vector.py converts through numpy first (which may already be a numpy array from the encoder), while memory_vector.py calls .tolist() directly. If the encoder returns an ndarray, both work, but if it returns something else, the behavior diverges. Action: Extract embedding into a shared utility or make MemoryVectorStore accept the same embedding client that VectorRAG uses. Both already use get_embedding_client() from src/embeddings.py but instantiate it independently."

"**Files**: `src/rag_vector.py` and `services/memory/memory_vector.py` Both `VectorRAG._embed()` and `MemoryVectorStore._embed()` implement embedding logic: ```python # rag_vector.py line 72 vecs = self._model.encode(texts, normalize_embeddings=True) return np.array(vecs, dtype=np.float32).tolist() # memory_vector.py line 56 vecs = self._model.encode(texts, normalize_embeddings=True) return vecs.tolist() ``` Subtle difference: `rag_vector.py` converts through numpy first (which may already be a numpy array from the encoder), while `memory_vector.py` calls `.tolist()` directly. If the encoder returns an ndarray, both work, but if it returns something else, the behavior diverges. **Action**: Extract embedding into a shared utility or make `MemoryVectorStore` accept the same embedding client that `VectorRAG` uses. Both already use `get_embedding_client()` from `src/embeddings.py` but instantiate it independently."
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sleepy/odysseus#760
No description provided.