docs: alinear modelos a qwen2.5:7b + bge-m3 (iGPU activa)
Build & Deploy ResearchOwl / build-and-push (push) Successful in 14s

Generación 3B→7B y embeddings a bge-m3 en README, CLAUDE.md, .env.example y
k8s/deployment.yaml. Corregido el default buggy de config.py: ollama_embed_model
era qwen2.5:3b (un modelo de chat) → bge-m3. Añadido OLLAMA_EMBED_MODEL donde
faltaba. Nota del host público de ollama ahora tras Authentik.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ChemaVX
2026-07-23 09:54:58 +00:00
co-authored by Claude Opus 4.8
parent 6029bebae5
commit 9653898366
5 changed files with 12 additions and 9 deletions
+2 -1
View File
@@ -7,7 +7,8 @@ TELEGRAM_ALLOWED_USERS=123456789 # your Telegram user ID
# Ollama (default points to your existing instance) # Ollama (default points to your existing instance)
OLLAMA_URL=http://ollama.chemavx.xyz OLLAMA_URL=http://ollama.chemavx.xyz
OLLAMA_MODEL=qwen2.5:3b OLLAMA_MODEL=qwen2.5:7b
OLLAMA_EMBED_MODEL=bge-m3
# Claude fallback (optional, only for premium generation) # Claude fallback (optional, only for premium generation)
# ANTHROPIC_API_KEY=sk-ant-... # ANTHROPIC_API_KEY=sk-ant-...
+3 -3
View File
@@ -2,13 +2,13 @@
## Contexto del proyecto ## Contexto del proyecto
Eres el agente de construcción e implementación de **ResearchOwl**, un bot de Telegram que realiza investigación exhaustiva sobre cualquier tema usando scraping recursivo y Ollama (qwen2.5:3b) para procesamiento y generación de contenido. Eres el agente de construcción e implementación de **ResearchOwl**, un bot de Telegram que realiza investigación exhaustiva sobre cualquier tema usando scraping recursivo, Ollama (qwen2.5:7b para scoring, bge-m3 para embeddings) y Claude para la generación de contenido.
El homelab donde se desplegará tiene: El homelab donde se desplegará tiene:
- **k3s** con Traefik + cert-manager + Cloudflare DNS - **k3s** con Traefik + cert-manager + Cloudflare DNS
- **ArgoCD** para GitOps (repo: `k8s-manifests` en Gitea) - **ArgoCD** para GitOps (repo: `k8s-manifests` en Gitea)
- **Gitea** en `git.chemavx.xyz` + Container Registry - **Gitea** en `git.chemavx.xyz` + Container Registry
- **Ollama** en `http://ollama.chemavx.xyz` con modelo `qwen2.5:3b` - **Ollama** (vía Service interno `ollama.ollama.svc.cluster.local:11434`): `qwen2.5:7b` para scoring y `bge-m3` para embeddings. Nota: el host público `ollama.chemavx.xyz` está tras Authentik desde 2026-07-23; los consumidores del cluster van por el Service.
- **Telegram bot** ya existente en `@chemavx_bot` - **Telegram bot** ya existente en `@chemavx_bot`
- Dominio base: `chemavx.xyz` - Dominio base: `chemavx.xyz`
@@ -321,6 +321,6 @@ Uso desde Telegram:
- **No crear un bot de Telegram nuevo** — el usuario ya tiene `@chemavx_bot`. Solo necesita configurar el token en el secret de k3s. - **No crear un bot de Telegram nuevo** — el usuario ya tiene `@chemavx_bot`. Solo necesita configurar el token en el secret de k3s.
- **No modificar** los manifests de k8s para añadir Ingress — el bot usa polling de Telegram, no necesita exponer ningún puerto. - **No modificar** los manifests de k8s para añadir Ingress — el bot usa polling de Telegram, no necesita exponer ningún puerto.
- **Ollama** ya está corriendo en el cluster. La URL `http://ollama.chemavx.xyz` es correcta. - **Ollama** ya está corriendo en el cluster. La URL `http://ollama.chemavx.xyz` es correcta.
- Si `qwen2.5:3b` es lento para scoring de calidad, se puede desactivar el scoring con `QUALITY_THRESHOLD=0` y todos los chunks pasan directamente. - Si `qwen2.5:7b` es lento para scoring de calidad, se puede desactivar el scoring con `QUALITY_THRESHOLD=0` y todos los chunks pasan directamente.
- El proyecto usa **SQLite** (coherente con el resto del homelab). - El proyecto usa **SQLite** (coherente con el resto del homelab).
- Respetar el `REQUEST_DELAY=1.0` para no hacer ban en las fuentes. - Respetar el `REQUEST_DELAY=1.0` para no hacer ban en las fuentes.
+2 -2
View File
@@ -18,7 +18,7 @@ ExhaustiveScraper
├── PDFs (public documents) ├── PDFs (public documents)
└── Web scraping (trafilatura) └── Web scraping (trafilatura)
↓ recursive expansion (depth 1-3) ↓ recursive expansion (depth 1-3)
ContentProcessor (Ollama qwen2.5:3b) ContentProcessor (Ollama qwen2.5:7b + bge-m3 embeddings)
├── Chunking (800 token chunks, 100 overlap) ├── Chunking (800 token chunks, 100 overlap)
├── Quality scoring (0-10 per chunk) ├── Quality scoring (0-10 per chunk)
├── Embeddings (cosine similarity RAG) ├── Embeddings (cosine similarity RAG)
@@ -102,7 +102,7 @@ git add . && git commit -m "feat: add researchowl" && git push
## Notes ## Notes
- Uses **qwen2.5:3b** (your existing Ollama) for all AI tasks — zero API cost - Uses **qwen2.5:7b** (scoring) and **bge-m3** (embeddings) on your existing Ollama — zero API cost
- Optionally add `ANTHROPIC_API_KEY` for Claude fallback on generation - Optionally add `ANTHROPIC_API_KEY` for Claude fallback on generation
- SQLite database stored in `/data/researchowl.db` - SQLite database stored in `/data/researchowl.db`
- All outputs saved to DB and available via `/outputs` - All outputs saved to DB and available via `/outputs`
+3 -1
View File
@@ -53,7 +53,9 @@ spec:
- name: OLLAMA_URL - name: OLLAMA_URL
value: "http://ollama.chemavx.xyz" value: "http://ollama.chemavx.xyz"
- name: OLLAMA_MODEL - name: OLLAMA_MODEL
value: "qwen2.5:3b" value: "qwen2.5:7b"
- name: OLLAMA_EMBED_MODEL
value: "bge-m3"
- name: DB_PATH - name: DB_PATH
value: "/data/researchowl.db" value: "/data/researchowl.db"
- name: MAX_SOURCES - name: MAX_SOURCES
+2 -2
View File
@@ -17,8 +17,8 @@ class Settings(BaseSettings):
# Ollama # Ollama
ollama_url: str = Field("http://ollama.chemavx.xyz") ollama_url: str = Field("http://ollama.chemavx.xyz")
ollama_model: str = Field("qwen2.5:3b") ollama_model: str = Field("qwen2.5:7b")
ollama_embed_model: str = Field("qwen2.5:3b") ollama_embed_model: str = Field("bge-m3")
# Claude fallback (optional) # Claude fallback (optional)
anthropic_api_key: Optional[str] = Field(None) anthropic_api_key: Optional[str] = Field(None)