89 lines
2.6 KiB
Markdown
89 lines
2.6 KiB
Markdown
# P2P Wiki AI
|
|
|
|
AI-augmented system for the P2P Foundation Wiki with two main features:
|
|
|
|
1. **Conversational Agent** — Ask questions about 23,000+ wiki articles using RAG (Retrieval Augmented Generation)
|
|
2. **Article Ingress Pipeline** — Drop article URLs to automatically analyze content, find matching wiki articles, and generate drafts
|
|
|
|
Content (wiki articles, XML dumps, infrastructure configs) lives in a separate repo:
|
|
**[p2pfoundation-wiki](https://gitea.jeffemmett.com/jeffemmett/p2pfoundation-wiki)**
|
|
|
|
## Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
- Python 3.10+
|
|
- [Ollama](https://ollama.ai) installed locally (or access to a remote Ollama server)
|
|
- Optional: Anthropic API key for Claude (higher quality article drafts)
|
|
|
|
### Install & Run
|
|
|
|
```bash
|
|
pip install -e .
|
|
|
|
# Parse wiki content (from XML dumps or articles directory)
|
|
python -m src.parser
|
|
|
|
# Generate embeddings
|
|
python -m src.embeddings
|
|
|
|
# Start server
|
|
python -m src.api
|
|
```
|
|
|
|
Visit http://localhost:8420/ui for the web interface.
|
|
|
|
### Content Directory
|
|
|
|
By default, the system looks for `xmldump/` and `articles/articles/` in the project root. To point at the separate content repo:
|
|
|
|
```bash
|
|
# In .env
|
|
CONTENT_DIR=/path/to/p2pfoundation-wiki
|
|
```
|
|
|
|
Or mount via Docker:
|
|
|
|
```bash
|
|
HOST_XMLDUMP_DIR=/opt/content/p2pfoundation-wiki/xmldump docker compose up -d
|
|
```
|
|
|
|
## Docker Deployment
|
|
|
|
```bash
|
|
docker compose up -d --build
|
|
docker compose logs -f
|
|
```
|
|
|
|
## Configuration
|
|
|
|
Copy `.env.example` to `.env` and configure:
|
|
|
|
| Variable | Default | Description |
|
|
|----------|---------|-------------|
|
|
| `CONTENT_DIR` | (unset) | Path to content repo (resolves xmldump + articles) |
|
|
| `HOST_XMLDUMP_DIR` | `./xmldump` | Host path for XML dump volume mount |
|
|
| `OLLAMA_BASE_URL` | `http://localhost:11434` | Ollama server URL |
|
|
| `OLLAMA_MODEL` | `llama3.2` | Model for chat Q&A |
|
|
| `CLAUDE_MODEL` | `claude-sonnet-4-20250514` | Model for article drafts |
|
|
| `USE_CLAUDE_FOR_DRAFTS` | `true` | Route drafts to Claude |
|
|
| `USE_OLLAMA_FOR_CHAT` | `true` | Route chat to Ollama |
|
|
| `ANTHROPIC_API_KEY` | (unset) | Claude API key (or via Infisical) |
|
|
|
|
## API Endpoints
|
|
|
|
| Endpoint | Method | Description |
|
|
|----------|--------|-------------|
|
|
| `/chat` | POST | Ask questions about wiki content |
|
|
| `/ingress` | POST | Process external article URL |
|
|
| `/review` | GET | List items in review queue |
|
|
| `/review/action` | POST | Approve/reject draft |
|
|
| `/search` | GET | Direct vector search |
|
|
| `/articles` | GET | List article titles |
|
|
| `/health` | GET | Health check |
|
|
|
|
## License
|
|
|
|
The AI system code is provided as-is for educational purposes.
|
|
Wiki content is from the P2P Foundation under [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/).
|