Files
microdao-daarion/services/rag-service/app/embedding.py
Apple 0c8bef82f4 feat: Add Alateya, Clan, Eonarch agents + fix gateway-router connection
## Agents Added
- Alateya: R&D, biotech, innovations
- Clan (Spirit): Community spirit agent
- Eonarch: Consciousness evolution agent

## Changes
- docker-compose.node1.yml: Added tokens for all 3 new agents
- gateway-bot/http_api.py: Added configs and webhook endpoints
- gateway-bot/clan_prompt.txt: New prompt file
- gateway-bot/eonarch_prompt.txt: New prompt file

## Fixes
- Fixed ROUTER_URL from :9102 to :8000 (internal container port)
- All 9 Telegram agents now working

## Documentation
- Created PROJECT-MASTER-INDEX.md - single entry point
- Added various status documents and scripts

Tokens configured:
- Helion, NUTRA, Agromatrix (existing)
- Alateya, Clan, Eonarch (new)
- Druid, GreenFood, DAARWIZZ (configured)
2026-01-28 06:40:34 -08:00

49 lines
1.4 KiB
Python

"""
Embedding service for RAG
Uses SentenceTransformers via Haystack
"""
import logging
from typing import Optional, List, Dict, Any
from sentence_transformers import SentenceTransformer
from app.core.config import settings
logger = logging.getLogger(__name__)
class SimpleEmbedder:
def __init__(self, model_name: str, device: str) -> None:
self.model = SentenceTransformer(model_name, device=device)
def run(self, texts: Optional[List[str]] = None, text: Optional[str] = None) -> Dict[str, Any]:
if texts is not None:
embeddings = self.model.encode(texts, convert_to_numpy=True).tolist()
return {"embeddings": embeddings}
if text is not None:
embedding = self.model.encode([text], convert_to_numpy=True).tolist()
return {"embedding": embedding}
return {"embeddings": []}
# Global embedder instance
_text_embedder: Optional[SimpleEmbedder] = None
def get_text_embedder() -> SimpleEmbedder:
global _text_embedder
if _text_embedder is not None:
return _text_embedder
logger.info(f"Loading embedding model: {settings.EMBED_MODEL_NAME}")
logger.info(f"Device: {settings.EMBED_DEVICE}")
_text_embedder = SimpleEmbedder(settings.EMBED_MODEL_NAME, settings.EMBED_DEVICE)
logger.info("Text embedder initialized successfully")
return _text_embedder
def reset_embedder():
global _text_embedder
_text_embedder = None