TATECHATLAS
◎ Français
Intelligence artificielle

Comprendre la recherche sémantique : fonctionnement et pourquoi un texte similaire peut ne pas répondre à votre question

Explorez les principes de la recherche sémantique, sa dépendance aux plongements (embeddings) et les raisons pour lesquelles un texte qui semble similaire peut ne pas fournir la réponse souhaitée. Découvrez la recherche vectorielle, la recherche hybride et leurs applications dans la récupération d'informations.

Dans ce guide

La recherche sémantique, alimentée par des plongements vectoriels (embeddings), trouve des informations basées sur la similarité conceptuelle plutôt que sur la correspondance exacte des mots-clés. Elle fonctionne en convertissant du texte, des images ou d'autres contenus en vecteurs numériques. Lorsque vous effectuez une requête, votre entrée est également convertie en vecteur, et le système récupère le contenu dont les vecteurs sont les plus proches dans l'espace des plongements. Cela permet de faire correspondre des termes conceptuellement similaires (par exemple, 'chien' et 'canidé') et même du contenu multilingue. Cependant, la recherche sémantique n'est pas infaillible. Elle peut ne pas répondre à une question spécifique si les plongements sous-jacents ne capturent pas la nuance précise ou si les vecteurs les plus similaires n'abordent pas directement l'intention de la requête. La recherche hybride, combinant la recherche vectorielle avec la recherche traditionnelle par mots-clés, donne souvent de meilleurs résultats en tirant parti des forces des deux approches.

Qu'est-ce que la recherche sémantique ?

La recherche sémantique est une technique avancée de récupération d'informations qui va au-delà de la simple correspondance de mots-clés. Au lieu de rechercher des mots exacts dans un document, elle vise à comprendre le sens et le contexte derrière une requête. Cela lui permet de trouver des informations conceptuellement similaires, même si la formulation est différente. Par exemple, une recherche pour 'canidé' pourrait renvoyer des documents sur les 'chiens' car le système reconnaît leur relation sémantique. Cette capacité est cruciale pour gérer les synonymes, les concepts liés et même les différentes langues.

Le cœur de la recherche sémantique réside dans sa capacité à représenter numériquement le contenu. Ceci est réalisé grâce à des modèles de plongement (embedding models), qui transforment du texte, des images ou d'autres types de données en vecteurs de haute dimension. Ces vecteurs capturent l'essence sémantique du contenu. Lorsqu'une requête est formulée, elle est également convertie en vecteur, et le moteur de recherche trouve les vecteurs dans son index qui sont les plus proches du vecteur de requête dans cet espace multidimensionnel.

Comment fonctionne la recherche vectorielle

La recherche vectorielle est l'implémentation technique derrière la recherche sémantique. Elle implique l'indexation et l'interrogation de représentations numériques de contenu, connues sous le nom de plongements (embeddings) ou vecteurs. Pendant la phase d'indexation, le contenu est traité par des modèles de plongement pour générer ces vecteurs. Ces vecteurs sont ensuite stockés dans un index vectoriel spécialisé, utilisant souvent des algorithmes comme Hierarchical Navigable Small World (HNSW) ou exhaustive K Nearest Neighbors (eKNN) pour les organiser efficacement et placer les vecteurs similaires à proximité les uns des autres.

Lorsqu'un utilisateur soumet une requête, celle-ci est également convertie en vecteur en utilisant le même modèle de plongement ou un modèle compatible. Le système de recherche effectue alors une recherche de similarité, recherchant les 'k' plus proches voisins (kNN) - les vecteurs dans l'index qui sont mathématiquement les plus proches du vecteur de requête. Ce processus permet la correspondance basée sur la ressemblance conceptuelle, le contenu multilingue et même différentes modalités comme le texte et les images.

```python
# Example of generating an embedding (conceptual, actual implementation depends on the model provider)
from sentence_transformers import SentenceTransformer

# Load a pre-trained model
model = SentenceTransformer('all-MiniLM-L6-v2')

# Text to embed
text = "A photo of a cat sitting on a mat."

# Generate embedding
embedding = model.encode(text)

print(f"Embedding shape: {embedding.shape}")
# print(f"Embedding: {embedding}") # Uncomment to see the actual vector
```

