Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
e2d763e
feat: Add native hybird search (#197)
Evenss Jan 27, 2026
4c0eae7
feat: User Profile Support native language output (#198)
Evenss Jan 27, 2026
2be7d4f
Reconstruct LLM setting (#200)
Evenss Jan 28, 2026
fafcf64
refactor: unify configuration governance for agent, core, and server …
Teingi Feb 2, 2026
282f527
Reconstruct setting in Rerank,Vector,Graph (#202)
Evenss Feb 2, 2026
5711e22
oceanbase native language case (#220)
Ripcord55 Feb 3, 2026
05fd244
Oceanbase Native Hybrid Search Cases (#223)
Ripcord55 Feb 3, 2026
d2b4d12
Optimise searching in Intelligent mode And fix SILICONFLOW_LLM_BASE_U…
Evenss Feb 3, 2026
d6a5fdc
Merge branch '0.5.0_dev' into main
Evenss Feb 4, 2026
85fd3bd
add enable_native_hybrid in benchmark
Evenss Feb 4, 2026
e028e18
Enhance configuration management for OceanBase in config_loader.py
Evenss Feb 4, 2026
206c500
disable env file
Evenss Feb 4, 2026
408c967
Fix unit test issues caused by setting changes (#228)
Evenss Feb 4, 2026
6ae1a65
Merge branch 'oceanbase:0.5.0_dev' into 0.5.0_dev
Evenss Feb 4, 2026
f3fdc53
Merge branch '0.5.0_dev' into main
Evenss Feb 4, 2026
3efbe47
Fixed run failure caused by incorrect folder name
Evenss Feb 4, 2026
5fa2d29
Fixed run failure caused by incorrect folder name (#229)
Evenss Feb 4, 2026
51bc88e
Merge branch 'oceanbase:0.5.0_dev' into 0.5.0_dev
Evenss Feb 4, 2026
4a23495
Merge branch '0.5.0_dev' into main
Evenss Feb 4, 2026
46c8a69
Merge branch 'oceanbase:main' into main
Evenss Feb 5, 2026
0064ba5
Merge branch 'oceanbase:main' into main
Evenss Feb 6, 2026
e8162c1
Merge branch 'oceanbase:main' into main
Evenss Feb 9, 2026
72770e3
Merge branch 'oceanbase:main' into main
Evenss Feb 11, 2026
501a648
feat: Enhance rerank configuration and integration
Evenss Feb 12, 2026
b182b42
Merge branch 'oceanbase:main' into main
Evenss Feb 12, 2026
5123760
adjust version
Evenss Feb 12, 2026
475b323
add rerank setting in OceanBaseConfig
Evenss Feb 12, 2026
3bc623a
Merge branch 'oceanbase:main' into main
Evenss Feb 12, 2026
fa0121b
Merge branch 'oceanbase:main' into main
Evenss Feb 12, 2026
f01ab41
Merge branch 'oceanbase:main' into main
Evenss Feb 26, 2026
891e9cd
Merge branch 'oceanbase:main' into main
Evenss Feb 26, 2026
0f0bae5
Merge branch 'oceanbase:main' into main
Evenss Feb 26, 2026
fee9084
Merge branch 'oceanbase:main' into main
Evenss Mar 3, 2026
5b2df0a
Merge branch 'oceanbase:main' into main
Evenss Mar 4, 2026
67dd70f
Merge branch 'oceanbase:main' into main
Evenss Mar 9, 2026
f0f33b5
Merge branch 'oceanbase:main' into main
Evenss Mar 11, 2026
6d4c4d0
Merge branch 'oceanbase:main' into main
Evenss Mar 12, 2026
97565c2
Merge branch 'oceanbase:main' into main
Evenss Mar 13, 2026
d1dda5f
Merge branch 'oceanbase:main' into main
Evenss Mar 16, 2026
4bca6a9
Merge branch 'oceanbase:main' into main
Evenss Mar 18, 2026
c92f182
Merge branch 'oceanbase:main' into main
Evenss Mar 30, 2026
9e1c6d5
Enhance OceanBase configuration for embedded SeekDB support
Evenss Mar 30, 2026
9229dbb
Add ensure_embedded_database_exists utility method and update OceanBa…
Evenss Mar 30, 2026
62adb18
Update Python version requirements to 3.11 across project files
Evenss Mar 30, 2026
3edb4c0
Update database provider in .env.example from sqlite to oceanbase
Evenss Mar 31, 2026
5cea192
Update OceanBase index type to HNSW and enhance handling for embedded…
Evenss Mar 31, 2026
7a69de6
fix query bug
Evenss Apr 1, 2026
4f984cb
Enhance memory update and delete operations for embedded SeekDB support
Evenss Apr 1, 2026
5ee21eb
Add limitation note for AsyncMemory with embedded SeekDB
Evenss Apr 1, 2026
f7a966e
add pyseekdb dependents
Evenss Apr 1, 2026
40addf5
Refactor update method in OceanBaseVectorStore to improve payload mer…
Evenss Apr 1, 2026
f6ac125
Update version to 1.0.3 in project files
Evenss Apr 1, 2026
06d0b5e
Implement service singletons and error handling in FastAPI application
Evenss Apr 1, 2026
139640a
Update version to 1.1.0 across project files
Evenss Apr 2, 2026
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
8 changes: 5 additions & 3 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ TIMEZONE=Asia/Shanghai
# 1. Database Configuration (Required)
# =============================================================================
# Choose your database provider: sqlite, oceanbase, postgres
DATABASE_PROVIDER=sqlite
DATABASE_PROVIDER=oceanbase

# -----------------------------------------------------------------------------
# SQLite Configuration (Default - Recommended for development)
Expand All @@ -27,15 +27,17 @@ SQLITE_COLLECTION=memories
# -----------------------------------------------------------------------------
# OceanBase Configuration
# -----------------------------------------------------------------------------
OCEANBASE_HOST=127.0.0.1
# Connection mode: set OCEANBASE_HOST for remote, leave empty for embedded SeekDB
OCEANBASE_HOST=
OCEANBASE_PATH=./seekdb_data
OCEANBASE_PORT=2881
OCEANBASE_USER=root@sys
OCEANBASE_PASSWORD=your_password
OCEANBASE_DATABASE=powermem
OCEANBASE_COLLECTION=memories

## Keep the default settings, as modifications are generally not needed.
OCEANBASE_INDEX_TYPE=IVF_FLAT
OCEANBASE_INDEX_TYPE=HNSW
OCEANBASE_VECTOR_METRIC_TYPE=cosine
OCEANBASE_TEXT_FIELD=document
OCEANBASE_VECTOR_FIELD=embedding
Expand Down
5 changes: 2 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,9 @@ on:
python_version:
description: 'Python version to build with'
required: false
default: '3.10'
default: '3.11'
type: choice
options:
- '3.10'
- '3.11'
- '3.12'

Expand Down Expand Up @@ -53,7 +52,7 @@ jobs:
needs: build-dashboard
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12"]
python-version: ["3.11", "3.12"]
fail-fast: false

steps:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
python-version: "3.11"

- name: Inject Frontend and Build Package
run: |
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/regression.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' || (github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name == github.repository)
strategy:
matrix:
python-version: ["3.10"]
python-version: ["3.11"]
fail-fast: false

steps:
Expand Down Expand Up @@ -174,7 +174,7 @@ jobs:
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' || (github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name == github.repository)
strategy:
matrix:
python-version: ["3.10"]
python-version: ["3.11"]
fail-fast: false

steps:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12"]
python-version: ["3.11", "3.12"]
fail-fast: false

steps:
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ One command to add PowerMem memory to OpenClaw: `openclaw plugins install memory
<a href="https://github.com/oceanbase/powermem/blob/master/LICENSE">
<img alt="license" src="https://img.shields.io/badge/license-Apache%202.0-green.svg" />
</a>
<a href="https://img.shields.io/badge/python%20-3.10.0%2B-blue.svg">
<img alt="pyversions" src="https://img.shields.io/badge/python%20-3.10.0%2B-blue.svg" />
<a href="https://img.shields.io/badge/python%20-3.11.0%2B-blue.svg">
<img alt="pyversions" src="https://img.shields.io/badge/python%20-3.11.0%2B-blue.svg" />
</a>
<a href="https://deepwiki.com/oceanbase/powermem">
<img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg" />
Expand Down
4 changes: 2 additions & 2 deletions README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
<a href="https://github.com/oceanbase/powermem/blob/master/LICENSE">
<img alt="license" src="https://img.shields.io/badge/license-Apache%202.0-green.svg" />
</a>
<a href="https://img.shields.io/badge/python%20-3.10.0%2B-blue.svg">
<img alt="pyversions" src="https://img.shields.io/badge/python%20-3.10.0%2B-blue.svg" />
<a href="https://img.shields.io/badge/python%20-3.11.0%2B-blue.svg">
<img alt="pyversions" src="https://img.shields.io/badge/python%20-3.11.0%2B-blue.svg" />
</a>
<a href="https://deepwiki.com/oceanbase/powermem">
<img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg" />
Expand Down
4 changes: 2 additions & 2 deletions README_JP.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
<a href="https://github.com/oceanbase/powermem/blob/master/LICENSE">
<img alt="license" src="https://img.shields.io/badge/license-Apache%202.0-green.svg" />
</a>
<a href="https://img.shields.io/badge/python%20-3.10.0%2B-blue.svg">
<img alt="pyversions" src="https://img.shields.io/badge/python%20-3.10.0%2B-blue.svg" />
<a href="https://img.shields.io/badge/python%20-3.11.0%2B-blue.svg">
<img alt="pyversions" src="https://img.shields.io/badge/python%20-3.11.0%2B-blue.svg" />
</a>
<a href="https://deepwiki.com/oceanbase/powermem">
<img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg" />
Expand Down
2 changes: 1 addition & 1 deletion benchmark/server/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ def create(self, *args: Any, **kwargs: Any) -> Any:
app = FastAPI(
title="PowerMem Benchmark REST APIs",
description="A REST API for managing and searching memories for benchmark testing scenarios.",
version="1.0.0",
version="1.1.0",
docs_url="/docs",
redoc_url="/redoc",
)
Expand Down
20 changes: 20 additions & 0 deletions docs/api/0002-async_memory.md
Original file line number Diff line number Diff line change
Expand Up @@ -263,16 +263,36 @@ async def batch_process():
asyncio.run(batch_process())
```

### Limitation: Embedded SeekDB Does Not Support Async

Embedded SeekDB (local file mode with no `host` configured) uses a single-threaded C++ engine that **does not support concurrent multi-threaded access**. `AsyncMemory` internally submits synchronous operations to a `ThreadPoolExecutor`, which causes multiple threads to read and write the same embedded SeekDB instance simultaneously. This leads to C++-level crashes such as `pure virtual method called` or `Segmentation fault`.

**`AsyncMemory` cannot be used with embedded SeekDB.** Use the synchronous `Memory` class instead.

```python
# ❌ Not supported with embedded SeekDB
from powermem import AsyncMemory
async_memory = AsyncMemory(config=embedded_seekdb_config) # crashes

# ✓ Use the synchronous interface with embedded SeekDB
from powermem import Memory
memory = Memory(config=embedded_seekdb_config)
```

Remote OceanBase (with `host` configured) is not affected by this limitation and fully supports `AsyncMemory`.

### When to Use AsyncMemory

Use `AsyncMemory` when:
- Processing many memories concurrently
- Building async web applications (FastAPI, aiohttp)
- Implementing batch processing pipelines
- Need non-blocking memory operations
- Using **remote OceanBase** (with `host` configured)

Use `Memory` when:
- Simple synchronous scripts
- Interactive notebooks
- Simple use cases without concurrency needs
- Using **embedded SeekDB** (local file mode, no `host`)

4 changes: 2 additions & 2 deletions docs/benchmark/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ bash run.sh results

### Prerequisites

- Python 3.10 or higher
- Python 3.11 or higher
- pip or poetry for dependency management
- LLM and embedding API keys (OpenAI, Qwen, etc. — see root `.env.example`)
- Database: OceanBase, PostgreSQL, or SQLite (depending on your configuration)
Expand Down Expand Up @@ -398,7 +398,7 @@ The benchmark evaluates performance using multiple metrics:
- **Solution**:
- Install all dependencies: `pip install -r benchmark/locomo/requirements.txt`
- Ensure you're running from the correct directory
- Check Python version (requires 3.10+)
- Check Python version (requires 3.11+)

#### Slow performance
- **Solution**:
Expand Down
2 changes: 1 addition & 1 deletion docs/development/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ This guide provides comprehensive instructions for developers who want to contri

### Prerequisites

- Python 3.10 or higher
- Python 3.11 or higher
- pip (Python package manager)
- Git

Expand Down
2 changes: 1 addition & 1 deletion docs/examples/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ Each notebook includes:

## Requirements

- Python 3.10+
- Python 3.11+
- powermem installed (`pip install powermem`)
- Jupyter Notebook (for interactive notebooks)
- LLM provider configured (for intelligent features in Scenario 2+)
2 changes: 1 addition & 1 deletion docs/examples/scenario_10_sparse_vector.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"\n",
"## Prerequisites\n",
"\n",
"- Python 3.10+\n",
"- Python 3.11+\n",
"- powermem installed (`pip install powermem`)\n",
"- Database: **seekdb** or **OceanBase >= 4.5.0**\n"
]
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/scenario_10_sparse_vector.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This example demonstrates how to use the sparse vector feature, including config

## Prerequisites

- Python 3.10+
- Python 3.11+
- powermem installed (`pip install powermem`)
- Database: **seekdb** or **OceanBase >= 4.5.0**

Expand Down
2 changes: 1 addition & 1 deletion docs/examples/scenario_1_basic_usage.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"source": [
"## Prerequisites\n",
"\n",
"- Python 3.10+\n",
"- Python 3.11+\n",
"- powermem installed (`pip install powermem`)\n"
]
},
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/scenario_1_basic_usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This scenario guides you through the basics of powermem - storing, retrieving, a

## Prerequisites

- Python 3.10+
- Python 3.11+
- powermem installed (`pip install powermem`)

## Configuration
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/scenario_7_multimodal.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"source": [
"## Prerequisites\n",
"\n",
"- Python 3.10+\n",
"- Python 3.11+\n",
"- powermem installed (`pip install powermem`)\n",
"- Multimodal LLM API support\n"
]
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/scenario_7_multimodal.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This scenario demonstrates PowerMem's multimodal capability - storing and retrie

## Prerequisites

- Python 3.10+
- Python 3.11+
- powermem installed (`pip install powermem`)
- Multimodal LLM API support

Expand Down
2 changes: 1 addition & 1 deletion docs/examples/scenario_8_ebbinghaus_forgetting_curve.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"source": [
"## Prerequisites\n",
"\n",
"- Python 3.10+\n",
"- Python 3.11+\n",
"- powermem installed (`pip install powermem`)\n",
"- matplotlib and numpy for visualization (optional)\n"
]
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/scenario_8_ebbinghaus_forgetting_curve.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This scenario demonstrates how to implement and utilize the Ebbinghaus Forgettin

## Prerequisites

- Python 3.10+
- Python 3.11+
- powermem installed (`pip install powermem`)
- matplotlib and numpy for visualization (optional)

Expand Down
2 changes: 1 addition & 1 deletion docs/examples/scenario_9_user_memory.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"\n",
"## Prerequisites\n",
"\n",
"- Python 3.10+\n",
"- Python 3.11+\n",
"- powermem installed (`pip install powermem`)\n",
"- LLM provider configured (for profile extraction)\n",
"- OceanBase configured as vector store (UserMemory requires OceanBase)\n",
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/scenario_9_user_memory.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This scenario demonstrates powermem's UserMemory feature - automatic user profil

## Prerequisites

- Python 3.10+
- Python 3.11+
- powermem installed (`pip install powermem`)
- LLM provider configured (for profile extraction)
- OceanBase configured as vector store (UserMemory requires OceanBase)
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/0001-getting_started.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## Prerequisites

- Python 3.10+
- Python 3.11+
- powermem installed (`pip install powermem`)

## Configuration
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/0002-getting_started_async.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

## Prerequisites

- Python 3.10+
- Python 3.11+
- powermem installed (`pip install powermem`)
- Basic understanding of Python async/await syntax

Expand Down
2 changes: 1 addition & 1 deletion docs/guides/0005-multi_agent.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## Prerequisites

- Python 3.10+
- Python 3.11+
- powermem installed (`pip install powermem`)
- Basic understanding of powermem (see [Getting Started Guide](./0001-getting_started.md))

Expand Down
2 changes: 1 addition & 1 deletion docs/guides/0007-multimodal.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## Prerequisites

- Python 3.10+
- Python 3.11+
- powermem installed (`pip install powermem`)
- Multimodal LLM API support

Expand Down
2 changes: 1 addition & 1 deletion docs/guides/0008-ebbinghaus_forgetting_curve.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## Prerequisites

- Python 3.10+
- Python 3.11+
- powermem installed (`pip install powermem`)
- matplotlib and numpy for visualization (optional)

Expand Down
2 changes: 1 addition & 1 deletion docs/guides/0010-user_memory.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ UserMemory is PowerMem's advanced user profile management module. It automatical

## Prerequisites

- Python 3.10+
- Python 3.11+
- PowerMem installed (`pip install powermem`)
- LLM and embedding services configured (for profile extraction)
- Vector store configured (for storing memories and profiles)
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/0011-sparse_vector.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This guide explains how to use the Sparse Vector feature in PowerMem, including

## Prerequisites

- Python 3.10+
- Python 3.11+
- powermem installed (`pip install powermem`)
- Database requirements: **seekdb** or **OceanBase >= 4.5.0**

Expand Down
2 changes: 1 addition & 1 deletion examples/langchain/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ This example demonstrates how to build an AI Healthcare Support Bot using **Powe

## Prerequisites

1. **Python 3.10+**
1. **Python 3.11+**
2. **OceanBase Database** (configured and running)
3. **API Keys**:
- LLM API key (OpenAI, Qwen, etc.)
Expand Down
2 changes: 1 addition & 1 deletion examples/langgraph/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ This example demonstrates how to build an AI Customer Service Bot using **PowerM

## Prerequisites

1. **Python 3.10+**
1. **Python 3.11+**
2. **OceanBase Database** (configured and running)
3. **API Keys**:
- LLM API key (OpenAI, Qwen, etc.)
Expand Down
Loading
Loading