mnemo-secondbrain 0.2.0__tar.gz
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.
- mnemo_secondbrain-0.2.0/LICENSE +21 -0
- mnemo_secondbrain-0.2.0/MANIFEST.in +18 -0
- mnemo_secondbrain-0.2.0/PKG-INFO +161 -0
- mnemo_secondbrain-0.2.0/README.md +116 -0
- mnemo_secondbrain-0.2.0/config.example.yaml +21 -0
- mnemo_secondbrain-0.2.0/docs/A001-PRD.md +287 -0
- mnemo_secondbrain-0.2.0/docs/A002-/352/262/275/354/237/201/353/266/204/354/204/235.md +158 -0
- mnemo_secondbrain-0.2.0/docs/A003-/352/270/260/354/210/240/353/266/204/354/204/235.md +275 -0
- mnemo_secondbrain-0.2.0/docs/A004-/354/210/230/354/235/265/355/231/224-/354/240/204/353/236/265.md +205 -0
- mnemo_secondbrain-0.2.0/docs/D001-/354/225/204/355/202/244/355/205/215/354/262/230-/354/204/244/352/263/204.md +327 -0
- mnemo_secondbrain-0.2.0/docs/D002-/354/230/250/355/206/250/353/241/234/354/247/200-/354/212/244/355/202/244/353/247/210.md +349 -0
- mnemo_secondbrain-0.2.0/docs/D003-/353/205/270/353/223/234/353/247/201/355/201/254-/354/204/244/352/263/204.md +247 -0
- mnemo_secondbrain-0.2.0/docs/I001-/352/260/234/353/260/234/352/263/204/355/232/215.md +181 -0
- mnemo_secondbrain-0.2.0/docs/OBSIDIAN-PLUGIN-RELEASE.md +65 -0
- mnemo_secondbrain-0.2.0/docs/P001-graph-improvement-plan.md +110 -0
- mnemo_secondbrain-0.2.0/docs/README.md +7 -0
- mnemo_secondbrain-0.2.0/docs/T001-MAIBOT-/355/206/265/355/225/251-/355/205/214/354/212/244/355/212/270-/353/246/254/355/217/254/355/212/270.md +175 -0
- mnemo_secondbrain-0.2.0/docs/T002-/354/242/205/355/225/251/352/262/200/354/246/235-/353/246/254/355/217/254/355/212/270.md +144 -0
- mnemo_secondbrain-0.2.0/docs/T003-graph-quality-analysis.md +127 -0
- mnemo_secondbrain-0.2.0/docs/T004-frontmatter-enrichment.md +48 -0
- mnemo_secondbrain-0.2.0/docs/T005-embedding-coverage.md +50 -0
- mnemo_secondbrain-0.2.0/docs/T006-post-refactor-enrichment.md +57 -0
- mnemo_secondbrain-0.2.0/docs/T007-project-scoring.md +52 -0
- mnemo_secondbrain-0.2.0/docs/T008-search-quality.md +185 -0
- mnemo_secondbrain-0.2.0/docs/T009-graph-quality-improvement.md +57 -0
- mnemo_secondbrain-0.2.0/pyproject.toml +53 -0
- mnemo_secondbrain-0.2.0/scripts/analyze_components.py +60 -0
- mnemo_secondbrain-0.2.0/scripts/analyze_vault.py +78 -0
- mnemo_secondbrain-0.2.0/scripts/benchmark_search.py +132 -0
- mnemo_secondbrain-0.2.0/scripts/check_missing.py +31 -0
- mnemo_secondbrain-0.2.0/scripts/classify_unknown.py +113 -0
- mnemo_secondbrain-0.2.0/scripts/collect_knowledge.py +52 -0
- mnemo_secondbrain-0.2.0/scripts/content_enrich.py +68 -0
- mnemo_secondbrain-0.2.0/scripts/daily_enrich.py +233 -0
- mnemo_secondbrain-0.2.0/scripts/debug_search.py +31 -0
- mnemo_secondbrain-0.2.0/scripts/embed_vault.py +51 -0
- mnemo_secondbrain-0.2.0/scripts/enrich_apply.py +34 -0
- mnemo_secondbrain-0.2.0/scripts/enrich_plan.py +55 -0
- mnemo_secondbrain-0.2.0/scripts/enrich_related.py +55 -0
- mnemo_secondbrain-0.2.0/scripts/generate_stubs.py +116 -0
- mnemo_secondbrain-0.2.0/scripts/integrated_search.py +201 -0
- mnemo_secondbrain-0.2.0/scripts/opportunity_scanner.py +284 -0
- mnemo_secondbrain-0.2.0/scripts/reduce_components.py +197 -0
- mnemo_secondbrain-0.2.0/scripts/search.py +112 -0
- mnemo_secondbrain-0.2.0/scripts/test_hybrid.py +49 -0
- mnemo_secondbrain-0.2.0/scripts/test_query.py +65 -0
- mnemo_secondbrain-0.2.0/setup.cfg +4 -0
- mnemo_secondbrain-0.2.0/src/__init__.py +0 -0
- mnemo_secondbrain-0.2.0/src/mnemo/__init__.py +2 -0
- mnemo_secondbrain-0.2.0/src/mnemo/api.py +616 -0
- mnemo_secondbrain-0.2.0/src/mnemo/cache.py +79 -0
- mnemo_secondbrain-0.2.0/src/mnemo/cli.py +303 -0
- mnemo_secondbrain-0.2.0/src/mnemo/collectors/__init__.py +1 -0
- mnemo_secondbrain-0.2.0/src/mnemo/collectors/knowledge_pipeline.py +201 -0
- mnemo_secondbrain-0.2.0/src/mnemo/collectors/trust_evaluator.py +352 -0
- mnemo_secondbrain-0.2.0/src/mnemo/collectors/web_collector.py +196 -0
- mnemo_secondbrain-0.2.0/src/mnemo/content_linker.py +232 -0
- mnemo_secondbrain-0.2.0/src/mnemo/embedder.py +236 -0
- mnemo_secondbrain-0.2.0/src/mnemo/enricher.py +238 -0
- mnemo_secondbrain-0.2.0/src/mnemo/graph_builder.py +194 -0
- mnemo_secondbrain-0.2.0/src/mnemo/graph_search.py +96 -0
- mnemo_secondbrain-0.2.0/src/mnemo/graphrag.py +152 -0
- mnemo_secondbrain-0.2.0/src/mnemo/hybrid_search.py +174 -0
- mnemo_secondbrain-0.2.0/src/mnemo/ontology.py +71 -0
- mnemo_secondbrain-0.2.0/src/mnemo/opportunity_scorer.py +271 -0
- mnemo_secondbrain-0.2.0/src/mnemo/parser.py +218 -0
- mnemo_secondbrain-0.2.0/src/mnemo/reranker.py +81 -0
- mnemo_secondbrain-0.2.0/src/mnemo/vector_search.py +56 -0
- mnemo_secondbrain-0.2.0/src/mnemo_secondbrain.egg-info/PKG-INFO +161 -0
- mnemo_secondbrain-0.2.0/src/mnemo_secondbrain.egg-info/SOURCES.txt +72 -0
- mnemo_secondbrain-0.2.0/src/mnemo_secondbrain.egg-info/dependency_links.txt +1 -0
- mnemo_secondbrain-0.2.0/src/mnemo_secondbrain.egg-info/entry_points.txt +2 -0
- mnemo_secondbrain-0.2.0/src/mnemo_secondbrain.egg-info/requires.txt +29 -0
- mnemo_secondbrain-0.2.0/src/mnemo_secondbrain.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 jini92
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
include LICENSE
|
|
2
|
+
include README.md
|
|
3
|
+
include pyproject.toml
|
|
4
|
+
include config.example.yaml
|
|
5
|
+
|
|
6
|
+
recursive-include src *.py
|
|
7
|
+
recursive-include scripts *.py
|
|
8
|
+
recursive-include docs *.md
|
|
9
|
+
|
|
10
|
+
recursive-exclude .mnemo *
|
|
11
|
+
recursive-exclude obsidian-plugin *
|
|
12
|
+
recursive-exclude __pycache__ *
|
|
13
|
+
recursive-exclude * *.pyc *.pyo
|
|
14
|
+
exclude .env
|
|
15
|
+
exclude .env.*
|
|
16
|
+
prune .mnemo
|
|
17
|
+
prune obsidian-plugin
|
|
18
|
+
prune ~
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mnemo-secondbrain
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Personal knowledge graph system for Obsidian vaults with hybrid search
|
|
5
|
+
Author-email: jini92 <jini92@users.noreply.github.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/jini92/MAISECONDBRAIN
|
|
8
|
+
Project-URL: Repository, https://github.com/jini92/MAISECONDBRAIN
|
|
9
|
+
Project-URL: Issues, https://github.com/jini92/MAISECONDBRAIN/issues
|
|
10
|
+
Keywords: knowledge-graph,obsidian,second-brain,graphrag,semantic-search
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Topic :: Text Processing :: General
|
|
18
|
+
Requires-Python: >=3.10
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
License-File: LICENSE
|
|
21
|
+
Requires-Dist: networkx>=3.0
|
|
22
|
+
Requires-Dist: pyyaml>=6.0
|
|
23
|
+
Requires-Dist: numpy>=1.24
|
|
24
|
+
Requires-Dist: rich>=13.0
|
|
25
|
+
Requires-Dist: click>=8.0
|
|
26
|
+
Provides-Extra: api
|
|
27
|
+
Requires-Dist: fastapi>=0.100; extra == "api"
|
|
28
|
+
Requires-Dist: uvicorn>=0.20; extra == "api"
|
|
29
|
+
Provides-Extra: embeddings
|
|
30
|
+
Requires-Dist: openai>=1.0; extra == "embeddings"
|
|
31
|
+
Provides-Extra: local
|
|
32
|
+
Requires-Dist: ollama>=0.1; extra == "local"
|
|
33
|
+
Provides-Extra: sbert
|
|
34
|
+
Requires-Dist: sentence-transformers>=2.2; extra == "sbert"
|
|
35
|
+
Provides-Extra: dev
|
|
36
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
37
|
+
Requires-Dist: pytest-cov>=4.0; extra == "dev"
|
|
38
|
+
Requires-Dist: build; extra == "dev"
|
|
39
|
+
Provides-Extra: all
|
|
40
|
+
Requires-Dist: fastapi>=0.100; extra == "all"
|
|
41
|
+
Requires-Dist: uvicorn>=0.20; extra == "all"
|
|
42
|
+
Requires-Dist: openai>=1.0; extra == "all"
|
|
43
|
+
Requires-Dist: sentence-transformers>=2.2; extra == "all"
|
|
44
|
+
Dynamic: license-file
|
|
45
|
+
|
|
46
|
+
# Mnemo — Personal Knowledge Graph for Obsidian
|
|
47
|
+
|
|
48
|
+
[](https://pypi.org/project/mnemo-secondbrain/)
|
|
49
|
+
[](https://opensource.org/licenses/MIT)
|
|
50
|
+
[](https://www.python.org/downloads/)
|
|
51
|
+
|
|
52
|
+
> Turn your Obsidian vault into a queryable knowledge graph with hybrid search (vector + graph traversal).
|
|
53
|
+
|
|
54
|
+
## Features
|
|
55
|
+
|
|
56
|
+
- **Automatic Graph Building** — Parses `[[wikilinks]]`, YAML frontmatter, and tags from your Obsidian vault into a NetworkX knowledge graph
|
|
57
|
+
- **Hybrid Search** — Combines vector similarity search with graph-based multi-hop traversal
|
|
58
|
+
- **Ontology Classification** — Auto-classifies entities (Person, Concept, Project, Tool, Insight, etc.)
|
|
59
|
+
- **Knowledge Collectors** — Web clipping, trust evaluation, and automated knowledge pipeline
|
|
60
|
+
- **REST API** — FastAPI server for programmatic access
|
|
61
|
+
- **Obsidian Plugin** — Companion plugin for in-vault queries (see `obsidian-plugin/`)
|
|
62
|
+
- **CLI Interface** — Full-featured command-line tool for graph operations
|
|
63
|
+
|
|
64
|
+
## Quick Start
|
|
65
|
+
|
|
66
|
+
### Installation
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Core (graph + CLI)
|
|
70
|
+
pip install mnemo-secondbrain
|
|
71
|
+
|
|
72
|
+
# With API server
|
|
73
|
+
pip install mnemo-secondbrain[api]
|
|
74
|
+
|
|
75
|
+
# With sentence-transformers embeddings
|
|
76
|
+
pip install mnemo-secondbrain[sbert]
|
|
77
|
+
|
|
78
|
+
# Everything
|
|
79
|
+
pip install mnemo-secondbrain[all]
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Configuration
|
|
83
|
+
|
|
84
|
+
Create a `config.yaml` (see `config.example.yaml`):
|
|
85
|
+
|
|
86
|
+
```yaml
|
|
87
|
+
vault_path: ~/Documents/MyVault
|
|
88
|
+
embedding:
|
|
89
|
+
provider: sbert # or "openai", "ollama"
|
|
90
|
+
model: all-MiniLM-L6-v2
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Or use environment variables:
|
|
94
|
+
|
|
95
|
+
| Variable | Description | Example |
|
|
96
|
+
|----------|-------------|---------|
|
|
97
|
+
| `MNEMO_VAULT_PATH` | Path to your Obsidian vault | `~/Documents/MyVault` |
|
|
98
|
+
| `OPENAI_API_KEY` | OpenAI API key (if using OpenAI embeddings) | `sk-...` |
|
|
99
|
+
|
|
100
|
+
### CLI Usage
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# Build the knowledge graph from your vault
|
|
104
|
+
mnemo build
|
|
105
|
+
|
|
106
|
+
# Search your knowledge graph
|
|
107
|
+
mnemo search "machine learning fundamentals"
|
|
108
|
+
|
|
109
|
+
# Show graph statistics
|
|
110
|
+
mnemo stats
|
|
111
|
+
|
|
112
|
+
# Export graph
|
|
113
|
+
mnemo export --format graphml
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### API Server
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# Start the API server (requires mnemo-secondbrain[api])
|
|
120
|
+
mnemo serve --host 0.0.0.0 --port 8000
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Endpoints:
|
|
124
|
+
|
|
125
|
+
| Method | Path | Description |
|
|
126
|
+
|--------|------|-------------|
|
|
127
|
+
| `GET` | `/api/search` | Hybrid search |
|
|
128
|
+
| `GET` | `/api/graph/stats` | Graph statistics |
|
|
129
|
+
| `GET` | `/api/graph/node/{id}` | Get node details |
|
|
130
|
+
| `GET` | `/api/graph/neighbors/{id}` | Get node neighbors |
|
|
131
|
+
|
|
132
|
+
### Obsidian Plugin
|
|
133
|
+
|
|
134
|
+
The companion Obsidian plugin lives in `obsidian-plugin/`. See its README for installation instructions. It connects to the Mnemo API server for in-vault search and graph visualization.
|
|
135
|
+
|
|
136
|
+
## Architecture
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
Obsidian Vault (Markdown + YAML + [[links]])
|
|
140
|
+
↓ parse
|
|
141
|
+
NetworkX Graph (in-memory)
|
|
142
|
+
↓ embed
|
|
143
|
+
Vector Index + Graph Index
|
|
144
|
+
↓ query
|
|
145
|
+
Hybrid Search (vector + graph traversal)
|
|
146
|
+
↓ rerank
|
|
147
|
+
Results with context
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Development
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
git clone https://github.com/jini92/MAISECONDBRAIN.git
|
|
154
|
+
cd MAISECONDBRAIN
|
|
155
|
+
pip install -e ".[dev,all]"
|
|
156
|
+
pytest
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## License
|
|
160
|
+
|
|
161
|
+
MIT — see [LICENSE](LICENSE).
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Mnemo — Personal Knowledge Graph for Obsidian
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/mnemo-secondbrain/)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
[](https://www.python.org/downloads/)
|
|
6
|
+
|
|
7
|
+
> Turn your Obsidian vault into a queryable knowledge graph with hybrid search (vector + graph traversal).
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- **Automatic Graph Building** — Parses `[[wikilinks]]`, YAML frontmatter, and tags from your Obsidian vault into a NetworkX knowledge graph
|
|
12
|
+
- **Hybrid Search** — Combines vector similarity search with graph-based multi-hop traversal
|
|
13
|
+
- **Ontology Classification** — Auto-classifies entities (Person, Concept, Project, Tool, Insight, etc.)
|
|
14
|
+
- **Knowledge Collectors** — Web clipping, trust evaluation, and automated knowledge pipeline
|
|
15
|
+
- **REST API** — FastAPI server for programmatic access
|
|
16
|
+
- **Obsidian Plugin** — Companion plugin for in-vault queries (see `obsidian-plugin/`)
|
|
17
|
+
- **CLI Interface** — Full-featured command-line tool for graph operations
|
|
18
|
+
|
|
19
|
+
## Quick Start
|
|
20
|
+
|
|
21
|
+
### Installation
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Core (graph + CLI)
|
|
25
|
+
pip install mnemo-secondbrain
|
|
26
|
+
|
|
27
|
+
# With API server
|
|
28
|
+
pip install mnemo-secondbrain[api]
|
|
29
|
+
|
|
30
|
+
# With sentence-transformers embeddings
|
|
31
|
+
pip install mnemo-secondbrain[sbert]
|
|
32
|
+
|
|
33
|
+
# Everything
|
|
34
|
+
pip install mnemo-secondbrain[all]
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Configuration
|
|
38
|
+
|
|
39
|
+
Create a `config.yaml` (see `config.example.yaml`):
|
|
40
|
+
|
|
41
|
+
```yaml
|
|
42
|
+
vault_path: ~/Documents/MyVault
|
|
43
|
+
embedding:
|
|
44
|
+
provider: sbert # or "openai", "ollama"
|
|
45
|
+
model: all-MiniLM-L6-v2
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Or use environment variables:
|
|
49
|
+
|
|
50
|
+
| Variable | Description | Example |
|
|
51
|
+
|----------|-------------|---------|
|
|
52
|
+
| `MNEMO_VAULT_PATH` | Path to your Obsidian vault | `~/Documents/MyVault` |
|
|
53
|
+
| `OPENAI_API_KEY` | OpenAI API key (if using OpenAI embeddings) | `sk-...` |
|
|
54
|
+
|
|
55
|
+
### CLI Usage
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Build the knowledge graph from your vault
|
|
59
|
+
mnemo build
|
|
60
|
+
|
|
61
|
+
# Search your knowledge graph
|
|
62
|
+
mnemo search "machine learning fundamentals"
|
|
63
|
+
|
|
64
|
+
# Show graph statistics
|
|
65
|
+
mnemo stats
|
|
66
|
+
|
|
67
|
+
# Export graph
|
|
68
|
+
mnemo export --format graphml
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### API Server
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# Start the API server (requires mnemo-secondbrain[api])
|
|
75
|
+
mnemo serve --host 0.0.0.0 --port 8000
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Endpoints:
|
|
79
|
+
|
|
80
|
+
| Method | Path | Description |
|
|
81
|
+
|--------|------|-------------|
|
|
82
|
+
| `GET` | `/api/search` | Hybrid search |
|
|
83
|
+
| `GET` | `/api/graph/stats` | Graph statistics |
|
|
84
|
+
| `GET` | `/api/graph/node/{id}` | Get node details |
|
|
85
|
+
| `GET` | `/api/graph/neighbors/{id}` | Get node neighbors |
|
|
86
|
+
|
|
87
|
+
### Obsidian Plugin
|
|
88
|
+
|
|
89
|
+
The companion Obsidian plugin lives in `obsidian-plugin/`. See its README for installation instructions. It connects to the Mnemo API server for in-vault search and graph visualization.
|
|
90
|
+
|
|
91
|
+
## Architecture
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
Obsidian Vault (Markdown + YAML + [[links]])
|
|
95
|
+
↓ parse
|
|
96
|
+
NetworkX Graph (in-memory)
|
|
97
|
+
↓ embed
|
|
98
|
+
Vector Index + Graph Index
|
|
99
|
+
↓ query
|
|
100
|
+
Hybrid Search (vector + graph traversal)
|
|
101
|
+
↓ rerank
|
|
102
|
+
Results with context
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Development
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
git clone https://github.com/jini92/MAISECONDBRAIN.git
|
|
109
|
+
cd MAISECONDBRAIN
|
|
110
|
+
pip install -e ".[dev,all]"
|
|
111
|
+
pytest
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## License
|
|
115
|
+
|
|
116
|
+
MIT — see [LICENSE](LICENSE).
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Mnemo SecondBrain - Environment Configuration
|
|
2
|
+
# Copy this file or set these environment variables before running scripts.
|
|
3
|
+
|
|
4
|
+
# Required: Path to your Obsidian vault (or any markdown notes directory)
|
|
5
|
+
# Example: /home/user/ObsidianVault or C:\Users\you\Documents\MyVault
|
|
6
|
+
MNEMO_VAULT_PATH: ""
|
|
7
|
+
|
|
8
|
+
# Required for scripts that access MAIBOT memory (daily_enrich, embed_vault, integrated_search)
|
|
9
|
+
# Example: /home/user/maibot/memory
|
|
10
|
+
MNEMO_MEMORY_PATH: ""
|
|
11
|
+
|
|
12
|
+
# Optional: Project root override (defaults to repository root)
|
|
13
|
+
# Used by generate_stubs for cache directory resolution
|
|
14
|
+
MNEMO_PROJECT_ROOT: ""
|
|
15
|
+
|
|
16
|
+
# Optional: MAIBOT root directory (for MEMORY.md location in integrated_search)
|
|
17
|
+
# If not set, defaults to parent of MNEMO_MEMORY_PATH
|
|
18
|
+
MAIBOT_ROOT: ""
|
|
19
|
+
|
|
20
|
+
# Optional: Brave Search API key (for external knowledge collection)
|
|
21
|
+
BRAVE_API_KEY: ""
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
# A001-PRD: Mnemo (MAISECONDBRAIN)
|
|
2
|
+
|
|
3
|
+
> 🧠 개인화 세컨드브레인 — 온톨로지 지식그래프 + GraphRAG + Obsidian + OpenClaw
|
|
4
|
+
|
|
5
|
+
**버전:** 1.0
|
|
6
|
+
**작성일:** 2026-02-20
|
|
7
|
+
**작성자:** MAIBOT
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 1. Executive Summary
|
|
12
|
+
|
|
13
|
+
**Mnemo(므네모)**는 개인의 지식과 경험을 Obsidian 볼트 기반 온톨로지 지식그래프로 구조화하고, GraphRAG로 맥락적 검색·추론을 수행하는 AI 세컨드브레인 시스템이다.
|
|
14
|
+
|
|
15
|
+
기존 노트 앱이 "저장"에 머무는 반면, Mnemo는 **"저장 → 구조화 → 연결 → 추론 → 복습"** 전체 지식 라이프사이클을 자동화한다.
|
|
16
|
+
|
|
17
|
+
**핵심 차별점:**
|
|
18
|
+
- Obsidian 볼트 자체가 지식그래프 (별도 DB 없음)
|
|
19
|
+
- GraphRAG로 멀티홉 맥락 추론
|
|
20
|
+
- OpenClaw AI 에이전트가 수집·분석·복습·브리핑 자동화
|
|
21
|
+
- 데이터 소유권 100% 로컬
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 2. Problem Statement
|
|
26
|
+
|
|
27
|
+
### 현재 지식 관리의 3대 문제
|
|
28
|
+
|
|
29
|
+
| 문제 | 현상 | 결과 |
|
|
30
|
+
|------|------|------|
|
|
31
|
+
| **정보 과부하** | 매일 수십 개의 글/영상/논문 소비 | 90%는 소비 후 증발 |
|
|
32
|
+
| **지식 파편화** | 노션, 메모, 북마크, 카톡에 흩어진 정보 | 연결이 안 되어 인사이트 미발생 |
|
|
33
|
+
| **수동적 관리** | 정리는 항상 "나중에" | 세컨드브레인이 아닌 "디지털 쓰레기통" |
|
|
34
|
+
|
|
35
|
+
### 기존 솔루션의 한계
|
|
36
|
+
|
|
37
|
+
| 도구 | 한계 |
|
|
38
|
+
|------|------|
|
|
39
|
+
| **Notion** | 클라우드 종속, 지식그래프 없음, AI가 표면적 검색만 |
|
|
40
|
+
| **Obsidian (순수)** | 수동 연결만 가능, RAG 없음, 그래프뷰는 시각화일 뿐 |
|
|
41
|
+
| **Mem.ai / Reflect** | 폐쇄적 생태계, 데이터 이동 어려움, 비쌈 |
|
|
42
|
+
| **NotebookLM** | 소스 기반 QA만 가능, 지식 간 연결/추론 불가 |
|
|
43
|
+
|
|
44
|
+
**Mnemo가 해결:** 옵시디언의 자유도 + AI의 자동화 + 지식그래프의 맥락 추론
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 3. Target Users
|
|
49
|
+
|
|
50
|
+
### 페르소나 1: 📚 지식 노동자 "현우" (30대, PM)
|
|
51
|
+
- 매일 10+ 아티클/유튜브 소비
|
|
52
|
+
- 옵시디언 사용 중이지만 정리 못하고 쌓이기만 함
|
|
53
|
+
- **Pain:** "분명 전에 읽었는데 어디 적었는지 모르겠다"
|
|
54
|
+
- **Want:** AI가 알아서 정리하고, 관련 지식을 연결해줬으면
|
|
55
|
+
|
|
56
|
+
### 페르소나 2: 🚀 1인 창업가 "지니" (30대, 다중 프로젝트)
|
|
57
|
+
- 9개+ 프로젝트 동시 운영
|
|
58
|
+
- 브레인스토밍 내용, 시장 리서치, 기술 메모가 프로젝트별로 흩어져 있음
|
|
59
|
+
- **Pain:** "A 프로젝트에서 배운 게 B에도 적용되는데 연결이 안 돼"
|
|
60
|
+
- **Want:** 프로젝트 간 인사이트 자동 연결 + 일일 브리핑
|
|
61
|
+
|
|
62
|
+
### 페르소나 3: 🎓 리서처 "수진" (40대, 컨설턴트)
|
|
63
|
+
- 산업별 규정, 논문, 사례를 체계적으로 관리해야 함
|
|
64
|
+
- **Pain:** "이 규정이 어떤 사례와 관련되는지 수동으로 찾아야 해"
|
|
65
|
+
- **Want:** 질문하면 관련 지식을 그래프로 탐색해서 답해주는 시스템
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 4. Core Features (우선순위별)
|
|
70
|
+
|
|
71
|
+
### P0 — Must Have (Phase 1-2)
|
|
72
|
+
|
|
73
|
+
| 기능 | 설명 |
|
|
74
|
+
|------|------|
|
|
75
|
+
| **Obsidian 볼트 파서** | YAML frontmatter + `[[위키링크]]` + 태그 자동 추출 |
|
|
76
|
+
| **온톨로지 엔진** | Person/Concept/Project/Tool/Insight 엔티티 분류 + 관계 추출 |
|
|
77
|
+
| **NetworkX 그래프 빌더** | 볼트에서 인메모리 지식그래프 동적 생성 |
|
|
78
|
+
| **벡터 임베딩** | 노트별 임베딩 생성 + 로컬 저장 |
|
|
79
|
+
| **하이브리드 검색** | 벡터 유사도 + 그래프 관계 탐색 결합 |
|
|
80
|
+
|
|
81
|
+
### P1 — Should Have (Phase 3)
|
|
82
|
+
|
|
83
|
+
| 기능 | 설명 |
|
|
84
|
+
|------|------|
|
|
85
|
+
| **자연어 질의** | "이 개념과 관련된 프로젝트는?" → 멀티홉 추론 답변 |
|
|
86
|
+
| **자동 수집** | RSS/웹클리핑/YouTube → Obsidian 노트 자동 변환 |
|
|
87
|
+
| **Obsidian 플러그인** | 인라인 쿼리 UI, 관계 시각화 |
|
|
88
|
+
| **지식 연결 제안** | 새 노트 작성 시 기존 관련 노트 자동 추천 |
|
|
89
|
+
|
|
90
|
+
### P2 — Nice to Have (Phase 4)
|
|
91
|
+
|
|
92
|
+
| 기능 | 설명 |
|
|
93
|
+
|------|------|
|
|
94
|
+
| **망각 곡선 복습** | 과거 스크랩 지식을 주기적으로 퀴즈/요약 |
|
|
95
|
+
| **오디오 브리핑** | 일일 지식 요약을 TTS로 생성 |
|
|
96
|
+
| **NotebookLM 연동** | Open Gate 플러그인 통한 빠른 리서치 |
|
|
97
|
+
| **인포그래픽 자동 생성** | 지식 구조를 시각적 카드로 변환 |
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 5. Technical Architecture
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
┌──────────────────────────────────────────┐
|
|
105
|
+
│ Obsidian Vault │
|
|
106
|
+
│ (Markdown + YAML + [[링크]] + Tags) │
|
|
107
|
+
│ = Data Lake + Knowledge Graph │
|
|
108
|
+
└────────────────┬─────────────────────────┘
|
|
109
|
+
│ Python 파서
|
|
110
|
+
▼
|
|
111
|
+
┌──────────────────────────────────────────┐
|
|
112
|
+
│ 온톨로지 엔진 │
|
|
113
|
+
│ - YAML frontmatter 파싱 │
|
|
114
|
+
│ - [[위키링크]] 관계 추출 │
|
|
115
|
+
│ - 엔티티 분류 (LLM-assisted) │
|
|
116
|
+
└────────────────┬─────────────────────────┘
|
|
117
|
+
│
|
|
118
|
+
┌────────┴────────┐
|
|
119
|
+
▼ ▼
|
|
120
|
+
┌───────────────┐ ┌───────────────────┐
|
|
121
|
+
│ NetworkX │ │ 벡터 스토어 │
|
|
122
|
+
│ (인메모리 │ │ (임베딩 캐시) │
|
|
123
|
+
│ 그래프) │ │ │
|
|
124
|
+
└───────┬───────┘ └────────┬──────────┘
|
|
125
|
+
│ │
|
|
126
|
+
└────────┬─────────┘
|
|
127
|
+
▼
|
|
128
|
+
┌──────────────────────────────────────────┐
|
|
129
|
+
│ GraphRAG 쿼리 엔진 │
|
|
130
|
+
│ - 그래프 탐색 + 벡터 유사도 병합 │
|
|
131
|
+
│ - 멀티홉 추론 │
|
|
132
|
+
│ - LLM 답변 생성 │
|
|
133
|
+
└────────────────┬─────────────────────────┘
|
|
134
|
+
│
|
|
135
|
+
┌────────┴────────┐
|
|
136
|
+
▼ ▼
|
|
137
|
+
┌───────────────┐ ┌───────────────────┐
|
|
138
|
+
│ Obsidian │ │ OpenClaw Agent │
|
|
139
|
+
│ Plugin (UI) │ │ (자동화/크론) │
|
|
140
|
+
└───────────────┘ └───────────────────┘
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### 핵심 기술 선택 근거
|
|
144
|
+
|
|
145
|
+
| 선택 | 이유 |
|
|
146
|
+
|------|------|
|
|
147
|
+
| Obsidian (not Notion) | 데이터 소유권, 마크다운 파워, 무한 확장성, 로컬 저장 |
|
|
148
|
+
| NetworkX (not Neo4j) | 별도 DB 서버 불필요, 볼트가 source of truth, 개인 규모에 충분 |
|
|
149
|
+
| 하이브리드 검색 (not 벡터만) | 그래프 관계를 활용한 맥락 추론이 단순 유사도 검색보다 우월 |
|
|
150
|
+
| OpenClaw (not 독립 에이전트) | 기존 인프라 활용, 크론/스킬 시스템, 멀티 채널 알림 |
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## 6. Success Metrics (KPI)
|
|
155
|
+
|
|
156
|
+
### 제품 KPI
|
|
157
|
+
|
|
158
|
+
| 지표 | 목표 (6개월) |
|
|
159
|
+
|------|-------------|
|
|
160
|
+
| 일일 자동 수집 노트 수 | 10+ |
|
|
161
|
+
| 지식 연결 제안 정확도 | 70%+ |
|
|
162
|
+
| GraphRAG 질의 응답 만족도 | 4/5+ |
|
|
163
|
+
| 망각 곡선 복습 완료율 | 60%+ |
|
|
164
|
+
| 볼트 내 고아 노트 비율 감소 | 50% → 20% |
|
|
165
|
+
|
|
166
|
+
### 사업 KPI (12개월)
|
|
167
|
+
|
|
168
|
+
| 지표 | 목표 |
|
|
169
|
+
|------|------|
|
|
170
|
+
| Obsidian 플러그인 설치 수 | 1,000+ |
|
|
171
|
+
| 유료 전환율 | 5%+ |
|
|
172
|
+
| MRR (월 반복 매출) | $500+ |
|
|
173
|
+
| 온라인 코스 수강생 | 100+ |
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## 7. Competitive Landscape
|
|
178
|
+
|
|
179
|
+
| 제품 | 지식그래프 | GraphRAG | AI 자동화 | 데이터 소유권 | 가격 |
|
|
180
|
+
|------|-----------|----------|----------|-------------|------|
|
|
181
|
+
| **Mnemo** | ✅ Obsidian-native | ✅ 하이브리드 | ✅ OpenClaw | ✅ 로컬 100% | 프리미엄 플러그인 |
|
|
182
|
+
| Notion AI | ❌ | ❌ 벡터만 | △ 기본 | ❌ 클라우드 | $10/월 |
|
|
183
|
+
| Mem.ai | △ 자동 | ❌ 벡터만 | △ 기본 | ❌ 클라우드 | $15/월 |
|
|
184
|
+
| Obsidian Copilot | ❌ | ❌ 벡터만 | ❌ | ✅ 로컬 | 무료 |
|
|
185
|
+
| Reflect | △ 백링크 | ❌ | △ 기본 | △ E2E 암호화 | $10/월 |
|
|
186
|
+
|
|
187
|
+
**Mnemo 포지셔닝:** 유일하게 **지식그래프 + GraphRAG + AI 자동화 + 로컬 데이터 소유권** 4가지를 모두 갖춘 솔루션
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## 8. Monetization Strategy
|
|
192
|
+
|
|
193
|
+
> 상세: [A004-수익화-전략.md](A004-수익화-전략.md)
|
|
194
|
+
|
|
195
|
+
### 5채널 수익 구조
|
|
196
|
+
|
|
197
|
+
| # | 채널 | 가격 | 시기 |
|
|
198
|
+
|---|------|------|------|
|
|
199
|
+
| 1 | **Obsidian 프리미엄 플러그인** | $5/월 | Phase 2 (4-8주) |
|
|
200
|
+
| 2 | **clawhub 스킬 (`mnemo`)** | 스킬 구독 | Phase 3 (8-12주) |
|
|
201
|
+
| 3 | **BOTMEMO 앱** (BOT Suite #7) | ₩5,900/월 | Phase 3 (8-12주) |
|
|
202
|
+
| 4 | **교육 코스** | $49 일회성 | Phase 4 (12주+) |
|
|
203
|
+
| 5 | **Mnemo Cloud (SaaS)** | $15/월 | Phase 4 (12주+) |
|
|
204
|
+
|
|
205
|
+
### BOT Suite 시너지
|
|
206
|
+
|
|
207
|
+
Mnemo = BOT Suite의 "뇌". 다른 봇(BOTALKS, BOTCON, BOTTOK, BOTTUTOR)의 활동 데이터를 지식으로 연결·축적·추론.
|
|
208
|
+
|
|
209
|
+
### 수익 목표
|
|
210
|
+
|
|
211
|
+
- 6개월: ~$825/월 (보수적)
|
|
212
|
+
- 12개월: ~$4,845/월 (낙관적)
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## 9. Risks & Mitigations
|
|
217
|
+
|
|
218
|
+
| 리스크 | 영향 | 확률 | 대응 |
|
|
219
|
+
|--------|------|------|------|
|
|
220
|
+
| 대규모 볼트 성능 저하 | 높음 | 중간 | 증분 빌드, 캐싱, lazy loading |
|
|
221
|
+
| LLM API 비용 급증 | 중간 | 높음 | 로컬 모델 (Ollama) 대안, 임베딩 캐시 |
|
|
222
|
+
| Obsidian API 변경 | 중간 | 낮음 | 마크다운 파싱 기반 (API 비의존적) |
|
|
223
|
+
| 경쟁사 빠른 추격 | 중간 | 중간 | 온톨로지+GraphRAG 깊이에서 차별화 |
|
|
224
|
+
| 사용자 온톨로지 설계 진입장벽 | 높음 | 높음 | 템플릿 제공, AI 자동 분류, 점진적 도입 |
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## 10. Phase별 MVP 범위
|
|
229
|
+
|
|
230
|
+
### Phase 1: 지식 수집 파이프라인 (4주)
|
|
231
|
+
- [ ] Obsidian 마크다운 파서 (Python)
|
|
232
|
+
- [ ] RSS → 노트 자동 변환
|
|
233
|
+
- [ ] YouTube → 요약 + 타임스탬프 노트
|
|
234
|
+
- [ ] 웹 클리핑 → 마크다운 변환
|
|
235
|
+
- **산출물:** 일일 자동 수집 동작하는 파이프라인
|
|
236
|
+
|
|
237
|
+
### Phase 2: 온톨로지 그래프 구축 (4주)
|
|
238
|
+
- [ ] 온톨로지 스키마 정의 (YAML 규격)
|
|
239
|
+
- [ ] 엔티티/관계 자동 추출 엔진
|
|
240
|
+
- [ ] NetworkX 인메모리 그래프 빌더
|
|
241
|
+
- [ ] 벡터 임베딩 생성 + 캐시
|
|
242
|
+
- **산출물:** 볼트에서 지식그래프 자동 생성
|
|
243
|
+
|
|
244
|
+
### Phase 3: GraphRAG 검색 엔진 (4주)
|
|
245
|
+
- [ ] 하이브리드 검색 (벡터 + 그래프)
|
|
246
|
+
- [ ] 멀티홉 추론 엔진
|
|
247
|
+
- [ ] Obsidian 플러그인 MVP (인라인 질의)
|
|
248
|
+
- [ ] 지식 연결 제안 기능
|
|
249
|
+
- **산출물:** 자연어로 질의 가능한 세컨드브레인
|
|
250
|
+
|
|
251
|
+
### Phase 4: AI 에이전트 자동화 (4주)
|
|
252
|
+
- [ ] 망각 곡선 복습 에이전트
|
|
253
|
+
- [ ] 일일 오디오 브리핑 (TTS)
|
|
254
|
+
- [ ] 신규↔기존 지식 자동 연결
|
|
255
|
+
- [ ] OpenClaw 크론 통합
|
|
256
|
+
- **산출물:** 완전 자동화된 세컨드브레인
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## 11. 첫 번째 적용: MAIBOT
|
|
261
|
+
|
|
262
|
+
Mnemo의 첫 적용 대상은 **MAIBOT 자체**이다. MAIBOT은 이미 Obsidian 볼트(3,037개 파일), memory 시스템(23개), 크론 자동화를 갖추고 있어 Mnemo의 이상적인 테스트베드.
|
|
263
|
+
|
|
264
|
+
### 현재 vs 적용 후
|
|
265
|
+
|
|
266
|
+
| | 현재 | Mnemo 적용 후 |
|
|
267
|
+
|---|---|---|
|
|
268
|
+
| 검색 대상 | memory/*.md (23파일) | 볼트 전체 3,037파일 + memory |
|
|
269
|
+
| 검색 방식 | 시맨틱 (벡터만) | 벡터 + 그래프 하이브리드 |
|
|
270
|
+
| 크로스 프로젝트 | ❌ | ✅ 9개 프로젝트 간 추론 |
|
|
271
|
+
| 관계 탐색 | ❌ | ✅ 멀티홉 |
|
|
272
|
+
|
|
273
|
+
### 적용 방식
|
|
274
|
+
|
|
275
|
+
OpenClaw 스킬(`skills/mnemo/`)로 등록 → MAIBOT이 질문받으면 GraphRAG 쿼리 → 기존 `memory_search` 보강.
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
## Appendix: 아이디어 원천
|
|
280
|
+
|
|
281
|
+
- "평범한 사업가" YouTube 팟캐스트 #74: GraphRAG와 온톨로지 (팔란티어 사례)
|
|
282
|
+
- "평범한 사업가" YouTube 팟캐스트 #77: 옵시디언 플러그인 만들기
|
|
283
|
+
- 핵심 인사이트: "기업이 수백억 들여 만드는 온톨로지 시스템을, 개인은 옵시디언으로 구현할 수 있다"
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
*Created: 2026-02-20 by MAIBOT*
|