Déploiement en production et exploitation des applications Vespa.
VespaClientConfig
VespaClientConfig
Configurez le backend de recherche avec les paramètres de connexion, les délais d’attente et les stratégies de reprise :
from mistralai.search.toolkit.plugins.vespa import VespaClientConfig
from vespa_app import app
collection_name = "my_collection"
config = VespaClientConfig(
endpoint="http://localhost:8080",
# Options avancées
timeout=30, # Délai d’attente de la requête en secondes
max_retries=3, # Reprise automatique des requêtes échouées
verify_ssl=True, # Vérification des certificats TLS
)
vector_store = app.get_search_index(config, collection_name=collection_name)Paramètres de connexion :
| Paramètre | Utilité | Par défaut |
|---|---|---|
endpoint | URL de l’endpoint de requête Vespa | Obligatoire |
timeout | Délai d’attente de la requête (secondes) | 30 |
max_retries | Nombre de tentatives automatiques après échec | 3 |
verify_ssl | Vérification des certificats TLS | True |
Configuration TLS/SSL (production) :
from mistralai.search.toolkit.plugins.vespa import VespaClientConfig
from vespa_app import app
config = VespaClientConfig(
endpoint="https://vespa.example.com:8080",
verify_ssl=True,
# Certificat CA personnalisé
ca_cert_path="/path/to/ca-bundle.pem",
)
vector_store = app.get_search_index(config, collection_name="my_collection")Vérification d’état et disponibilité
Vérification d’état et disponibilité
Avant toute ingestion ou requête, vérifiez que Vespa est prêt :
import asyncio
from mistralai.search.toolkit.plugins.vespa import VespaClientConfig
from vespa_app import app
async def wait_for_vespa(endpoint: str, max_attempts=30):
"""Attend que Vespa soit prêt à fonctionner."""
for attempt in range(max_attempts):
try:
async with aiohttp.ClientSession() as session:
async with session.get(
f"{endpoint}/ApplicationStatus",
timeout=5
) as resp:
if resp.status == 200:
print("Vespa is ready")
return True
except Exception as e:
print(f"Attempt {attempt + 1}: {e}")
await asyncio.sleep(2)
raise RuntimeError("Vespa failed to become ready")
# Utilisation
endpoint = "http://localhost:8080"
await wait_for_vespa(endpoint)
config = VespaClientConfig(endpoint=endpoint)
vector_store = app.get_search_index(config, collection_name="my_collection")Endpoints de vérification d’état :
# Statut de l’application
curl http://localhost:8080/ApplicationStatus
# Nombre de documents dans une collection
curl "http://localhost:8080/search/?yql=select%20*%20from%20my_collection%20limit%201"Déploiement en production
Déploiement en production
Pour les environnements de production, appliquez les recommandations suivantes :
Configuration du cluster :
- Déployez au moins 3 nœuds Vespa pour la redondance
- Répartissez les nœuds entre différentes zones de disponibilité
- Placez un load balancer avec vérification d’état devant les endpoints de requête
Configuration réseau :
- Utilisez des réseaux privés pour la communication inter-nœuds
- Exposez l’endpoint de requête via un reverse proxy (nginx, Cloudflare, etc.)
- Mettez en place une limitation de débit et une protection DDoS
Exemple de configuration (déploiement distribué) :
from mistralai.search.toolkit.plugins.vespa import VespaClientConfig
from vespa_app import app
# Endpoint du load balancer (point d’entrée unique)
config = VespaClientConfig(
endpoint="https://vespa-lb.example.com",
timeout=30,
max_retries=3,
verify_ssl=True,
)
vector_store = app.get_search_index(config, collection_name="my_collection")Supervision :
- Suivez la latence et le débit d’ingestion
- Surveillez la latence des requêtes et les taux d’erreur
- Définissez des alertes sur les échecs de vérification d’état
- Contrôlez l’utilisation du disque et l’évolution de la taille de l’index
Voir aussi
Voir aussi
- Développement local — Guide d’installation locale
- Gérer avec les migrations — Création et évolution des schémas
- Documentation officielle Vespa — Paramétrage avancé et exploitation