Azure OpenAI On Your Data
Use este artigo para saber mais sobre o OpenAI do Azure On Your Data, que torna mais fácil para os desenvolvedores conectar, ingerir e basear seus dados corporativos para criar copilotos personalizados (versão prévia) rapidamente. Ele aumenta a compreensão do usuário, agiliza a conclusão de tarefas, melhora a eficiência operacional e auxilia na tomada de decisões.
O que é o Azure OpenAI On Your Data
O OpenAI do Azure On Your Data permite que você execute modelos avançados de IA, como o GPT-35-Turbo e o GPT-4, em seus próprios dados corporativos sem a necessidade de treinar ou ajustar modelos. Você pode conversar e analisar seus dados com maior precisão. Você pode especificar fontes para dar suporte às respostas com base nas informações mais recentes disponíveis em suas fontes de dados designadas. Você pode acessar o OpenAI do Azure On Your Data usando uma API REST, por meio do SDK ou da interface baseada na Web no Estúdio OpenAI do Azure. Você também pode criar um aplicativo Web que se conecte aos seus dados para habilitar uma solução de chat aprimorada ou implantá-la diretamente como um copiloto no Copilot Studio (versão prévia).
Desenvolvimento com OpenAI do Azure em Seus Dados
Normalmente, o processo de desenvolvimento que você usaria com o OpenAI do Azure em Seus Dados é:
Ingestão: Carregar arquivos usando o Estúdio do OpenAI do Azure ou a API de ingestão. Isso permite que seus dados sejam divididos, segmentados e inseridos em uma instância de Pesquisa de IA do Azure, que pode ser usada por modelos do OpenAI do Azure. Se você tiver uma fonte de dados com suporte existente, também poderá conectá-la diretamente.
Desenvolvimento: Após testar o OpenAI do Azure em Seus Dados, comece a desenvolver seu aplicativo usando a API REST disponível e os SDKs, que estão disponíveis em várias linguagens. Isso criará prompts e intenções de pesquisa para enviar ao serviço OpenAI do Azure.
Inferência: Após seu aplicativo ser implantado no ambiente de sua preferência, ele enviará prompts ao OpenAI do Azure, que realizará várias etapas antes de retornar uma resposta:
Geração de Intenção: O serviço determinará a intenção do prompt do usuário para definir uma resposta adequada.
Recuperação: O serviço recupera trechos relevantes dos dados disponíveis da fonte de dados conectada, consultando-a. Por exemplo, utilizando uma busca em vetores ou pesquisa semântica. Parâmetros como rigor e número de documentos a serem recuperados são utilizados para influenciar a recuperação.
Filtragem e reclassificação: Os resultados da busca da etapa de recuperação são aprimorados classificando e filtrando os dados para refinar a relevância.
Geração de Resposta: Os dados resultantes são enviados junto com outras informações, como a mensagem do sistema, ao Grande Modelo de Linguagem (LLM), e a resposta é retornada ao aplicativo.
Para começar, conecte sua fonte de dados usando o Estúdio OpenAI do Azure e comece a fazer perguntas e conversar com seus dados.
Controles de acesso baseado em função do Azure (RBAC do Azure) para adicionar fontes de dados
Para usar totalmente o Azure OpenAI On Your Data, você precisa definir uma ou mais funções RBAC do Azure. Consulte Usar o Azure OpenAI On Your Data com segurança para obter mais informações.
Formatos de dados e tipos de arquivo
O OpenAI do Azure On Your Data dá suporte para os seguintes tipos de arquivo:
.txt
.md
.html
.docx
.pptx
.pdf
Há um limite de upload, e há algumas advertências sobre a estrutura do documento e como isso pode afetar a qualidade das respostas do modelo:
Se você estiver convertendo dados de um formato não compatível para um formato compatível, otimize a qualidade da resposta do modelo garantindo a conversão:
- Não resulte em uma perda significativa de dados.
- Não adicione ruído inesperado aos seus dados.
Se os seus arquivos tiverem formatação especial, como tabelas e colunas, ou marcadores, prepare os dados com o script de preparação de dados disponível no GitHub.
Para documentos e conjuntos de dados com texto longo, você deve usar o script de preparação de dados disponível. O script particiona os dados para que as respostas do modelo sejam mais precisas. Esse script também dá suporte a imagens e arquivos PDF digitalizados.
Fontes de dados com suporte
Você precisa se conectar a uma fonte de dados para carregar seus dados. Quando você deseja usar seus dados para conversar com um modelo OpenAI do Azure, seus dados são divididos em um índice de pesquisa para que os dados relevantes possam ser encontrados com base nas consultas do usuário.
O Banco de dados vetorial integrado ao Azure Cosmos DB for MongoDB baseado em vCore dá suporte nativo à integração ao Azure OpenAI On Your Data.
Para algumas fontes de dados, como o upload de arquivos do seu computador local (versão prévia) ou dados contidos em uma conta de armazenamento de blobs (versão prévia), a Pesquisa de IA do Azure é usada. Quando você escolhe as seguintes fontes de dados, seus dados são ingeridos em um índice da Pesquisa de IA do Azure.
Dados ingeridos por meio da Pesquisa de IA do Azure | Descrição |
---|---|
Azure AI Search | Use um índice existente da Pesquisa de IA do Azure com o OpenAI do Azure On Your Data. |
Carregar arquivos (versão prévia) | Faça upload de arquivos do seu computador local para serem armazenados em um banco de dados do Armazenamento de Blobs do Azure e ingeridos na Pesquisa de IA do Azure. |
URL/Endereço Web (versão prévia) | O conteúdo da Web das URLs é armazenado no Armazenamento de Blobs do Azure. |
Armazenamento de Blobs do Azure (versão prévia) | Faça upload de arquivos do Armazenamento de Blobs do Azure para serem ingeridos em um índice da Pesquisa de IA do Azure. |
- Azure AI Search
- Banco de dados vetorial no Azure Cosmos DB for MongoDB vCore
- Armazenamento de Blobs do Azure (versão prévia)
- Carregar arquivos (versão prévia)
- URL/Endereço Web (versão prévia)
- Elasticsearch (versão prévia)
Talvez você queira considerar o uso de um índice da Pesquisa de IA do Azure quando quiser:
- Personalizar o processo de criação de índices.
- Reutilizar um índice criado anteriormente por meio da ingestão de dados de outras fontes de dados.
Observação
- Para usar um índice existente, ele deve ter pelo menos um campo pesquisável.
- Defina a opção Permitir Tipo de Origem do CORS como
all
e a opção Origens Permitidas como*
.
Tipos de pesquisa
O OpenAI do Azure On Your Data fornece os seguintes tipos de pesquisa que você pode usar ao adicionar sua fonte de dados.
Busca em vetores usando modelos de inserção Ada, disponível em regiões selecionadas
Para habilitar a pesquisa vetorial, você precisa de um modelo de incorporação existente implantado em seu recurso do OpenAI do Azure. Selecione a implantação de incorporação ao conectar seus dados e, em seguida, selecione um dos tipos de busca em vetores em Gerenciamento de dados. Se você estiver usando a Pesquisa de IA do Azure como fonte de dados, certifique-se de ter uma coluna de vetor no índice.
Se estiver usando seu próprio índice, você poderá personalizar o mapeamento de campo ao adicionar sua fonte de dados para definir os campos que serão mapeados ao responder às perguntas. Para personalizar o mapeamento de campo, selecione Usar mapeamento de campo personalizado na página Fonte de dados ao adicionar a fonte de dados.
Importante
- A pesquisa semântica está sujeita a preços adicionais. Você precisa escolher o SKU Básico ou superior para habilitar a pesquisa semântica ou a busca em vetores. Confira diferença dos tipos de preço e os limites de serviço para mais informações.
- Para ajudar a melhorar a qualidade da recuperação de informações e da resposta do modelo, recomendamos habilitar a pesquisa semântica para os idiomas de fonte de dados a seguir: inglês, francês, espanhol, português, italiano, alemão, chinês (Zh), japonês, coreano, russo e árabe.
Opção de pesquisa | Tipo de recuperação | Preços adicionais? | Benefícios |
---|---|---|---|
Palavra-chave | Pesquisa por palavra-chave | Nenhum preço adicional. | Realiza a análise e a correspondência de consultas rápidas e flexíveis em campos pesquisáveis, usando termos ou frases em qualquer idioma compatível, com ou sem operadores. |
semântica | Pesquisa semântica | Preços adicionais para o uso da pesquisa semântica. | Melhora a precisão e a relevância dos resultados de pesquisa usando um reclassificador (com modelos de IA) para entender o significado semântico dos termos da consulta e dos documentos retornados pelo classificador de pesquisa inicial |
vector | Pesquisa de vetor | Os preços adicionais na sua conta OpenAI do Azure ao chamar o modelo de incorporação. | Permite que você encontre documentos semelhantes a uma determinada entrada de consulta com base nas incorporações vetoriais do conteúdo. |
híbrido (vetor + palavra-chave) | Um híbrido de busca em vetores e pesquisa de palavra-chave | Os preços adicionais na sua conta OpenAI do Azure ao chamar o modelo de incorporação. | Executa a pesquisa de similaridade em campos vetoriais usando incorporações vetoriais, além de oferecer suporte à análise flexível de consultas e à pesquisa de texto completo em campos alfanuméricos usando consultas de termos. |
híbrido (vetor + palavra-chave) + semântico | Um híbrido de busca em vetores, pesquisa semântica e pesquisa de palavras-chave. | Os preços adicionais na sua conta OpenAI do Azure ao chamar o modelo de incorporação e preços adicionais para utilização da pesquisa semântica. | Usa inserções de vetores, reconhecimento de linguagem e análise flexível de consultas para criar experiências de pesquisa avançadas e aplicativos de IA generativa que podem lidar com cenários complexos e diversos de recuperação de informações. |
Pesquisa inteligente
O OpenAI do Azure On Your Data tem uma pesquisa inteligente habilitada para seus dados. A pesquisa semântica será habilitada por padrão se você tiver a pesquisa semântica e a pesquisa por palavra-chave. Se você tiver modelos incorporados, a pesquisa inteligente será padronizada para pesquisa híbrida + semântica.
Controle de acesso no nível de documento
Observação
Há suporte para o controle de acesso no nível do documento quando você seleciona a Pesquisa de IA do Azure como sua fonte de dados.
O OpenAI do Azure On Your Data permite restringir os documentos que podem ser usados em respostas para diferentes usuários com a Pesquisa de IA do Azure filtros de segurança. Quando você ativa o acesso no nível do documento, os resultados da pesquisa retornados da Pesquisa de IA do Azure e usados para gerar uma resposta são cortados com base na associação do usuário ao grupo do Microsoft Entra. Você só pode habilitar o acesso em nível de documento nos índices existentes da Pesquisa de IA do Azure. Consulte Usar o OpenAI do Azure em seus dados com segurança para obter mais informações.
Mapeamento de campos de índice
Se estiver usando seu próprio índice, você será solicitado no Azure OpenAI Studio a definir quais campos deseja mapear para responder a perguntas ao adicionar sua fonte de dados. Você pode fornecer vários campos para Dados de conteúdo e deve incluir todos os campos que possuem texto pertencente ao seu caso de uso.
Neste exemplo, os campos mapeados para Dados de conteúdo e Título fornecem informações ao modelo para responder a perguntas. O título também é usado para o texto de citação de título. O campo mapeado para Nome do arquivo gera os nomes de citação na resposta.
Mapear esses campos corretamente ajuda a garantir que o modelo tenha qualidade superior de resposta e citação. Você também pode configurá-lo na API usando o parâmetro fieldsMapping
.
Filtro de pesquisa (API)
Se quiser implementar critérios adicionais baseados em valor para a execução de consultas, você pode configurar um filtro de pesquisa usando o parâmetro filter
na API REST.
Como os dados são ingeridos na pesquisa de IA do Azure
Os dados são ingeridos na pesquisa de IA do Azure usando o seguinte processo:
Os ativos de ingestão são criados no recurso da Pesquisa de IA do Azure e na conta de armazenamento do Azure. Atualmente, esses ativos são: indexadores, índices, fontes de dados, uma habilidade personalizada no recurso de pesquisa e um contêiner (posteriormente chamado de contêiner de partes) na conta de armazenamento do Azure. Você pode especificar o contêiner de armazenamento do Azure de entrada usando o Estúdio OpenAI do Azure ou a API de ingestão (versão prévia). Por padrão, assume-se que o texto utiliza a codificação UTF-8. Para especificar uma codificação diferente, utilize a propriedade de configuração de codificação. Consulte a documentação do .NET para obter uma lista de codificações com suporte.
Os dados são lidos do contêiner de entrada, o conteúdo é aberto e organizado em pequenas partes com um máximo de 1.024 tokens cada. Se a busca em vetores estiver habilitada, o serviço calculará o vetor que representa as incorporações em cada parte dos dados. A saída dessa etapa (chamada de dados "pré-processados" ou "em partes") é armazenada no contêiner de partes criado na etapa anterior.
Os dados pré-processados são carregados do contêiner de partes e indexados no índice do Pesquisa de IA do Azure.
Data connection
Você precisa selecionar como deseja autenticar a conexão do OpenAI do Azure, da Pesquisa de IA do Azure e do Armazenamento de Blobs do Azure. Você pode escolher uma identidade gerenciada atribuída pelo sistema ou uma chave de API. Ao selecionar a chave de API como o tipo de autenticação, o sistema preencherá automaticamente a chave de API para que você se conecte aos recursos da Pesquisa de IA do Azure, do OpenAI do Azure e do Armazenamento de Blobs do Azure. Ao selecionar Identidade gerenciada atribuída pelo sistema, a autenticação será baseada na atribuição de função que você tem. Identidade gerenciada atribuída pelo sistema é selecionada por padrão para segurança.
Depois de selecionar o botão próximo, sua configuração será automaticamente validada para usar o método de autenticação selecionado. Se você encontrar um erro, consulte o artigo sobre atribuições de função para atualizar sua configuração.
Depois de corrigir a configuração, selecione próximo novamente para validar e continuar. Os usuários de API também podem configurar a autenticação com identidade gerenciada atribuída e chaves de API.
Implantar em um copilot (pré-visualização), aplicativo do Teams (versão prévia) ou aplicativo Web
Depois de conectar o OpenAI do Azure aos seus dados, você poderá implantá-lo usando o botão Implantar no Estúdio do OpenAI do Azure.
Isso oferece várias opções para implantar sua solução.
Você pode implantar em um copiloto no Copilot Studio (versão prévia) diretamente do Estúdio do OpenAI do Azure, permitindo levar experiências de conversação para vários canais, como: Microsoft Teams, sites, Dynamics 365 e outros canais do Serviço de Bot do Azure. O locatário usado no serviço OpenAI do Azure e no Copilot Studio (versão prévia) deve ser o mesmo. Para obter mais informações, confira Usar uma conexão com o Azure OpenAI On Your Data.
Observação
A implantação em um copiloto no Copilot Studio (versão prévia) está disponível apenas nas regiões dos EUA.
Use o Azure OpenAI On Your Data com segurança
Você pode usar o OpenAI do Azure On Your Data de forma segura, protegendo dados e recursos com o controle de acesso baseado em função do Microsoft Entra ID, redes virtuais e pontos de extremidade privados. Você também pode restringir os documentos que podem ser usados em respostas para diferentes usuários com os filtros de segurança da Pesquisa de IA do Azure. Consulte Usar com segurança o Azure OpenAI On Your Data.
Práticas recomendadas
Use as seções a seguir para saber como melhorar a qualidade das respostas fornecidas pelo modelo.
Parâmetro de ingestão
Quando os dados forem ingeridos na Pesquisa de IA do Azure, será possível modificar as seguintes configurações adicionais no estúdio ou na API de ingestão.
Tamanho da parte (versão prévia)
O Azure OpenAI On Your Data processa os documentos dividindo-os em partes antes de ingeri-los. O tamanho da parte é o tamanho máximo em termos do número de tokens de qualquer parte no índice de pesquisa. O tamanho da parte e o número de documentos recuperados juntos controlam a quantidade de informações (tokens) incluídas no prompt enviado para o modelo. Em geral, o tamanho da parte multiplicado pelo número de documentos recuperados é o número total de tokens enviados ao modelo.
Definir o tamanho da parte para o seu caso de uso
O tamanho da parte padrão é de 1.024 tokens. No entanto, dada a exclusividade dos seus dados, talvez um tamanho de parte diferente (como 256, 512 ou 1.536 tokens) seja mais eficaz.
Ajustar o tamanho do bloco pode melhorar o desempenho do chatbot. Embora encontrar o tamanho ideal da parte exija alguma tentativa e erro, comece considerando a natureza do conjunto de dados. Um tamanho de parte menor geralmente é melhor para conjuntos de dados com fatos diretos e menos contexto, enquanto um tamanho de parte maior poderá ser favorável para informações mais contextuais, embora possa afetar o desempenho da recuperação.
Um tamanho de parte pequena, como 256, produz partes mais granulares. Esse tamanho também significa que o modelo utilizará menos tokens para gerar a saída (a menos que o número de documentos recuperados seja muito alto), potencialmente custando menos. Pedaços menores também significam que o modelo não precisa processar e interpretar longas seções de texto, reduzindo ruído e distração. No entanto, essa granularidade e foco representam um problema potencial. Informações importantes poderão não estar entre as partes mais altas recuperadas, especialmente se o número de documentos recuperados estiver definido com um valor baixo, como 3.
Dica
Tenha em mente que alterar o tamanho da parte exigirá que os documentos sejam ingeridos novamente, portanto, é importante ajustar primeiro os parâmetros de runtime como a rigidez e o número de documentos recuperados. Se você ainda não estiver obtendo os resultados desejados, altere o tamanho das partes:
- Se você encontrar um grande número de respostas como "Não sei" para perguntas com respostas que deveriam estar nos seus documentos, considere reduzir o tamanho da parte para 256 ou 512 para melhorar a granularidade.
- Se o chatbot estiver fornecendo alguns detalhes corretos, mas faltando outros, o que se tornará evidente nas citações, aumentar o tamanho da parte para 1.536 poderá ajudar a capturar mais informações contextuais.
Parâmetros de runtime
Na seção Parâmetros de dados do Estúdio OpenAI do Azure, você pode modificar as configurações adicionais e a API a seguir. Você não precisa ingerir novamente seus dados quando atualiza esses parâmetros.
Nome do parâmetro | Descrição |
---|---|
Limitar respostas aos seus dados | Este sinalizador configura a abordagem do chatbot para lidar com consultas não relacionadas à fonte de dados ou quando os documentos de pesquisa são insuficientes para fornecer uma resposta completa. Quando esta configuração se encontra desabilitada, o modelo complementa as respostas com o seu próprio conhecimento, além dos documentos que você tem. Quando esta configuração se encontra habilitada, o modelo tenta contar apenas com os seus documentos para gerar respostas. Esse é o parâmetro inScope na API, definido como true por padrão. |
Documentos recuperados | Este parâmetro é um inteiro que pode ser definido como 3, 5, 10 ou 20 e controla o número de partes de documento fornecidas para o modelo de linguagem grande para formular a resposta final. Por padrão, ele é definido como 5. O processo de busca pode ser ruidoso e, às vezes, devido ao particionamento, informações relevantes podem estar espalhadas por vários fragmentos no índice de pesquisa. Selecionar um número top-K, como 5, garante que o modelo possa extrair informações relevantes, apesar das limitações inerentes à pesquisa e agrupamento. No entanto, aumentar para um número muito alto pode potencialmente distrair o modelo. Além disso, o número máximo de documentos que podem ser usados efetivamente depende da versão do modelo, pois cada um tem um tamanho de contexto e capacidade diferentes para lidar com documentos. Se você descobrir que está faltando contexto importante nas respostas, tente aumentar esse parâmetro. Esse é o parâmetro topNDocuments na API, 5 por padrão. |
Rigorosidade | Determina a agressividade do sistema na filtragem de documentos de pesquisa com base em suas pontuações de similaridade. O sistema consulta o Azure Search ou outros repositórios de documentos e decide quais documentos fornecer a modelos de linguagem grandes, como o ChatGPT. Filtrar documentos irrelevantes pode melhorar significativamente o desempenho do chatbot de ponta a ponta. Alguns documentos serão excluídos dos resultados de top-K se tiverem pontuações de similaridade baixas antes de encaminhá-los para o modelo. Isso é controlado por um valor inteiro que varia de 1 a 5. Definir esse valor como 1 significa que o sistema filtrará minimamente documentos com base na similaridade da pesquisa com a consulta do usuário. Por outro lado, uma configuração de 5 indica que o sistema filtrará os documentos agressivamente, aplicando um limite de similaridade muito alto. Se você descobrir que o chatbot está omitindo informações relevantes, reduza a rigidez do filtro (defina o valor para mais próximo de 1) para incluir mais documentos. Por outro lado, se documentos irrelevantes distraírem as respostas, aumente o limite (defina o valor para mais próximo de 5). Esse é o strictness parâmetro na API, definido como 3 por padrão. |
Referências não citadas
É possível que o modelo retorne "TYPE":"UNCITED_REFERENCE"
em vez de "TYPE":CONTENT
na API para documentos recuperados da fonte de dados, mas não incluídos na citação. Isso poderá ser útil para depuração e você poderá controlar esse comportamento modificando a rigidez e os parâmetros de runtime dos documentos recuperados descritos acima.
Mensagem do sistema
Você pode definir uma mensagem do sistema para orientar a resposta do modelo ao usar o OpenAI do Azure On Your Data. Essa mensagem permite que você personalize suas respostas com base no padrão de geração aumentada de recuperação (RAG) que o OpenAI do Azure On Your Data usa. A mensagem do sistema é usada além de um prompt de base interno para fornecer a experiência. Para dar suporte a isso, truncamos a mensagem do sistema após um número específico de tokens para garantir que o modelo possa responder a perguntas usando seus dados. Se você estiver definindo um comportamento adicional além da experiência padrão, certifique-se de que seu prompt do sistema seja detalhado e explique exatamente a personalização esperada.
Depois de selecionar adicionar seu conjunto de dados, você pode usar a seção Mensagem do sistema no Estúdio do OpenAI do Azure ou o parâmetro role_information
na API.
Padrões de uso em potencial
Definir uma função
Você pode definir a função que deseja para o seu assistente. Por exemplo, se você estiver criando um bot de suporte, poderá adicionar "Você é um assistente especializado em suporte a incidentes que ajuda os usuários a resolver novos problemas".
Definir o tipo de dados que está sendo recuperado
Você também pode adicionar a natureza dos dados que está fornecendo ao assistente.
- Defina o tópico ou o escopo do seu conjunto de dados, como "relatório financeiro", "artigo acadêmico" ou "relatório de incidentes". Por exemplo, para suporte técnico, você pode adicionar "Responda a consultas usando informações de incidentes semelhantes nos documentos recuperados".
- Se seus dados tiverem determinadas características, você poderá adicionar esses detalhes à mensagem do sistema. Por exemplo, se seus documentos estiverem em japonês, você pode adicionar "Você recuperará documentos em japonês e deverá lê-los, cuidadosamente em japonês, e responder em japonês".
- Se os seus documentos incluírem dados estruturados, como tabelas de um relatório financeiro, você também poderá adicionar esse fato ao prompt do sistema. Por exemplo, se os dados tiverem tabelas, você pode acrescentar "Você recebe dados na forma de tabelas referentes a resultados financeiros e deve ler a tabela linha por linha para fazer cálculos e responder às perguntas do usuário".
Definir o estilo de saída
Você também pode alterar a saída do modelo definindo uma mensagem do sistema. Por exemplo, se você deseja garantir que as respostas do assistente sejam em francês, você pode adicionar um prompt como "Você é um assistente de IA que ajuda usuários que entendem francês a encontrar informações". As perguntas do usuário podem estar em inglês ou francês. Leia atentamente os documentos recuperados e responda-os em francês. Traduza o conhecimento dos documentos para o francês para garantir que todas as respostas estejam em francês".
Reafirmar o comportamento crítico
O OpenAI do Azure On Your Data funciona enviando instruções para um modelo de linguagem grande na forma de prompts para responder às consultas do usuário usando seus dados. Se houver um determinado comportamento que seja essencial para o aplicativo, você poderá repetir o comportamento na mensagem do sistema para aumentar sua precisão. Por exemplo, para orientar o modelo a responder apenas a partir de documentos, você pode adicionar "Por favor, responda usando apenas os documentos recuperados e sem usar o seu conhecimento. Gere citações para os documentos recuperados em cada declaração na sua resposta. Se a pergunta do usuário não puder ser respondida usando os documentos recuperados, explique o motivo pelo qual os documentos são relevantes para as consultas do usuário. Seja qual for o caso, não responda usando seu próprio conhecimento".
Truques de Engenharia de Prompts
Há muitos truques na engenharia de prompt que você pode tentar para melhorar o resultado. Um exemplo é a solicitação de cadeia de pensamentos, em que você pode adicionar "Vamos pensar passo a passo sobre as informações nos documentos recuperados para responder às consultas do usuário. Extraia conhecimento relevante para as consultas de usuários a partir de documentos, passo a passo, e componha uma resposta de baixo para cima a partir das informações extraídas de documentos relevantes".
Observação
A mensagem do sistema é usada para modificar como o assistente GPT responde a uma pergunta do usuário com base na documentação recuperada. Isso não afeta o processo de recuperação. Se você quiser fornecer instruções para o processo de recuperação, é melhor incluí-las nas perguntas. A mensagem do sistema é apenas uma orientação. O modelo pode não seguir todas as instruções especificadas porque foi preparado com determinados comportamentos, como a objetividade, e evita instruções controversas. Poderá ocorrer um comportamento inesperado se a mensagem do sistema entrar em contradição com esses comportamentos.
Resposta máxima
Defina um limite no número de tokens por resposta de modelo. O limite superior para o OpenAI do Azure On Your Data é 1.500. Isso é equivalente à definição do parâmetro max_tokens
na API.
Limitar respostas aos seus dados
Essa opção incentiva o modelo a responder usando apenas seus dados e está selecionada por padrão. Se você desmarcar essa opção, o modelo poderá aplicar mais facilmente seu conhecimento interno para responder. Determine a seleção correta com base em seu caso de uso e cenário.
Interação com o modelo
Use as práticas a seguir para alcançar os melhores resultados ao conversar com o modelo.
Histórico de conversas
- Antes de iniciar uma nova conversa (ou fazer uma pergunta que não esteja relacionada às anteriores), limpe o histórico do chat.
- É possível obter respostas diferentes para a mesma pergunta entre o primeiro turno de conversação e as próximas rodadas, pois o histórico da conversa altera o estado atual do modelo. Se você receber respostas incorretas, relate-a como um bug de qualidade.
Resposta do modelo
Se você não estiver satisfeito com a resposta do modelo para uma pergunta específica, tente tornar a pergunta mais específica ou mais genérica para ver como o modelo responde e reformule sua pergunta adequadamente.
A solicitação da cadeia de pensamento tem sido eficaz em fazer com que o modelo produza saídas desejadas para perguntas/tarefas complexas.
Comprimento da pergunta
Evite fazer perguntas longas e divida-as em várias perguntas, se possível. Os modelos de GPT têm limites para o número de tokens que podem aceitar. Os limites de token são contados para: a pergunta do usuário, a mensagem do sistema, os documentos de pesquisa recuperados (partes), prompts internos, o histórico da conversa (se houver) e a resposta. Se a pergunta exceder o limite de token, ela será truncada.
Suporte multilíngue
Atualmente, a pesquisa por palavra-chave e a pesquisa semântica no OpenAI do Azure On Your Data dão suporte a consultas no mesmo idioma que os dados no índice. Por exemplo, se os dados estiverem em japonês, as consultas também devem estar em japonês. Para a recuperação de documentos multilíngues, recomendamos criar o índice com a Pesquisa de vetor habilitada.
Para ajudar a melhorar a qualidade da recuperação de informações e da resposta do modelo, recomendamos habilitar a pesquisa semântica dos seguintes idiomas: inglês, francês, espanhol, português, italiano, alemão, chinês(Zh), japonês, coreano, russo, árabe
Recomendamos usar uma mensagem do sistema para informar ao modelo que seus dados estão em outro idioma. Por exemplo:
*"*Você é um assistente de IA desenvolvido para ajudar os usuários a extrair informações de documentos japoneses recuperados. Examine cuidadosamente os documentos japoneses antes de formular uma resposta. A consulta do usuário será em japonês e você também deverá responder em japonês."
Se você tiver documentos em vários idiomas, recomendamos criar um novo índice para cada idioma e conectá-los separadamente ao OpenAI do Azure.
Dados de streaming
Você pode enviar uma solicitação de transmissão usando o parâmetro stream
, permitindo que os dados sejam enviados e recebidos de forma incremental, sem esperar toda a resposta da API. Isso pode melhorar o desempenho e a experiência do usuário, principalmente para dados grandes ou dinâmicos.
{
"stream": true,
"dataSources": [
{
"type": "AzureCognitiveSearch",
"parameters": {
"endpoint": "'$AZURE_AI_SEARCH_ENDPOINT'",
"key": "'$AZURE_AI_SEARCH_API_KEY'",
"indexName": "'$AZURE_AI_SEARCH_INDEX'"
}
}
],
"messages": [
{
"role": "user",
"content": "What are the differences between Azure Machine Learning and Azure AI services?"
}
]
}
Histórico de conversas para alcançar melhores resultados
Quando você conversar com um modelo, fornecer um histórico do chat ajudará o modelo a retornar resultados de maior qualidade. Você não precisa incluir a propriedade context
das mensagens do assistente em suas solicitações de API para obter melhor qualidade de resposta. Veja a documentação de referência da API para exemplos.
Chamada de função
Alguns modelos do OpenAI do Azure permitem definir ferramentas e parâmetros tool_choice para habilitar a chamada de função. Você pode configurar a chamada de função por meio da API REST /chat/completions
. Se tools
e fontes de dados estiverem na solicitação, a política a seguir será aplicada.
- Se
tool_choice
fornone
, as ferramentas serão ignoradas e somente as fontes de dados serão utilizadas para gerar a resposta. - Caso contrário, se
tool_choice
não for especificado ou especificado comoauto
ou um objeto, as fontes de dados serão ignoradas e a resposta conterá o nome das funções selecionadas e os argumentos, se houver. Mesmo se o modelo decidir que nenhuma função está selecionada, as fontes de dados ainda serão ignoradas.
Se a política acima não atender à sua necessidade considere outras opções, por exemplo: prompt flow ou API de Assistentes.
Estimativa de uso do token para o Azure OpenAI On Your Data
O OpenAI do Azure com Geração Aumentada por Recuperação (RAG) é um serviço que utiliza tanto um serviço de busca (como a Pesquisa de IA do Azure) quanto modelos de geração (modelos do OpenAI do Azure) para permitir que os usuários obtenham respostas para suas perguntas com base nos dados fornecidos.
Como parte desse pipeline de RAG, existem três etapas em um alto nível:
Reformule a consulta do usuário em uma lista de intenções de pesquisa. Isso é feito fazendo uma chamada para o modelo com uma solicitação que inclui instruções, a pergunta do usuário e o histórico de conversas. Vamos chamar isso de uma solicitação de intenção.
Para cada intenção, várias partes de documento são recuperadas do serviço de pesquisa. Depois de filtrar partes irrelevantes com base no limite de rigidez especificado pelo usuário e reclassificar/agregar as partes com base na lógica interna, o número especificado pelo usuário de partes do documento é escolhido.
Essas partes de documento, juntamente com a pergunta do usuário, o histórico de conversas, as informações de função e as instruções são enviadas ao modelo para gerar a resposta do modelo final. Vamos chamar isso de solicitação de geração.
No total, há duas chamadas feitas para o modelo:
Para processar a intenção: a estimativa de token para o prompt de intenção inclui aqueles para a pergunta do usuário, histórico de conversa e as instruções enviadas ao modelo para geração de intenção.
Para gerar a resposta: A estimativa de token para o prompt de geração inclui aqueles para a pergunta do usuário, histórico de conversação, a lista recuperada de partes do documento, informações de função e as instruções enviadas a ele para geração.
Os tokens de saída gerados pelo modelo (intenção e resposta) precisam ser levados em conta para a estimativa total do token. Resumindo, todas as quatro colunas abaixo fornecem a média total de tokens usados para gerar uma resposta.
Modelar | Contagem de tokens de solicitação de geração | Contagem de token de solicitação de intenção | Contagem de token de resposta | Contagem de token de intenção |
---|---|---|---|---|
gpt-35-turbo-16k | 4297 | 1366 | 111 | 25 |
gpt-4-0613 | 3997 | 1385 | 118 | 18 |
gpt-4-1106-preview | 4538 | 811 | 119 | 27 |
gpt-35-turbo-1106 | 4854 | 1372 | 110 | 26 |
Os números acima têm base em testes em um conjunto de dados com:
- 191 conversas
- 250 perguntas
- Média de 10 tokens por pergunta
- 4 turnos de conversa por conversa em média
E os seguintes parâmetros.
Configuração | Valor |
---|---|
Número de documentos recuperados | 5 |
Rigorosidade | 3 |
Tamanho da parte | 1024 |
Limitar respostas a dados ingeridos? | Verdadeiro |
Essas estimativas variarão de acordo com os valores definidos para os parâmetros acima. Por exemplo, se o número de documentos recuperados for definido como 10 e a restrição for definida como 1, a contagem de tokens aumentará. Se as respostas retornadas não estiverem limitadas aos dados ingeridos, haverá menos instruções fornecidas ao modelo e o número de tokens diminuirá.
As estimativas também dependem da natureza dos documentos e das perguntas que estão sendo feitas. Por exemplo, se as perguntas forem abertas, as respostas provavelmente serão mais longas. Da mesma forma, uma mensagem de sistema mais longa contribuiria para uma solicitação mais longa que consome mais tokens e, se o histórico da conversa for longo, a solicitação será mais longa.
Modelar | Máximo de tokens para a mensagem do sistema |
---|---|
GPT-35-0301 | 400 |
GPT-35-0613-16K | 1000 |
GPT-4-0613-8K | 400 |
GPT-4-0613-32K | 2000 |
GPT-35-turbo-0125 | 2000 |
GPT-4-turbo-0409 | 4000 |
GPT-4o | 4000 |
GPT-4o-mini | 4000 |
A tabela acima mostra o número máximo de tokens que podem ser usados para o mensagem do sistema. Para ver os tokens máximos para a resposta do modelo, consulte o artigo modelos. Além disso, os seguintes também consomem tokens:
A meta solicitação: se você limitar as respostas do modelo ao conteúdo de dados de base (
inScope=True
na API), o número máximo de tokens será superior. Caso contrário (por exemplo, seinScope=False
), o máximo será inferior. Esse número é variável dependendo do tamanho do token do histórico de conversas e perguntas dos usuários. Essa estimativa inclui o prompt básico e os prompts de reescrita de consulta para recuperação.Pergunta e histórico do usuário: variável, mas com limite de 2.000 tokens.
Documentos recuperados (partes): o número de tokens usados pelas partes de documento recuperados depende de vários fatores. O limite superior para isso é o número de partes de documentos recuperados multiplicado pelo tamanho da parte. No entanto, será truncado com base nos tokens disponíveis para o modelo específico que está sendo usado após a contagem dos demais campos.
20% dos tokens disponíveis são reservados para a resposta do modelo. Os 80% restantes dos tokens disponíveis incluem o prompt meta, o histórico de conversas e perguntas dos usuários e a mensagem do sistema. O orçamento restante de tokens é usado pelas partes de documento recuperados.
Para calcular o número de tokens consumidos pela sua entrada (como sua pergunta, as informações de mensagem/função do sistema), use o exemplo de código a seguir.
import tiktoken
class TokenEstimator(object):
GPT2_TOKENIZER = tiktoken.get_encoding("gpt2")
def estimate_tokens(self, text: str) -> int:
return len(self.GPT2_TOKENIZER.encode(text))
token_output = TokenEstimator.estimate_tokens(input_text)
Solução de problemas
Para solucionar problemas de operações com falha, sempre procure erros ou avisos especificados na resposta da API ou no Estúdio do OpenAI do Azure. Aqui estão alguns dos erros e avisos comuns:
Trabalhos de ingestão com falha
Problemas com o limite de cota
Não foi possível criar um índice com o nome X no serviço Y. A cota do índice foi excedida para esse serviço. Primeiro, você deve excluir índices não utilizados, adicionar um atraso entre as solicitações de criação de índices ou atualizar o serviço para obter limites mais altos.
A cota do indexador padrão de X foi excedida para esse serviço. Atualmente, você tem X indexadores padrão. Primeiro, você deve excluir os indexadores que não são utilizados, alterar o "executionMode" do indexador ou atualizar o serviço para obter limites mais altos.
Resolução:
Atualize para um tipo de preço mais alto ou exclua ativos não utilizados.
Problemas com o tempo limite de pré-processamento
Não foi possível executar a habilidade porque a solicitação da API Web falhou
Não foi possível executar a habilidade porque a resposta da habilidade da API Web é inválida
Resolução:
Divida os documentos enviados em documentos menores e tente novamente.
Problemas de permissões
Esta solicitação não está autorizada a realizar esta operação
Resolução:
Isso significa que a conta de armazenamento não pode ser acessada com as credenciais fornecidas. Nesse caso, revise as credenciais da conta de armazenamento passadas para a API e verifique se a conta de armazenamento não está oculta em um ponto de extremidade privado (se um ponto de extremidade privado não estiver configurado para esse recurso).
503 erros ao enviar consultas com a Pesquisa de IA do Azure
Cada mensagem de usuário pode se traduzir em várias consultas de pesquisa, todas enviadas para o recurso de pesquisa em paralelo. Isso pode produzir um comportamento de limitação quando o número de réplicas e partições de procura for baixo. O número máximo de consultas por segundo que uma única partição e uma única réplica podem dar suporte poderá não ser suficiente. Nesse caso, considere aumentar as réplicas e as partições ou adicionar lógica de suspensão/repetição no aplicativo. Para obter mais informações, consulte a documentação da Pesquisa de IA do Azure.
Disponibilidade regional e suporte a modelos
Region | gpt-35-turbo-16k (0613) |
gpt-35-turbo (1106) |
gpt-4-32k (0613) |
gpt-4 (1106-preview) |
gpt-4 (0125-preview) |
gpt-4 (0613) |
gpt-4o ** |
gpt-4 (turbo-2024-04-09) |
---|---|---|---|---|---|---|---|---|
Leste da Austrália | ✅ | ✅ | ✅ | ✅ | ✅ | |||
Leste do Canadá | ✅ | ✅ | ✅ | ✅ | ✅ | |||
Leste dos EUA | ✅ | ✅ | ✅ | |||||
Leste dos EUA 2 | ✅ | ✅ | ✅ | ✅ | ||||
França Central | ✅ | ✅ | ✅ | ✅ | ✅ | |||
Leste do Japão | ✅ | |||||||
Centro-Norte dos EUA | ✅ | ✅ | ✅ | |||||
Leste da Noruega | ✅ | ✅ | ||||||
Centro-Sul dos Estados Unidos | ✅ | ✅ | ||||||
Sul da Índia | ✅ | ✅ | ||||||
Suécia Central | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||
Norte da Suíça | ✅ | ✅ | ✅ | |||||
Sul do Reino Unido | ✅ | ✅ | ✅ | ✅ | ||||
Oeste dos EUA | ✅ | ✅ | ✅ |
**Esta é uma implementação somente texto
Se o seu recurso do OpenAI do Azure estiver em outra região, você não poderá usar o OpenAI do Azure On Your Data.