mdb-engine 0.2.3__py3-none-any.whl → 0.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mdb_engine/__init__.py +8 -1
- mdb_engine/auth/README.md +6 -0
- mdb_engine/auth/shared_middleware.py +330 -119
- mdb_engine/core/engine.py +417 -5
- mdb_engine/core/manifest.py +114 -0
- mdb_engine/embeddings/service.py +37 -8
- mdb_engine/memory/README.md +93 -2
- mdb_engine/memory/service.py +348 -1096
- mdb_engine/utils/__init__.py +3 -1
- mdb_engine/utils/mongo.py +117 -0
- {mdb_engine-0.2.3.dist-info → mdb_engine-0.3.0.dist-info}/METADATA +193 -14
- {mdb_engine-0.2.3.dist-info → mdb_engine-0.3.0.dist-info}/RECORD +16 -15
- {mdb_engine-0.2.3.dist-info → mdb_engine-0.3.0.dist-info}/WHEEL +1 -1
- {mdb_engine-0.2.3.dist-info → mdb_engine-0.3.0.dist-info}/entry_points.txt +0 -0
- {mdb_engine-0.2.3.dist-info → mdb_engine-0.3.0.dist-info}/licenses/LICENSE +0 -0
- {mdb_engine-0.2.3.dist-info → mdb_engine-0.3.0.dist-info}/top_level.txt +0 -0
mdb_engine/memory/README.md
CHANGED
|
@@ -10,6 +10,8 @@ Mem0.ai integration for intelligent memory management in MDB_ENGINE applications
|
|
|
10
10
|
- **Semantic Search**: Vector-based semantic memory search
|
|
11
11
|
- **Memory Inference**: Optional LLM-based memory inference and summarization
|
|
12
12
|
- **Graph Memory**: Optional graph-based memory relationships (requires graph store config)
|
|
13
|
+
- **Bucket Organization**: Built-in support for organizing memories into buckets (general, file, conversation, etc.)
|
|
14
|
+
- **Dual Storage**: Store both extracted facts AND raw content for richer context retrieval
|
|
13
15
|
|
|
14
16
|
## Installation
|
|
15
17
|
|
|
@@ -203,6 +205,92 @@ await memory_service.delete(memory_id="memory_123", user_id="user123")
|
|
|
203
205
|
await memory_service.delete_all(user_id="user123")
|
|
204
206
|
```
|
|
205
207
|
|
|
208
|
+
### Bucket Organization
|
|
209
|
+
|
|
210
|
+
Organize memories into buckets for better management:
|
|
211
|
+
|
|
212
|
+
```python
|
|
213
|
+
# Add memory to a bucket
|
|
214
|
+
memory = await memory_service.add(
|
|
215
|
+
messages=[{"role": "user", "content": "I love Python programming"}],
|
|
216
|
+
user_id="user123",
|
|
217
|
+
bucket_id="coding:user123",
|
|
218
|
+
bucket_type="general",
|
|
219
|
+
metadata={"category": "coding"}
|
|
220
|
+
)
|
|
221
|
+
|
|
222
|
+
# Get all buckets for a user
|
|
223
|
+
buckets = await memory_service.get_buckets(user_id="user123")
|
|
224
|
+
|
|
225
|
+
# Get only file buckets
|
|
226
|
+
file_buckets = await memory_service.get_buckets(
|
|
227
|
+
user_id="user123",
|
|
228
|
+
bucket_type="file"
|
|
229
|
+
)
|
|
230
|
+
|
|
231
|
+
# Get all memories in a specific bucket
|
|
232
|
+
bucket_memories = await memory_service.get_bucket_memories(
|
|
233
|
+
bucket_id="file:document.pdf:user123",
|
|
234
|
+
user_id="user123"
|
|
235
|
+
)
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Store Both Facts and Raw Content
|
|
239
|
+
|
|
240
|
+
Store extracted facts alongside raw content for richer context:
|
|
241
|
+
|
|
242
|
+
```python
|
|
243
|
+
# Store both extracted facts and raw content
|
|
244
|
+
facts, raw_memory_id = await memory_service.add_with_raw_content(
|
|
245
|
+
messages=[{"role": "user", "content": "Extract key facts from this document..."}],
|
|
246
|
+
raw_content="Full document text here...",
|
|
247
|
+
user_id="user123",
|
|
248
|
+
bucket_id="file:document.pdf:user123",
|
|
249
|
+
bucket_type="file",
|
|
250
|
+
infer=True # Extract facts
|
|
251
|
+
)
|
|
252
|
+
|
|
253
|
+
# Later, retrieve raw content when needed
|
|
254
|
+
raw_content = await memory_service.get_raw_content(
|
|
255
|
+
bucket_id="file:document.pdf:user123",
|
|
256
|
+
user_id="user123"
|
|
257
|
+
)
|
|
258
|
+
|
|
259
|
+
# Or include raw content when getting bucket memories
|
|
260
|
+
all_memories = await memory_service.get_bucket_memories(
|
|
261
|
+
bucket_id="file:document.pdf:user123",
|
|
262
|
+
user_id="user123",
|
|
263
|
+
include_raw_content=True
|
|
264
|
+
)
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### Bucket Types
|
|
268
|
+
|
|
269
|
+
Common bucket types:
|
|
270
|
+
- **`general`**: General purpose buckets (e.g., category-based)
|
|
271
|
+
- **`file`**: File-specific buckets (one per uploaded file)
|
|
272
|
+
- **`conversation`**: Conversation-specific buckets
|
|
273
|
+
- **`user`**: User-level buckets
|
|
274
|
+
|
|
275
|
+
```python
|
|
276
|
+
# General bucket (category-based)
|
|
277
|
+
await memory_service.add(
|
|
278
|
+
messages=[{"role": "user", "content": "I prefer dark mode"}],
|
|
279
|
+
user_id="user123",
|
|
280
|
+
bucket_id="preferences:user123",
|
|
281
|
+
bucket_type="general"
|
|
282
|
+
)
|
|
283
|
+
|
|
284
|
+
# File bucket
|
|
285
|
+
await memory_service.add(
|
|
286
|
+
messages=[{"role": "user", "content": "Document content..."}],
|
|
287
|
+
user_id="user123",
|
|
288
|
+
bucket_id="file:report.pdf:user123",
|
|
289
|
+
bucket_type="file",
|
|
290
|
+
metadata={"filename": "report.pdf"}
|
|
291
|
+
)
|
|
292
|
+
```
|
|
293
|
+
|
|
206
294
|
### Memory Inference
|
|
207
295
|
|
|
208
296
|
With `infer=True`, the service can generate insights and summaries:
|
|
@@ -241,8 +329,11 @@ Mem0MemoryService(
|
|
|
241
329
|
|
|
242
330
|
#### Methods
|
|
243
331
|
|
|
244
|
-
- `add(messages, user_id, metadata=None)` - Add single memory
|
|
245
|
-
- `
|
|
332
|
+
- `add(messages, user_id, metadata=None, bucket_id=None, bucket_type=None, store_raw_content=False, raw_content=None)` - Add single memory with optional bucket and raw content storage
|
|
333
|
+
- `add_with_raw_content(messages, raw_content, user_id, bucket_id=None, bucket_type=None)` - Store both extracted facts and raw content
|
|
334
|
+
- `get_buckets(user_id, bucket_type=None, limit=None)` - Get all buckets for a user
|
|
335
|
+
- `get_bucket_memories(bucket_id, user_id, include_raw_content=False, limit=None)` - Get all memories in a bucket
|
|
336
|
+
- `get_raw_content(bucket_id, user_id)` - Get raw content for a bucket
|
|
246
337
|
- `search(query, user_id, limit=10, filters=None)` - Search memories
|
|
247
338
|
- `get(memory_id, user_id)` - Get specific memory
|
|
248
339
|
- `get_all(user_id, filters=None)` - Get all memories for user
|