Passer au contenu principal

Vue d’ensemble

Les embeddings sont des vecteurs numériques qui capturent le sens sémantique du texte. Ils permettent d’effectuer des opérations mathématiques sur le texte, par exemple mesurer la « distance » ou la « similarité » entre différents segments. Ils sont une brique de base pour de nombreuses applications d’IA : recherche sémantique, clustering, recommandations, détection d’anomalies et classification. YouRouter donne accès à des modèles d’embedding leaders via une API simple et unifiée.

Utilisation

from openai import OpenAI

client = OpenAI(
    api_key="your-api-key-here",
    base_url="https://api.yourouter.ai/v1"
)

response = client.embeddings.create(
    input="The quick brown fox jumps over the lazy dog",
    model="text-embedding-ada-002" # A popular and efficient model
)

embedding = response.data[0].embedding
print(f"Embedding dimensions: {len(embedding)}")
# Example Output: Embedding dimensions: 1536

Traitement par lots

Pour plus d’efficacité, vous pouvez passer un tableau de chaînes au paramètre input pour générer plusieurs embeddings en une seule requête.
response = client.embeddings.create(
    input=[
        "First sentence to embed.",
        "Another sentence for batch processing."
    ],
    model="text-embedding-ada-002"
)

for i, data in enumerate(response.data):
    print(f"Embedding for input {i+1}: {len(data.embedding)} dimensions")

Paramètres

input
string or array
requis
Le ou les textes à encoder. Peut être une seule chaîne ou un tableau de chaînes pour le traitement par lots.
model
string
requis
L’ID du modèle d’embedding à utiliser (par ex. text-embedding-ada-002).
encoding_format
string
défaut:"float"
Format des embeddings renvoyés : float ou base64. Le base64 réduit la taille du JSON.
user
string
Identifiant unique de l’utilisateur final, utile pour la surveillance et la détection d’abus.

Cas d’usage

Recherche sémantique

Au lieu d’un simple appariement par mots-clés, la recherche sémantique trouve des résultats contextuellement liés à la requête, même sans mots identiques. On compare l’embedding de la requête aux embeddings des documents.
import numpy as np
from scipy.spatial.distance import cosine

# Assume 'client' is an initialized OpenAI client

# 1. Example documents to search through
documents = [
    "The sky is blue and beautiful.",
    "The sun is the star at the center of the Solar System.",
    "Artificial intelligence will reshape our world."
]

# 2. Generate embeddings for all documents (in a real app, you'd store these)
doc_embeddings = [
    client.embeddings.create(input=doc, model="text-embedding-ada-002").data[0].embedding
    for doc in documents
]

# 3. User's search query
query = "What is the future of AI?"

# 4. Generate embedding for the query
query_embedding = client.embeddings.create(input=query, model="text-embedding-ada-002").data[0].embedding

# 5. Calculate cosine similarity between the query and each document
# (1 - cosine distance is cosine similarity)
similarities = [1 - cosine(query_embedding, doc_emb) for doc_emb in doc_embeddings]

# 6. Find the most similar document
most_similar_index = np.argmax(similarities)

print(f"Query: '{query}'")
print(f"Most similar document: '{documents[most_similar_index]}'")
# Expected Output: Most similar document: 'Artificial intelligence will reshape our world.'

Classification et clustering

Les embeddings constituent de puissantes caractéristiques pour les modèles d’apprentissage automatique : classifieurs (analyse de sentiments, catégories de sujets) ou algorithmes de clustering pour regrouper des éléments similaires.

Bonnes pratiques

Les modèles d’embedding modernes sont robustes ; pour certaines applications, un prétraitement léger (nettoyage de caractères, normalisation) peut aider. Évitez un stemming agressif ou la suppression systématique des mots vides, qui peut faire perdre du contexte.
Pour encoder plusieurs textes, utilisez toujours le traitement par lots en passant un tableau de chaînes. Cela réduit fortement la latence en limitant les allers-retours réseau.
Si vous encodez souvent les mêmes textes (requêtes populaires, titres de documents), ajoutez une couche de cache (Redis, cache mémoire) pour stocker et réutiliser les embeddings. Moins d’appels API, coûts réduits, meilleures performances.

Passer à l’échelle : bases de données vectorielles

Au-delà de quelques milliers d’embeddings, une recherche de similarité naïve devient lente. Les bases de données vectorielles sont conçues pour stocker et rechercher des millions voire des milliards d’embeddings rapidement, avec des index (HNSW, IVF, etc.) pour des recherches de plus proches voisins approximatives (ANN), bon compromis vitesse / précision. Exemples courants :
  • Cloud : Pinecone, Zilliz Cloud
  • Open source / auto-hébergé : Weaviate, Milvus, Chroma, Qdrant