Strumento ricerca indice per Azure Machine Learning (anteprima)
Lo strumento Index Lookup di prompt flow consente l'uso di indici vettoriali comuni, ad esempio Azure AI Search, FAISS e Pinecone, per il recupero della generazione augmentata (RAG) in prompt flow. Lo strumento rileva automaticamente gli indici nell'area di lavoro e consente di selezionare l'indice da usare nel flusso.
Importante
Lo strumento Ricerca indice è attualmente disponibile in anteprima pubblica. Questa anteprima viene messa a disposizione senza contratto di servizio e non è consigliata per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.
Compilare con lo strumento Index Lookup
Creare o aprire un flusso in Azure Machine Learning Studio. Per altre informazioni, vedere Creare un flusso.
Selezionare + Altri strumenti>Index Lookup per aggiungere lo strumento Index Lookup al flusso.
Immettere i valori per i parametri di input dello strumento Index Lookup. Lo strumento LLM (Large Language Models) può generare l'input del vettore.
Aggiungere altri strumenti al flusso in base alle esigenze oppure selezionare Esegui per eseguire il flusso.
Per altre informazioni sull'output restituito, vedere Output.
Input
Di seguito sono riportati i parametri di input disponibili:
Nome | Tipo | Descrizione | Richiesto |
---|---|---|---|
mlindex_content | string | Tipo di indice da utilizzare. L'input dipende dal tipo di indice. Di seguito è riportato un esempio di JSON dell'indice di ricerca cog di Azure* | Sì |
query | string, Union[string, List[String]] | Testo su cui eseguire una query. | Sì |
query_type | string | Tipo di query da eseguire. Le opzioni includono parola chiave, semantica, ibrida, etc. | Sì |
top_k | integer | Numero di entità con il punteggio più alto da restituire. Il valore predefinito è 3. | No |
*Esempio JSON di ACS:
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
Output
La risposta in formato JSON seguente è un esempio restituito dallo strumento che include le entità con punteggio top-k. L'entità segue uno schema generico del risultato della ricerca vettoriale fornito dall'SDK promptflow-vectordb. Per la ricerca dell'indice vettoriale, vengono popolati i campi seguenti:
Nome campo | Tipo | Descrizione |
---|---|---|
metadata | dict | Coppie chiave-valore personalizzate fornite dall'utente durante la creazione dell'indice |
page_content | string | Contenuto del blocco vettoriale usato nella ricerca |
score | float | Dipende dal tipo di indice definito nell'indice vettoriale. Se il tipo di indice è Faiss, il punteggio è distanza L2. Se il tipo di indice è Azure AI Search, il punteggio è la somiglianza tra coseni. |
[
{
"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
},
]
Come eseguire la migrazione da strumenti legacy allo strumento Ricerca indice
Lo strumento Ricerca indice cerca di sostituire i tre strumenti di indicizzazione legacy deprecati, lo strumento Ricerca Indice vettoriale, lo strumento Ricerca Database vettoriale e lo strumento Ricerca Indice Faiss. Se si dispone di un flusso che contiene uno di questi strumenti, seguire i passaggi successivi per aggiornare il flusso.
Aggiornare gli strumenti
Passare al flusso. A tale scopo, selezionare la scheda Flusso prompt in Creazione, selezionando la scheda pivot Flussi e quindi selezionando il nome del flusso.
Una volta all'interno del flusso, selezionare il pulsante "+ Altri strumenti" nella parte superiore del riquadro. Si deve aprire un elenco a discesa e selezionare Ricerca indice [Anteprima] per aggiungere un'istanza dello strumento Ricerca indice.
Assegnare un nome al nuovo nodo e selezionare “Aggiungi”.
Nel nuovo nodo selezionare la casella di testo “mlindex_content”. Questa dovrebbe essere la prima casella di testo nell'elenco.
Nel pannello Genera visualizzato seguire le istruzioni seguenti per eseguire l'aggiornamento dai tre strumenti legacy:
- Se si usa lo strumento di Ricerca dell'indice vettoriale legacy, selezionare "Indice registrato" nell'elenco a discesa "index_type". Selezionare l'asset dell'indice vettoriale dall'elenco “a discesa mlindex_asset_id”.
- Se si usa lo strumento legacy Ricerca indice Faiss, selezionare “Faiss” nell'elenco “a discesa index_type” e specificare lo stesso percorso dello strumento legacy.
- Se si usa lo strumento di Ricerca database vettoriale legacy, selezionare Ricerca di intelligenza artificiale o Pinecone a seconda del tipo di database nell'elenco a discesa "index_type" e immettere le informazioni in base alle esigenze.
Dopo aver compilato le informazioni necessarie, selezionare Salva.
Al ritorno al nodo, nella casella di testo "mlindex_content" dovrebbero essere presenti delle informazioni. Selezionare la “casella di testo query” successiva e selezionare i termini di ricerca su cui eseguire la query. È consigliabile selezionare lo stesso valore dell'input nel nodo "embed_the_question", in genere "${inputs.question}" o "${modify_query_with_history.output}" (il primo se si è in un flusso standard e quest'ultimo se si è in un flusso di chat).
Selezionare un tipo di query facendo clic sull'elenco a discesa accanto a "query_type". "Vector" produrrà risultati identici come flusso legacy, ma a seconda della configurazione dell'indice, potrebbero essere disponibili altre opzioni, tra cui "Ibrido" e "Semantico".
Modificare i componenti downstream per utilizzare l'output del nodo appena aggiunto, anziché l'output del nodo legacy Ricerca indice vettoriale.
Eliminare il nodo Ricerca indice vettoriale e il relativo nodo di incorporamento padre.