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’expiration et les stratégies de nouvelle tentative :
from mistralai.search.toolkit.plugins.vespa import VespaClientConfig
from vespa_app import app
collection_name = "my_collection"
config = VespaClientConfig(
endpoint="http://localhost:8080",
# Advanced options
timeout=30, # Request timeout in seconds
max_retries=3, # Retry failed requests
verify_ssl=True, # Verify TLS certificates
)
vector_store = app.get_search_index(config, collection_name=collection_name)Paramètres de connexion :
| Paramètre | Rôle | Valeur par défaut |
|---|---|---|
endpoint | URL de l’endpoint de requête Vespa | Obligatoire |
timeout | Délai d’expiration des requêtes en secondes | 30 |
max_retries | Tentatives automatiques en cas d’échec | 3 |
verify_ssl | Vérifier les 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,
# Custom CA certificate
ca_cert_path="/path/to/ca-bundle.pem",
)
vector_store = app.get_search_index(config, collection_name="my_collection")Vérifications de santé et disponibilité
Vérifications de santé et disponibilité
Avant d’ingérer des données ou d’effectuer des requêtes, vérifiez que Vespa est prêt :
import asyncio
import aiohttp
from mistralai.search.toolkit.plugins.vespa import VespaClientConfig
from vespa_app import app
async def wait_for_vespa(endpoint: str, max_attempts=30):
"""Wait for Vespa to be ready for operations."""
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")
# Usage
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 de santé :
# Application status
curl http://localhost:8080/ApplicationStatus
# Document count in 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, suivez ces recommandations :
Configuration du cluster :
- Déployez au moins trois nœuds Vespa pour la redondance
- Répartissez les nœuds entre plusieurs zones de disponibilité
- Utilisez un équilibreur de charge avec des vérifications de santé devant les endpoints de requête
Configuration réseau :
- Utilisez des réseaux privés pour la communication entre nœuds
- Exposez l’endpoint de requête via un proxy inverse (nginx, Cloudflare, etc.)
- Mettez en place une limitation de débit et une protection DDoS
Exemple de configuration (configuration distribuée) :
from mistralai.search.toolkit.plugins.vespa import VespaClientConfig
from vespa_app import app
# Load balancer endpoint (single entry point)
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 d’ingestion et le débit
- Surveillez la latence des requêtes et les taux d’erreur
- Configurez des alertes en cas d’échec des vérifications de santé
- Surveillez l’utilisation du disque et la croissance de la taille de l’index
Voir aussi
Voir aussi
- Développement local : guide de configuration locale
- Gérer le schéma : créer et faire évoluer les schémas
- Documentation Vespa : configuration et opérations avancées