**Explication :** Cet extrait de code Python montre comment un texte peut être converti en un vecteur numérique (plongement) à l'aide d'un modèle Sentence Transformer pré-entraîné. La méthode `encode` prend le texte et renvoie un tableau NumPy représentant sa signification sémantique. Ce vecteur serait ensuite stocké dans un index vectoriel pour la recherche.

Le rôle des plongements (Embeddings)

Les plongements sont la pierre angulaire de la recherche sémantique. Ce sont des représentations numériques, généralement des vecteurs denses, qui capturent le sens d'un élément de données, tel qu'un mot, une phrase ou une image. Ces vecteurs sont générés par des modèles d'apprentissage automatique entraînés sur de vastes quantités de données. Le processus d'entraînement garantit que les éléments sémantiquement similaires ont des vecteurs proches les uns des autres dans l'espace de plongement multidimensionnel, tandis que les éléments dissemblables ont des vecteurs éloignés.

Par exemple, les mots 'roi' et 'reine' pourraient avoir des vecteurs proches, et la différence vectorielle entre 'roi' et 'homme' pourrait être similaire à la différence vectorielle entre 'reine' et 'femme'. Cette propriété permet aux moteurs de recherche de comprendre les relations et les nuances du langage, permettant des résultats de recherche plus pertinents que les méthodes traditionnelles basées sur les mots-clés.

Pourquoi un texte similaire peut ne pas répondre à une question

Bien que la recherche sémantique excelle à trouver du contenu conceptuellement similaire, elle n'est pas infaillible. Une raison courante pour laquelle un texte similaire peut ne pas répondre à une question spécifique est que les plongements, tout en capturant le sens général, peuvent ne pas représenter précisément l'intention nuancée de la requête. Par exemple, une requête demandant 'la meilleure façon de cuire un gâteau' pourrait récupérer des documents sur les 'recettes de gâteaux' ou les 'techniques de pâtisserie', qui sont sémantiquement liés mais n'offrent pas de réponse directe à la méthode 'la meilleure'.

Un autre facteur est la qualité et la portée du modèle de plongement utilisé. Si le modèle n'a pas été entraîné sur des données pertinentes pour le domaine spécifique ou s'il présente des biais inhérents, ses plongements pourraient ne pas refléter avec précision les relations souhaitées. De plus, la manière dont le contenu est découpé (chunking) et vectorisé lors de l'indexation peut avoir un impact sur la récupération. Si une information cruciale est divisée entre plusieurs morceaux ou si le plongement d'un morceau pertinent ne correspond pas fortement au vecteur de requête, la réponse pourrait être manquée.

Recherche hybride : combiner les forces

Pour surmonter les limites de la recherche purement sémantique ou par mots-clés, la recherche hybride a émergé. Cette approche combine les forces de la recherche vectorielle et de la recherche plein texte traditionnelle (par mots-clés) au sein d'une seule requête. En exécutant les deux types de recherches en parallèle sur un index de recherche contenant à la fois des plongements et du texte brut, la recherche hybride peut exploiter la compréhension conceptuelle de la recherche vectorielle et la précision de la correspondance par mots-clés.

Les résultats des deux recherches sont ensuite fusionnés et reclassés, souvent à l'aide d'algorithmes comme Reciprocal Rank Fusion (RRF). Cette approche unifiée améliore considérablement la pertinence de la recherche. Par exemple, si vous recherchez un code produit spécifique (idéal pour la recherche par mots-clés) ainsi qu'une description générale du produit (idéal pour la recherche sémantique), la recherche hybride peut fournir un ensemble de résultats plus complet et précis.

```json
{
  "search": "historic hotel walk to restaurants",
  "vectorQueries": [
    {
      "kind": "vector",
      "vector": [ 0.1, 0.5, -0.2, ... ], 
      "k": 50,
      "fields": "DescriptionVector"
    }
  ],
  "queryType": "semantic",
  "semanticConfiguration": "my-semantic-config"
}
```

**Explication :** Cet extrait JSON illustre une structure de requête hybride. Le paramètre `search` gère la requête plein texte, tandis que `vectorQueries` spécifie les paramètres de recherche vectorielle. Le `queryType` et `semanticConfiguration` indiquent l'utilisation du classement sémantique. Cette approche combinée garantit que la pertinence des mots-clés et la similarité sémantique sont prises en compte.

Scénarios pris en charge

