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
Créez ou ouvrez un flux dans Azure Machine Learning studio. Pour obtenir plus d’informations, consultez l’article Créer un flux.
Sélectionner + Autres outils>Recherche d’index pour ajouter l’outil Recherche d’index à votre flux.
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.
Ajoutez d’autres outils à votre flux en fonction de vos besoins, ou sélectionnez Exécuter pour exécuter le flux.
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
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.
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.
Nommez le nouveau nœud, puis cliquez sur « Ajouter ».
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.
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.
Après avoir renseigné les informations nécessaires, sélectionnez Enregistrer.
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).
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.
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é.
Supprimez le nœud de recherche d’index vectoriel et son nœud d’incorporation parent.