Add bilingual README (EN/DE) and Podman containerization
This commit is contained in:
3
.github-repo-description.txt
Normal file
3
.github-repo-description.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
Research Bridge - Self-hosted alternative to Perplexity with $0 running costs. SearXNG + Kimi for Coding research pipeline. FastAPI, Podman-ready, MIT licensed.
|
||||||
|
|
||||||
|
Keywords: research, search, ai, llm, perplexity-alternative, searxng, kimi, fastapi, podman, self-hosted
|
||||||
167
README.de.md
Normal file
167
README.de.md
Normal file
@@ -0,0 +1,167 @@
|
|||||||
|
# Research Bridge
|
||||||
|
|
||||||
|
SearXNG + Kimi for Coding Research Pipeline. Self-hosted Alternative zu Perplexity mit **$0 laufenden Kosten**.
|
||||||
|
|
||||||
|
[](https://www.python.org/downloads/)
|
||||||
|
[](https://opensource.org/licenses/MIT)
|
||||||
|
[](https://podman.io/)
|
||||||
|
|
||||||
|
**[English Version](README.md)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Schnellstart
|
||||||
|
|
||||||
|
### Mit Podman (Empfohlen)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Repository klonen
|
||||||
|
git clone git@gitea.ragtag.rocks:b0rbor4d/research-bridge.git
|
||||||
|
cd research-bridge
|
||||||
|
|
||||||
|
# Alle Services starten
|
||||||
|
podman-compose up -d
|
||||||
|
|
||||||
|
# Health-Check
|
||||||
|
curl http://localhost:8000/health
|
||||||
|
```
|
||||||
|
|
||||||
|
### Manuelle Einrichtung
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Repository klonen und einrichten
|
||||||
|
python -m venv .venv
|
||||||
|
source .venv/bin/activate
|
||||||
|
pip install -e ".[dev]"
|
||||||
|
|
||||||
|
# SearXNG starten
|
||||||
|
docker-compose -f config/searxng-docker-compose.yml up -d
|
||||||
|
|
||||||
|
# Konfigurieren
|
||||||
|
export RESEARCH_BRIDGE_KIMI_API_KEY="sk-kimi-..."
|
||||||
|
|
||||||
|
# Starten
|
||||||
|
python -m src.main
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📡 API-Nutzung
|
||||||
|
|
||||||
|
### Health Check
|
||||||
|
```bash
|
||||||
|
curl http://localhost:8000/health
|
||||||
|
```
|
||||||
|
|
||||||
|
### Suche (Passthrough)
|
||||||
|
```bash
|
||||||
|
curl "http://localhost:8000/search?q=python+async+best+practices"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Recherche mit Synthese
|
||||||
|
```bash
|
||||||
|
curl -X POST http://localhost:8000/research \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{
|
||||||
|
"query": "neue rust web frameworks 2024",
|
||||||
|
"depth": "shallow",
|
||||||
|
"max_results": 10
|
||||||
|
}'
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🏗️ Architektur
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────┐ ┌──────────────┐ ┌─────────────────┐
|
||||||
|
│ Client │────▶│ FastAPI │────▶│ SearXNG │
|
||||||
|
│ Request │ │ Research │ │ (Suche) │
|
||||||
|
└─────────────────┘ │ Bridge │ └─────────────────┘
|
||||||
|
└──────┬───────┘ │
|
||||||
|
│ │
|
||||||
|
▼ │
|
||||||
|
┌──────────────┐ │
|
||||||
|
│ Kimi for │◄─────────────┘
|
||||||
|
│ Coding │ Rohdaten
|
||||||
|
│ Synthese │
|
||||||
|
└──────┬───────┘
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
┌──────────────┐
|
||||||
|
│ Synthetisierte│
|
||||||
|
│ Antwort │
|
||||||
|
└──────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 Konfiguration
|
||||||
|
|
||||||
|
Umgebungsvariablen:
|
||||||
|
|
||||||
|
| Variable | Beschreibung | Standard |
|
||||||
|
|----------|-------------|----------|
|
||||||
|
| `RESEARCH_BRIDGE_KIMI_API_KEY` | Kimi for Coding API-Key | - |
|
||||||
|
| `RESEARCH_BRIDGE_SEARXNG_URL` | SearXNG Instanz-URL | `http://searxng:8080` |
|
||||||
|
| `RESEARCH_BRIDGE_RATE_LIMIT_RPM` | Rate-Limit (Anfragen/Min) | `60` |
|
||||||
|
| `RESEARCH_BRIDGE_LOG_LEVEL` | Log-Level | `info` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📁 Projektstruktur
|
||||||
|
|
||||||
|
```
|
||||||
|
research-bridge/
|
||||||
|
├── src/
|
||||||
|
│ ├── api/ # FastAPI Routen und Middleware
|
||||||
|
│ ├── search/ # SearXNG Client
|
||||||
|
│ ├── llm/ # Kimi for Coding Synthese
|
||||||
|
│ ├── models/ # Pydantic Modelle
|
||||||
|
│ └── middleware/ # Rate-Limiting, Auth
|
||||||
|
├── tests/ # Tests (Unit, Integration, E2E)
|
||||||
|
├── config/ # Docker und Einstellungen
|
||||||
|
├── docs/ # Dokumentation
|
||||||
|
├── Containerfile # Podman/Docker Build
|
||||||
|
└── podman-compose.yml # Vollständiger Stack
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧪 Tests
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Alle Tests ausführen
|
||||||
|
pytest
|
||||||
|
|
||||||
|
# Mit Coverage
|
||||||
|
pytest --cov=src --cov-report=html
|
||||||
|
|
||||||
|
# Spezifische Test-Kategorien
|
||||||
|
pytest tests/unit/ # Schnell, gemockt
|
||||||
|
pytest tests/integration/ # Mit echtem SearXNG
|
||||||
|
pytest tests/e2e/ # Komplette Pipeline
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 Dokumentation
|
||||||
|
|
||||||
|
- [Technical Design Document](docs/TDD.md) - Vollständige Spezifikation (EN)
|
||||||
|
- [AI Council Review](docs/AI_COUNCIL_REVIEW.md) - Architektur-Review (EN)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🤝 Warum Research Bridge?
|
||||||
|
|
||||||
|
| Service | Kosten pro 1K Anfragen | Self-hosted | Datenschutz |
|
||||||
|
|---------|------------------------|-------------|-------------|
|
||||||
|
| Perplexity Pro | ~$20/Monat | ❌ | ❌ |
|
||||||
|
| OpenAI GPT-4 | ~$10-30 | ❌ | ❌ |
|
||||||
|
| **Research Bridge** | **$0** | ✅ | ✅ |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📜 Lizenz
|
||||||
|
|
||||||
|
MIT © 2024 Florian Hartmann / Insight-IT GmbH
|
||||||
152
README.md
152
README.md
@@ -2,56 +2,166 @@
|
|||||||
|
|
||||||
SearXNG + Kimi for Coding research pipeline. Self-hosted alternative to Perplexity with **$0 running costs**.
|
SearXNG + Kimi for Coding research pipeline. Self-hosted alternative to Perplexity with **$0 running costs**.
|
||||||
|
|
||||||
## Quick Start
|
[](https://www.python.org/downloads/)
|
||||||
|
[](https://opensource.org/licenses/MIT)
|
||||||
|
[](https://podman.io/)
|
||||||
|
|
||||||
|
**[Deutsche Version](README.de.md)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Quick Start
|
||||||
|
|
||||||
|
### With Podman (Recommended)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 1. Clone and setup
|
# Clone repository
|
||||||
cd ~/data/workspace/projects/research-bridge
|
git clone git@github.com:B0rbor4d/research-bridge.git
|
||||||
|
cd research-bridge
|
||||||
|
|
||||||
|
# Start all services
|
||||||
|
podman-compose up -d
|
||||||
|
|
||||||
|
# Check health
|
||||||
|
curl http://localhost:8000/health
|
||||||
|
```
|
||||||
|
|
||||||
|
### Manual Setup
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clone and setup
|
||||||
python -m venv .venv
|
python -m venv .venv
|
||||||
source .venv/bin/activate
|
source .venv/bin/activate
|
||||||
pip install -e ".[dev]"
|
pip install -e ".[dev]"
|
||||||
|
|
||||||
# 2. Start SearXNG
|
# Start SearXNG
|
||||||
docker-compose -f config/searxng-docker-compose.yml up -d
|
docker-compose -f config/searxng-docker-compose.yml up -d
|
||||||
|
|
||||||
# 3. Configure
|
# Configure
|
||||||
export RESEARCH_BRIDGE_KIMI_API_KEY="sk-kimi-..."
|
export RESEARCH_BRIDGE_KIMI_API_KEY="sk-kimi-..."
|
||||||
|
|
||||||
# 4. Run
|
# Run
|
||||||
python -m src.main
|
python -m src.main
|
||||||
```
|
```
|
||||||
|
|
||||||
## Usage
|
---
|
||||||
|
|
||||||
|
## 📡 API Usage
|
||||||
|
|
||||||
|
### Health Check
|
||||||
|
```bash
|
||||||
|
curl http://localhost:8000/health
|
||||||
|
```
|
||||||
|
|
||||||
|
### Search (Passthrough)
|
||||||
|
```bash
|
||||||
|
curl "http://localhost:8000/search?q=python+async+best+practices"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Research with Synthesis
|
||||||
```bash
|
```bash
|
||||||
curl -X POST http://localhost:8000/research \
|
curl -X POST http://localhost:8000/research \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d '{"query": "latest rust web frameworks", "depth": "shallow"}'
|
-d '{
|
||||||
|
"query": "latest rust web frameworks 2024",
|
||||||
|
"depth": "shallow",
|
||||||
|
"max_results": 10
|
||||||
|
}'
|
||||||
```
|
```
|
||||||
|
|
||||||
## Documentation
|
---
|
||||||
|
|
||||||
- [Technical Design Document](docs/TDD.md) - Complete specification
|
## 🏗️ Architecture
|
||||||
- [AI Council Review](docs/AI_COUNCIL_REVIEW.md) - Architecture review
|
|
||||||
|
|
||||||
## Project Structure
|
```
|
||||||
|
┌─────────────────┐ ┌──────────────┐ ┌─────────────────┐
|
||||||
|
│ Client │────▶│ FastAPI │────▶│ SearXNG │
|
||||||
|
│ Request │ │ Research │ │ (Search) │
|
||||||
|
└─────────────────┘ │ Bridge │ └─────────────────┘
|
||||||
|
└──────┬───────┘ │
|
||||||
|
│ │
|
||||||
|
▼ │
|
||||||
|
┌──────────────┐ │
|
||||||
|
│ Kimi for │◄─────────────┘
|
||||||
|
│ Coding │ Raw Results
|
||||||
|
│ Synthesis │
|
||||||
|
└──────┬───────┘
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
┌──────────────┐
|
||||||
|
│ Synthesized │
|
||||||
|
│ Response │
|
||||||
|
└──────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 Configuration
|
||||||
|
|
||||||
|
Environment variables:
|
||||||
|
|
||||||
|
| Variable | Description | Default |
|
||||||
|
|----------|-------------|---------|
|
||||||
|
| `RESEARCH_BRIDGE_KIMI_API_KEY` | Kimi for Coding API key | - |
|
||||||
|
| `RESEARCH_BRIDGE_SEARXNG_URL` | SearXNG instance URL | `http://searxng:8080` |
|
||||||
|
| `RESEARCH_BRIDGE_RATE_LIMIT_RPM` | Rate limit (requests/min) | `60` |
|
||||||
|
| `RESEARCH_BRIDGE_LOG_LEVEL` | Logging level | `info` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📁 Project Structure
|
||||||
|
|
||||||
```
|
```
|
||||||
research-bridge/
|
research-bridge/
|
||||||
├── src/
|
├── src/
|
||||||
│ ├── api/ # FastAPI routes
|
│ ├── api/ # FastAPI routes and middleware
|
||||||
│ ├── search/ # SearXNG client
|
│ ├── search/ # SearXNG client
|
||||||
│ ├── llm/ # Kimi for Coding synthesizer
|
│ ├── llm/ # Kimi for Coding synthesizer
|
||||||
│ ├── models/ # Pydantic models
|
│ ├── models/ # Pydantic models
|
||||||
│ └── middleware/ # Rate limiting, auth
|
│ └── middleware/ # Rate limiting, auth
|
||||||
├── tests/
|
├── tests/ # Test suite (unit, integration, e2e)
|
||||||
│ ├── unit/ # Mocked, isolated
|
├── config/ # Docker and settings
|
||||||
│ ├── integration/ # With real SearXNG
|
├── docs/ # Documentation
|
||||||
│ └── e2e/ # Full flow
|
├── Containerfile # Podman/Docker build
|
||||||
├── config/ # Docker, settings
|
└── podman-compose.yml # Full stack deployment
|
||||||
└── docs/ # Documentation
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## License
|
---
|
||||||
|
|
||||||
MIT
|
## 🧪 Testing
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Run all tests
|
||||||
|
pytest
|
||||||
|
|
||||||
|
# With coverage
|
||||||
|
pytest --cov=src --cov-report=html
|
||||||
|
|
||||||
|
# Specific test categories
|
||||||
|
pytest tests/unit/ # Fast, mocked
|
||||||
|
pytest tests/integration/ # With real SearXNG
|
||||||
|
pytest tests/e2e/ # Full pipeline
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 Documentation
|
||||||
|
|
||||||
|
- [Technical Design Document](docs/TDD.md) - Complete specification
|
||||||
|
- [AI Council Review](docs/AI_COUNCIL_REVIEW.md) - Architecture review
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🤝 Why Research Bridge?
|
||||||
|
|
||||||
|
| Service | Cost per 1K queries | Self-hosted | Privacy |
|
||||||
|
|---------|---------------------|-------------|---------|
|
||||||
|
| Perplexity Pro | ~$20/month | ❌ | ❌ |
|
||||||
|
| OpenAI GPT-4 | ~$10-30 | ❌ | ❌ |
|
||||||
|
| **Research Bridge** | **$0** | ✅ | ✅ |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📜 License
|
||||||
|
|
||||||
|
MIT © 2024 Florian Hartmann / Insight-IT GmbH
|
||||||
|
|||||||
Reference in New Issue
Block a user