Partager via


Outil de recherche d’index pour Azure Machine Learning (préversion)

L’outil Recherche d’index de flux d’invite permet l’utilisation d’index vectoriels courants (comme Recherche Azure AI, FAISS et Pinecone) pour la génération augmentée de récupération (RAG) dans le flux d’invite. L’outil détecte automatiquement les index dans l’espace de travail, et permet d’utiliser la sélection de l’index dans le flux.

Important

L’outil de recherche d’index est actuellement en préversion publique. Cette préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.

Générer avec l’outil Recherche d’index

  1. Créez ou ouvrez un flux dans Azure Machine Learning studio. Pour obtenir plus d’informations, consultez l’article Créer un flux.

  2. Sélectionner + Autres outils>Recherche d’index pour ajouter l’outil Recherche d’index à votre flux.

    Capture d’écran du bouton Autres outils et liste déroulante montrant l’outil Recherche d’index dans Azure Machine Learning studio.

    Capture d’écran de l’outil de recherche d’index ajouté à un flux dans Azure Machine Learning studio.

  3. Entrez des valeurs pour les paramètres d’entrée de l’outil Recherche d’index. L’outil LLM peut générer l’entrée vectorielle.

  4. Ajoutez d’autres outils à votre flux en fonction de vos besoins, ou sélectionnez Exécuter pour exécuter le flux.

  5. Pour en savoir plus sur la sortie retournée, consultez Sorties.

Entrées

Les paramètres d’entrée disponibles sont les suivants :

Nom Type Description Obligatoire
mlindex_content string Type d’index à utiliser. L’entrée dépend du type d’index. Vous trouverez un exemple de JSON d’index Recherche cognitive Azure sous le tableau* Oui
queries string, Union[string, List[String]] Le texte à interroger. Oui
query_type string Type de requête à effectuer. Les options incluent Mot clé, Sémantique, Hybride, etc. Oui
top_k entier Le nombre d’entités ayant obtenu le meilleur score à retourner. La valeur par défaut est 3. Non

*Exemple JSON Recherche cognitive Azure :

embeddings:
  api_base: <api_base>
  api_type: azure
  api_version: 2023-07-01-preview
  batch_size: '1'
  connection:
    id: /subscriptions/<subscription>/resourceGroups/<resource_group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace> /connections/<AOAI_connection>
  connection_type: workspace_connection
  deployment: <embedding_deployment>
  dimension: <embedding_model_dimension>
  kind: open_ai
  model: <embedding_model>
  schema_version: <version>
index:
  api_version: 2023-07-01-Preview
  connection:
    id: /subscriptions/<subscription>/resourceGroups/<resource_group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace> /connections/<cogsearch_connection>
  connection_type: workspace_connection
  endpoint: <cogsearch_endpoint>
  engine: azure-sdk
  field_mapping:
    content: id
    embedding: content_vector_open_ai
    metadata: id
  index: <index_name>
  kind: acs
  semantic_configuration_name: azureml-default



Sorties

La réponse au format JSON suivante est un exemple retourné par l’outil qui inclut les entités ayant obtenu le meilleur score. L’entité suit un schéma générique du résultat de la recherche vectorielle fourni par le kit SDK promptflow-vectordb. Pour la recherche d’index vectoriel, les champs suivants sont renseignés :

Nom du champ Type Description
métadonnées dict Paires clé-valeur personnalisées fournies par l’utilisateur lors de la création de l’index
page_content string Contenu du segment vectoriel utilisé dans la recherche
score float Dépend du type d’index défini dans l’index vectoriel. Si le type d’index est Faiss, le score est la distance L2. Si le type d’index est Recherche Azure AI, le score est une similarité cosinus.
[
  {
    "metadata":{
      "answers":{},
      "captions":{
        "highlights":"sample_highlight1",
        "text":"sample_text1"
      },
      "page_number":44,
      "source":{
        "filename":"sample_file1.pdf",
        "mtime":1686329994,
        "stats":{
          "chars":4385,
          "lines":41,
          "tiktokens":891
        },
        "url":"sample_url1.pdf"
      },
      "stats":{
        "chars":4385,"lines":41,"tiktokens":891
      }
    },
    "page_content":"vector chunk",
    "score":0.021349556744098663
  },

  {
    "metadata":{
      "answers":{},
      "captions":{
        "highlights":"sample_highlight2",
        "text":"sample_text2"
      },
      "page_number":44,
      "source":{
        "filename":"sample_file2.pdf",
        "mtime":1686329994,
        "stats":{
          "chars":4385,
          "lines":41,
          "tiktokens":891
        },
        "url":"sample_url2.pdf"
      },
      "stats":{
        "chars":4385,"lines":41,"tiktokens":891
      }
    },
    "page_content":"vector chunk",
    "score":0.021349556744098663
  },
    
]

