Configurar um vetorizador em um índice de pesquisa
Na Pesquisa de IA do Azure, um vetorizador é um software que executa a vetorização, como um modelo de inserção implantado no OpenAI do Azure, que converte texto(ou imagens) em vetores durante a execução da consulta.
Ele é definido em um índice de pesquisa, aplica-se a campos de vetor pesquisáveis e é usado no momento da consulta para gerar uma inserção para uma entrada de consulta de texto ou imagem. Se, em vez disso, você precisar vetorizar o conteúdo como parte do processo de indexação, consulte a Vetorização Integrada (Versão Prévia). Para vetorização interna durante a indexação, você pode configurar um indexador e um conjunto de habilidades que chama um modelo de inserção para seu conteúdo de texto bruto.
Para adicionar um vetorizador ao índice de pesquisa, você pode usar o designer de índice no portal do Azure ou chamar a API REST Create or Update Index ou usar qualquer pacote do SDK do Azure atualizado para fornecer esse recurso.
Os vetorizadores agora estão disponíveis para o público geral, desde que você use um par de vetorizadores de habilidades disponíveis. O vetorizador AzureOpenAIEmbedding e a habilidade AzureOpenAIEmbedding estão disponíveis para o público geral. O vetorizador de API Web personalizado também está disponível para o público geral.
O vetorizador da Visão de IA do Azure, o vetorizador do catálogo de modelos do Azure AI Foundry e suas habilidades equivalentes ainda estão em versão prévia. Seu conjunto de habilidades deve especificar API REST 2024-05-01-preview para usar habilidades e vetores da versão prévia.
Pré-requisitos
Um índice com campos de vetor pesquisáveis na Pesquisa de IA do Azure.
Um modelo de inserção implantado, como text-embedding-ada-002, text-embedding-3-small ou text-embedding-3-large no OpenAI do Azure. Ele é usado para vetorizar uma consulta. Ele deve ser idêntico ao modelo de inserção usado para o campo de vetor em seu índice. Você também pode usar modelos implantados no catálogo de modelos da IA do Azure Foundry ou em um modelo do Azure AI Vision.
Permissões para usar o modelo de inserção. Se você estiver usando o Azure OpenAI, o chamador deverá ter permissões de Usuário do OpenAI dos Serviços Cognitivos. Ou você pode fornecer uma chave de API.
Visual Studio Code com um cliente REST para enviar a consulta e aceitar uma resposta.
Recomendamos que você habilite o log de diagnóstico em seu serviço de pesquisa para confirmar a execução da consulta vetor.
Experimentar um vetor com dados de exemplo
O assistente de importação e vetorização de dados lê arquivos do Armazenamento de Blobs do Azure, cria um índice com campos em partes e vetorizados e adiciona um vetorizador. Por design, o vetorizador criado pelo assistente é definido como o mesmo modelo de inserção usado para indexar o conteúdo do blob.
Carregue arquivos de dados de exemplo em um contêiner no Armazenamento do Azure. Usamos alguns pequenos arquivos de texto do livro terrestre da NASA para testar essas instruções em um serviço de pesquisa gratuito.
Execute o assistente de importação e vetorização de dados, escolhendo o contêiner de blob para a fonte de dados.
Escolha uma implantação existente de text-embedding-ada-002. Esse modelo gera inserções durante a indexação e também é usado para configurar o vetor usado durante consultas.
Depois que o assistente for concluído e todo o processamento do indexador for concluído, você deverá ter um índice com um campo de vetor pesquisável. A definição JSON do campo tem esta aparência:
{ "name": "vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": "vector-nasa-ebook-text-profile" }
Você também deve ter um perfil de vetor e um vetorizador, semelhante ao exemplo a seguir:
"profiles": [ { "name": "vector-nasa-ebook-text-profile", "algorithm": "vector-nasa-ebook-text-algorithm", "vectorizer": "vector-nasa-ebook-text-vectorizer" } ], "vectorizers": [ { "name": "vector-nasa-ebook-text-vectorizer", "kind": "azureOpenAI", "azureOpenAIParameters": { "resourceUri": "https://my-fake-azure-openai-resource.openai.azure.com", "deploymentId": "text-embedding-ada-002", "modelName": "text-embedding-ada-002", "apiKey": "0000000000000000000000000000000000000", "authIdentity": null }, "customWebApiParameters": null } ]
Pule para testar o vetorizador para conversão de texto em vetor durante a execução da consulta.
Definir um vetor e um perfil de vetor
Esta seção explica as modificações em um esquema de índice para definir um vetor manualmente.
Use Criar ou Atualizar Índice para adicionar
vectorizers
a um índice de pesquisa.Adicione o seguinte JSON à sua definição de índice. A seção vetorizadores fornece informações de conexão para um modelo de inserção implantado. Esta etapa mostra dois exemplos de vetor para que você possa comparar um modelo de inserção do OpenAI do Azure e uma API Web personalizada lado a lado.
"vectorizers": [ { "name": "my_azure_open_ai_vectorizer", "kind": "azureOpenAI", "azureOpenAIParameters": { "resourceUri": "https://url.openai.azure.com", "deploymentId": "text-embedding-ada-002", "modelName": "text-embedding-ada-002", "apiKey": "mytopsecretkey" } }, { "name": "my_custom_vectorizer", "kind": "customWebApi", "customVectorizerParameters": { "uri": "https://my-endpoint", "authResourceId": " ", "authIdentity": " " } } ]
No mesmo índice, adicione uma seção de perfis de vetor que especifica um de seus vetores. Perfis de vetor também exigem um algoritmo de busca em vetores usado para criar estruturas de navegação.
"profiles": [ { "name": "my_vector_profile", "algorithm": "my_hnsw_algorithm", "vectorizer":"my_azure_open_ai_vectorizer" } ]
Atribua um perfil de vetor a um campo de vetor. O exemplo a seguir mostra uma coleção de campos com o campo de chave necessário, um campo de cadeia de caracteres de título e dois campos de vetor com uma atribuição de perfil de vetor.
"fields": [ { "name": "ID", "type": "Edm.String", "key": true, "sortable": true, "analyzer": "keyword" }, { "name": "title", "type": "Edm.String" }, { "name": "vector", "type": "Collection(Edm.Single)", "dimensions": 1536, "vectorSearchProfile": "my_vector_profile", "searchable": true, "retrievable": true }, { "name": "my-second-vector", "type": "Collection(Edm.Single)", "dimensions": 1024, "vectorSearchProfile": "my_vector_profile", "searchable": true, "retrievable": true } ]
Testar um vetorizador
Use um cliente de pesquisa para enviar uma consulta por meio de um vetor. Este exemplo pressupõe o Visual Studio Code com um cliente REST e um índice de exemplo.
No Visual Studio Code, forneça um ponto de extremidade de pesquisa e uma chave de API de consulta de pesquisa:
@baseUrl: @queryApiKey: 00000000000000000000000
Cole em uma solicitação de consulta de vetor.
### Run a query POST {{baseUrl}}/indexes/vector-nasa-ebook-txt/docs/search?api-version=2024-07-01 HTTP/1.1 Content-Type: application/json api-key: {{queryApiKey}} { "count": true, "select": "title,chunk", "vectorQueries": [ { "kind": "text", "text": "what cloud formations exists in the troposphere", "fields": "vector", "k": 3, "exhaustive": true } ] }
Os principais pontos sobre a consulta incluem:
"kind": "text"
informa ao mecanismo de pesquisa que a entrada é uma cadeia de caracteres de texto e para usar o vetor associado ao campo de pesquisa."text": "what cloud formations exists in the troposphere"
é a cadeia de caracteres de texto a ser vetorizada."fields": "vector"
é o nome do campo a ser consultado. Se você usar o índice de exemplo produzido pelo assistente, o campo de vetor gerado será nomeadovector
.
Enviar a solicitação. Você deve obter três
k
resultados, em que o primeiro resultado é o mais relevante.
Observe que não há propriedades de vetorizador a serem definidas no momento da consulta. A consulta lê as propriedades do vetor, de acordo com a atribuição de campo de perfil de vetor no índice.
Verificar os logs
Se você habilitou o log de diagnóstico para seu serviço de pesquisa, execute uma consulta Kusto para confirmar a execução da consulta em seu campo de vetor:
OperationEvent
| where TIMESTAMP > ago(30m)
| where Name == "Query.Search" and AdditionalInfo["QueryMetadata"]["Vectors"] has "TextLength"
Práticas recomendadas
Se você estiver configurando um vetorizador do OpenAI do Azure, considere as mesmas práticas recomendadas para a habilidade de inserção do OpenAI do Azure.