La recherche vectorielle et la recherche hybride prennent en charge un large éventail de scénarios. La recherche de similarité est fondamentale, permettant aux utilisateurs de trouver des éléments conceptuellement similaires. La recherche hybride est particulièrement puissante, fusionnant la recherche vectorielle et par mots-clés pour une pertinence améliorée, particulièrement utile pour les requêtes impliquant du jargon spécifique, des codes ou des noms.

La recherche multimodale étend cela en permettant des recherches entre différents types de contenu, tels que le texte et les images, à l'aide de plongements multimodaux (par exemple, CLIP). La recherche multilingue est également prise en charge, permettant aux requêtes dans une langue de trouver du contenu pertinent dans une autre, à condition que des modèles de plongement appropriés soient utilisés. La recherche vectorielle filtrée ajoute une autre couche de contrôle, permettant de combiner des requêtes vectorielles avec des filtres traditionnels sur des champs de métadonnées, affinant les résultats selon des critères spécifiques.

Intégration et disponibilité

Les capacités de recherche vectorielle sont intégrées dans des services tels qu'Azure AI Search. Cette intégration permet d'indexer, de stocker et d'interroger des plongements vectoriels directement au sein du service de recherche. Azure AI Search offre des options pour générer des plongements soit en interne dans un pipeline d'indexation (nécessitant des connexions à des services comme Azure OpenAI), soit en externe, où le contenu pré-vectorisé est poussé dans l'index de recherche.

La recherche vectorielle est généralement disponible dans toutes les régions et tous les niveaux Azure sans coût supplémentaire, bien que la génération des plongements elle-même puisse entraîner des frais de la part du fournisseur de modèle. L'accès est fourni via le portail Azure, les API REST et les SDK Azure. Il est important de noter que les anciens services de recherche (créés avant le 1er janvier 2019) pourraient ne pas prendre en charge les charges de travail vectorielles et pourraient nécessiter la création d'un nouveau service.

Limitations et considérations

Malgré sa puissance, la recherche sémantique présente des limitations. Comme discuté, un texte similaire ne fournira pas toujours la réponse précise si les plongements ne capturent pas l'intention ou la nuance spécifique de la requête. L'efficacité dépend également fortement de la qualité et de la pertinence du modèle de plongement utilisé et des données sur lesquelles il a été entraîné. Des modèles mal choisis ou des données d'entraînement insuffisantes peuvent conduire à des résultats sous-optimaux.

De plus, la recherche vectorielle est gourmande en calcul, nécessitant des techniques spécialisées d'indexation et d'interrogation. Bien que la recherche hybride atténue certains problèmes, il est crucial de comprendre que la recherche sémantique ne remplace pas l'exactitude factuelle ou le raisonnement logique. Elle excelle à trouver des informations connexes mais ne garantit pas intrinsèquement la correction ou l'applicabilité du contenu récupéré à un problème spécifique. Une ingénierie de prompt soignée et une validation des résultats sont souvent nécessaires, en particulier dans des applications comme la Génération Augmentée par Récupération (RAG).

Points à vérifier

  • Vérifiez que le modèle de plongement utilisé est approprié pour le domaine et la langue du contenu recherché.
  • Assurez-vous que le contenu est correctement découpé (chunked) avant l'intégration pour éviter de perdre le contexte ou de séparer des informations critiques.
  • Envisagez d'utiliser la recherche hybride pour combiner les forces de la correspondance sémantique et par mots-clés afin d'améliorer la précision.
  • Testez les requêtes avec des formulations variées pour comprendre comment la similarité sémantique se traduit par les résultats de récupération.
  • Évaluez la qualité des résultats récupérés en vérifiant s'ils répondent directement à l'intention de l'utilisateur, et pas seulement à la similarité conceptuelle.

Les capacités de recherche vectorielle, bien que largement disponibles, peuvent ne pas être prises en charge sur de très anciennes instances de service Azure AI Search créées avant le 1er janvier 2019. Les modèles de plongement spécifiques et leurs coûts associés sont externes au service de recherche lui-même. L'efficacité de la recherche sémantique dépend fortement de la qualité et des données d'entraînement du modèle de plongement choisi.

Sources

  1. Microsoft Learn: vector search ↗
  2. Microsoft Learn: hybrid search ↗
Retour en haut ↑