Comment migrer des outils hérités vers l’outil Recherche d’index

L’outil Recherche d’index cherche à remplacer les trois outils d’index hérités déconseillés, l’outil Recherche d’index vectoriel, l’outil Recherche de base de données vectorielle et l’outil Recherche d’index Faiss. Si vous disposez d’un flux qui contient l’un de ces outils, suivez les étapes ci-dessous pour mettre à niveau votre flux.

Mettre à niveau vos outils

  1. Mettez à jour votre runtime.

  2. Accédez à votre flux. Pour ce faire, sélectionnez l’onglet Flux d’invite sous Création, en sélectionnant l’onglet de tableau croisé dynamique Flux, puis en sélectionnant le nom de votre flux.

  3. Une fois dans le flux, cliquez sur le bouton « + Autres outils » près du haut du volet. Une liste déroulante doit s’ouvrir et vous pouvez sélectionner Recherche d’index [préversion] pour ajouter une instance de l’outil Recherche d’index.

    Capture d’écran de la liste déroulante Plus d’outils dans le flux d’invite.

  4. Nommez le nouveau nœud, puis cliquez sur « Ajouter ».

    Capture d’écran du nœud de recherche d’index portant un nom.

  5. Dans le nouveau nœud, sélectionnez la zone de texte « mlindex_content ». Il doit s’agir de la première zone de texte de la liste.

    Capture d’écran du nœud de recherche d’index développé avec la zone mlindex_content soulignée en rouge.

  6. Dans le tiroir Générer qui s’affiche, suivez les instructions au-dessous pour effectuer une mise à niveau à partir des trois outils hérités :

    • Si vous utilisez l’outil de recherche d’index vectoriel hérité, sélectionnez « Index inscrit » dans la liste déroulante « index_type ». Sélectionnez votre ressource d’index vectoriel dans la liste déroulante « mlindex_asset_id ».
    • Si vous utilisez l’outil de recherche d’index Faiss hérité, sélectionnez « Faiss » dans la liste déroulante « index_type » et spécifiez le même chemin que dans l’outil hérité.
    • Si vous utilisez l’outil de recherche de bases de données vectorielles hérité, sélectionnez Recherche IA ou Pinecone en fonction du type de base de données dans la liste déroulante « index_type » et renseignez les informations si nécessaire.
  7. Après avoir renseigné les informations nécessaires, sélectionnez Enregistrer.

  8. Lorsque vous revenez au nœud, des informations doivent être renseignées dans la zone de texte « mlindex_content ». Sélectionnez la zone de texte « requêtes » suivante, puis sélectionnez les termes de recherche à interroger. Vous devrez sélectionner la même valeur que l’entrée du nœud « embed_the_question », généralement « ${input.question} » ou « ${modify_query_with_history.output} » (le premier si vous êtes dans un flux standard et le second si vous êtes dans un flux de conversation).

    Capture d’écran du nœud de recherche d’index développé avec des informations sur l’index dans les cellules.

  9. Sélectionnez un type de requête en cliquant sur la liste déroulante en regard de « query_type ». « Vecteur » génère des résultats identiques au flux hérité, mais en fonction de votre configuration d’index, d’autres options, notamment « Hybride » et « Sémantique » pourraient être disponibles.

    Capture d’écran du nœud de recherche d’index développé avec l’élément recherche vectorielle souligné en rouge.

  10. Modifiez les composants en aval pour consommer la sortie de votre nœud nouvellement ajouté, au lieu de la sortie du nœud de recherche d’index vectoriel hérité.

  11. Supprimez le nœud de recherche d’index vectoriel et son nœud d’incorporation parent.

Étapes suivantes