Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Note
Pesquisa de IA do Azure está disponível por meio do portal Azure, APIs REST e SDKs do Azure. Ele também sustenta o IQ do Foundry, a camada de conhecimento gerenciado que transforma o conteúdo da empresa em bases de conhecimento reutilizáveis e com reconhecimento de permissão para agentes no portal do Microsoft Foundry.
Importante
Recursos, funcionalidades ou propriedades marcados como (versão prévia) não são cobertos por um contrato de nível de serviço (SLA), não são recomendados para cargas de trabalho de produção e podem mudar ou ser restringidos antes da disponibilidade geral. Os termos de visualização do Pesquisa de IA do Azure se aplicam a toda funcionalidade em visualização, seja autônoma ou parte de um recurso de disponibilidade geral.
Importante
Esses recursos e funcionalidades dão suporte a conexões com outros serviços de serviços Microsoft e de terceiros. O uso desses serviços está sujeito aos respectivos termos e pode resultar em processamento ou armazenamento de dados fora do limite de conformidade Azure, bem como dados que fluem para o limite de conformidade Azure.
É sua responsabilidade gerenciar se os seus dados serão transferidos para fora dos limites geográficos e de conformidade da sua organização, bem como quaisquer implicações relacionadas, e garantir que as permissões, os limites e as aprovações apropriados estejam devidamente estabelecidos.
Você é responsável por examinar e testar cuidadosamente os aplicativos que cria no contexto de seus casos de uso específicos e tomar todas as decisões e personalizações apropriadas. Isso inclui implementar suas próprias mitigações de IA responsáveis, como metaprompts, filtros de conteúdo ou outros sistemas de segurança, e garantir que seus aplicativos atendam aos padrões adequados de qualidade, confiabilidade, segurança e confiabilidade. Para obter mais informações, consulte a Pesquisa de IA do Azure Nota de Transparência.
O Azure Cosmos DB do indexador Apache Gremlin (versão prévia) importa conteúdo de Azure Cosmos DB para Apache Gremlin e o torna pesquisável em Pesquisa de IA do Azure .
Este artigo complementa Criar um indexador com informações específicas do Cosmos DB. Ele usa as APIs REST para demonstrar um fluxo de trabalho de três partes comum a todos os indexadores: criar uma fonte de dados, criar um índice e criar um indexador. A extração de dados ocorre quando você envia a solicitação Criar Indexador.
Como a terminologia pode ser confusa, é importante observar que a indexação do Azure Cosmos DB e a indexação do Pesquisa de IA do Azure são operações diferentes. A indexação em Pesquisa de IA do Azure cria e carrega um índice de pesquisa em seu serviço de pesquisa.
Pré-requisitos
Preencha o formulário de registro de visualização do indexador. O registro é aprovado automaticamente.
Uma conta Azure Cosmos DB, banco de dados, contêiner e itens. Use a mesma região para Pesquisa de IA do Azure e Azure Cosmos DB para menor latência e para evitar encargos de largura de banda.
Uma política de indexação automática na coleção Azure Cosmos DB, definida como Consistent. Essa configuração é a configuração padrão. A indexação lenta não é recomendada e pode resultar em dados ausentes.
Permissões de leitura. Uma cadeia de conexão de "acesso completo" inclui uma chave que permite acesso ao conteúdo, mas se você estiver usando funções do Azure, verifique se a identidade gerenciada do serviço de pesquisa tem as permissões Função de Leitor da Conta do Cosmos DB.
Um cliente REST para criar a fonte de dados, o índice e o indexador.
Definir a fonte de dados
A definição da fonte de dados especifica os dados para indexar, credenciais e políticas para identificar alterações nos dados. Uma fonte de dados é definida como um recurso independente para que possa ser usada por vários indexadores.
Para essa chamada, especifique uma versão prévia da API REST para criar uma fonte de dados que se conecta por meio de Azure Cosmos DB para Apache Gremlin. Você pode usar 2021-04-01-preview ou versão posterior. Recomendamos a API REST de versão prévia mais recente.
Crie ou atualize uma fonte de dados para definir sua definição:
POST https://[service name].search.windows.net/datasources?api-version=2026-08-01-preview Content-Type: application/json api-key: [Search service admin key] { "name": "[my-cosmosdb-gremlin-ds]", "type": "cosmosdb", "credentials": { "connectionString": "AccountEndpoint=https://[cosmos-account-name].documents.azure.com;AccountKey=[cosmos-account-key];Database=[cosmos-database-name];ApiKind=Gremlin;" }, "container": { "name": "[cosmos-db-collection]", "query": "g.V()" }, "dataChangeDetectionPolicy": { "@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy", "highWaterMarkColumnName": "_ts" }, "dataDeletionDetectionPolicy": null, "encryptionKey": null, "identity": null }Defina "type" como
"cosmosdb"(obrigatório).Defina "credentials" como "cadeia de conexão". A próxima seção descreve os formatos com suporte.
Defina "contêiner" para a coleção. A propriedade "name" é necessária e especifica a ID do grafo.
A propriedade "query" é opcional. Por padrão, o indexador de Pesquisa de IA do Azure para Azure Cosmos DB para Apache Gremlin torna cada vértice no grafo um documento no índice. As bordas são ignoradas. O padrão da consulta é
g.V(). Como alternativa, você pode definir a consulta para indexar apenas as bordas. Para indexar as bordas, defina a consulta comog.E().Defina "dataChangeDetectionPolicy" se os dados forem voláteis e você quiser que o indexador pegue apenas os itens novos e atualizados nas execuções subsequentes. O progresso incremental é habilitado por padrão usando
_tscomo a coluna de marca d' água alta.Defina "dataDeletionDetectionPolicy" se quiser remover documentos de pesquisa de um índice de pesquisa quando o item de origem for excluído.
Credenciais e cadeias de conexão com suporte
Os indexadores podem se conectar a uma coleção usando as conexões a seguir. Para conexões que têm como alvo o Azure Cosmos DB para Apache Gremlin, inclua "ApiKind" na cadeia de conexão.
Evite números de porta na URL do ponto de extremidade. Se você incluir o número da porta, a conexão falhará.
| Cadeia de conexão de acesso completo |
|---|
{ "connectionString" : "AccountEndpoint=https://<Cosmos DB account name>.documents.azure.com;AccountKey=<Cosmos DB auth key>;Database=<Cosmos DB database id>;ApiKind=Gremlin" } |
| Você pode obter a string de conexão na página da conta do Azure Cosmos DB no portal do Azure, selecionando Chaves no painel esquerdo. Certifique-se de selecionar uma cadeia de conexão completa e não apenas uma chave. |
| Cadeia de conexão de identidade gerenciada |
|---|
{ "connectionString" : "ResourceId=/subscriptions/<your subscription ID>/resourceGroups/<your resource group name>/providers/Microsoft.DocumentDB/databaseAccounts/<your cosmos db account name>/;(ApiKind=[api-kind];)" } |
| Esse cadeia de conexão não requer uma chave de conta, mas você deve ter configurado anteriormente um serviço de pesquisa para conectar usando uma identidade gerenciada e criado uma atribuição de função que concede permissões Cosmos DB Account Reader Role. Consulte Configuração de uma conexão de indexador a um banco de dados do Azure Cosmos DB usando uma identidade gerenciada para mais informações. |
Adicionar campos de pesquisa a um índice
Em um índice de pesquisa, adicione campos para aceitar os documentos JSON de origem ou a saída da projeção de consulta personalizada. Verifique se o esquema de índice de pesquisa é compatível com o grafo. Para obter conteúdo em Azure Cosmos DB, o esquema de índice de pesquisa deve corresponder aos itens Azure Cosmos DB na fonte de dados.
Crie ou atualize um índice para definir campos de pesquisa que armazenam dados:
POST https://[service name].search.windows.net/indexes?api-version=2026-08-01-preview Content-Type: application/json api-key: [Search service admin key] { "name": "mysearchindex", "fields": [ { "name": "rid", "type": "Edm.String", "facetable": false, "filterable": false, "key": true, "retrievable": true, "searchable": true, "sortable": false, "analyzer": "standard.lucene", "indexAnalyzer": null, "searchAnalyzer": null, "synonymMaps": [], "fields": [] }, { "name": "label", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true, "sortable": false, "facetable": false, "key": false, "indexAnalyzer": null, "searchAnalyzer": null, "analyzer": "standard.lucene", "synonymMaps": [] }] }Crie um campo de chave de documento ("chave": true). Para coleções particionadas, a chave de documento padrão é a propriedade Azure Cosmos DB
_rid, que Pesquisa de IA do Azure renomeia automaticamente pararidporque os nomes de campo não podem começar com um caractere de sublinhado. Além disso, os valores do Azure Cosmos DB_ridcontêm caracteres inválidos nas chaves do Pesquisa de IA do Azure . Por esse motivo, os_ridvalores são codificados em Base64.Crie campos adicionais para obter mais conteúdo pesquisável. Consulte Criar um índice para obter detalhes.
Mapeamento de tipos de dados
| Tipo de dados JSON | Os tipos de campo do Pesquisa de IA do Azure |
|---|---|
| Bool | Edm.Boolean, Edm.String |
| Números que parecem inteiros | Edm.Int32, Edm.Int64, Edm.String |
| Números que parecem pontos flutuantes | Edm.Double, Edm.String |
| String | Edm.String |
| Matrizes de tipos primitivos como ["a", "b", "c"] | Collection(Edm.String) |
| Cadeias de caracteres que parecem datas | Edm.DateTimeOffset, Edm.String |
| Objetos GeoJSON como { "type": "Point", "coordinates": [long, lat] } | Edm.GeographyPoint |
| Outros objetos JSON | N/A |
Configurar e executar o indexador Azure Cosmos DB
Depois que o índice e a fonte de dados tiverem sido criados, você estará pronto para criar o indexador. A configuração do indexador especifica as entradas, os parâmetros e as propriedades que controlam os comportamentos de tempo de execução.
Crie ou atualize um indexador dando-lhe um nome e fazendo referência à fonte de dados e ao índice de destino:
POST https://[service name].search.windows.net/indexers?api-version=2026-08-01-preview Content-Type: application/json api-key: [search service admin key] { "name" : "[my-cosmosdb-indexer]", "dataSourceName" : "[my-cosmosdb-gremlin-ds]", "targetIndexName" : "[my-search-index]", "disabled": null, "schedule": null, "parameters": { "batchSize": null, "maxFailedItems": 0, "maxFailedItemsPerBatch": 0, "base64EncodeKeys": false, "configuration": {} }, "fieldMappings": [], "encryptionKey": null }Especifique mapeamentos de campo se houver diferenças no nome ou tipo de campo ou se você precisar de várias versões de um campo de origem no índice de pesquisa.
Consulte Criar um indexador para obter mais informações sobre outras propriedades.
Um indexador é executado automaticamente quando é criado. Você pode impedir isso definindo "desabilitado" como true. Para controlar a execução do indexador, execute um indexador sob demanda ou coloque-o em um agendamento.
Verificar o status do indexador
Para monitorar o status do indexador e o histórico de execução, envie uma solicitação Obter Status do Indexador :
GET https://myservice.search.windows.net/indexers/myindexer/status?api-version=2026-08-01-preview
Content-Type: application/json
api-key: [admin key]
A resposta inclui o status e o número de itens processados. Ele deve ser semelhante ao exemplo a seguir:
{
"status":"running",
"lastResult": {
"status":"success",
"errorMessage":null,
"startTime":"2022-02-21T00:23:24.957Z",
"endTime":"2022-02-21T00:36:47.752Z",
"errors":[],
"itemsProcessed":1599501,
"itemsFailed":0,
"initialTrackingState":null,
"finalTrackingState":null
},
"executionHistory":
[
{
"status":"success",
"errorMessage":null,
"startTime":"2022-02-21T00:23:24.957Z",
"endTime":"2022-02-21T00:36:47.752Z",
"errors":[],
"itemsProcessed":1599501,
"itemsFailed":0,
"initialTrackingState":null,
"finalTrackingState":null
},
... earlier history items
]
}
O histórico de execução contém até 50 das execuções concluídas mais recentemente, que são classificadas na ordem cronológica inversa para que a execução mais recente venha primeiro.
Indexando documentos novos e alterados
Depois que um indexador preencher totalmente um índice de pesquisa, talvez você queira que o indexador subsequente seja executado para indexar incrementalmente apenas os documentos novos e alterados em seu banco de dados.
Para habilitar a indexação incremental, defina a propriedade "dataChangeDetectionPolicy" na definição da fonte de dados. Essa propriedade informa ao indexador qual mecanismo de controle de alterações é usado em seus dados.
Para indexadores do Azure Cosmos DB, única política com suporte é HighWaterMarkChangeDetectionPolicy usando a propriedade _ts (carimbo de data/hora) fornecida pelo Azure Cosmos DB.
O exemplo a seguir mostra uma definição de fonte de dados com uma política de detecção de alterações:
"dataChangeDetectionPolicy": {
"@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
"highWaterMarkColumnName": "_ts"
},
Indexando documentos excluídos
Quando os dados do grafo são excluídos, talvez você queira excluir seu documento correspondente do índice de pesquisa também. A finalidade de uma política de detecção de exclusão de dados é identificar com eficiência os itens de dados excluídos e excluir o documento completo do índice. A política de detecção de exclusão de dados não se destina a excluir informações parciais do documento. Atualmente, a única política com suporte é a política Soft Delete (a exclusão é marcada por algum tipo de sinalizador), que é especificada na definição da fonte de dados da seguinte maneira:
"dataDeletionDetectionPolicy": {
"@odata.type" : "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
"softDeleteColumnName" : "the property that specifies whether a document was deleted",
"softDeleteMarkerValue" : "the value that identifies a document as deleted"
}
O exemplo a seguir cria uma fonte de dados com uma política de exclusão reversível:
POST https://[service name].search.windows.net/datasources?api-version=2026-08-01-preview
Content-Type: application/json
api-key: [Search service admin key]
{
"name": "[my-cosmosdb-gremlin-ds]",
"type": "cosmosdb",
"credentials": {
"connectionString": "AccountEndpoint=https://[cosmos-account-name].documents.azure.com;AccountKey=[cosmos-account-key];Database=[cosmos-database-name];ApiKind=Gremlin"
},
"container": { "name": "[my-cosmos-collection]" },
"dataChangeDetectionPolicy": {
"@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
"highWaterMarkColumnName": "`_ts`"
},
"dataDeletionDetectionPolicy": {
"@odata.type": "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
"softDeleteColumnName": "isDeleted",
"softDeleteMarkerValue": "true"
}
}
Mesmo se você habilitar a política de detecção de exclusão, não há suporte para a exclusão de campos complexos (Edm.ComplexType) do índice. Essa política exige que a coluna 'ativa' no banco de dados Gremlin seja de tipo inteiro, cadeia de caracteres ou booliano.
Mapeando dados em grafos nos campos de um índice de pesquisa
O indexador Azure Cosmos DB para Apache Gremlin mapeia automaticamente algumas partes dos dados do grafo:
O indexador mapeia
_ridpara umridcampo no índice se ele existir e o Base64 o codifica.O indexador mapeia
_idpara um campoidno índice, caso exista.Ao consultar seu banco de dados Azure Cosmos DB usando o Azure Cosmos DB para Apache Gremlin, você pode observar que a saída JSON para cada propriedade tem um
ide umvalue. O indexador mapeia automaticamente a propriedadevaluepara um campo no índice de pesquisa que tem o mesmo nome da propriedade, se existir. No exemplo a seguir, 450 é mapeado para umpagescampo no índice de pesquisa.
{
"id": "Cookbook",
"label": "book",
"type": "vertex",
"properties": {
"pages": [
{
"id": "48cf6285-a145-42c8-a0aa-d39079277b71",
"value": "450"
}
]
}
}
Você pode descobrir que precisa usar mapeamentos de campo de saída para mapear a saída da consulta para os campos em seu índice. Você provavelmente desejará usar mapeamentos de campo de saída em vez de mapeamentos de campo , já que a consulta personalizada provavelmente tem dados complexos.
Por exemplo, digamos que sua consulta produza esta saída:
[
{
"vertex": {
"id": "Cookbook",
"label": "book",
"type": "vertex",
"properties": {
"pages": [
{
"id": "48cf6085-a211-42d8-a8ea-d38642987a71",
"value": "450"
}
],
}
},
"written_by": [
{
"yearStarted": "2017"
}
]
}
]
Se você quiser mapear o valor de pages no JSON acima para um totalpages campo em seu índice, poderá adicionar o seguinte mapeamento de campo de saída à sua definição de indexador:
... // rest of indexer definition
"outputFieldMappings": [
{
"sourceFieldName": "/document/vertex/pages",
"targetFieldName": "totalpages"
}
]
Observe como o Mapeamento de Campo de Saída começa /document e não inclui uma referência à chave de propriedades no JSON. Isso ocorre porque o indexador coloca cada documento sob o nó /document ao ingerir os dados do gráfico e o indexador também permite que você faça referência automática ao valor de pages simplesmente referenciando pages em vez de ter que referenciar o primeiro objeto na matriz de pages.
Próximas etapas
Para saber mais sobre Azure Cosmos DB para Apache Gremlin, consulte o Introduction to Azure Cosmos DB: Azure Cosmos DB for Apache Gremlin.
Para obter mais informações sobre Pesquisa de IA do Azure cenários e preços, consulte a página de serviço Search no azure.microsoft.com.
Para saber mais sobre a configuração de rede para indexadores, consulte o acesso dos indexadores ao conteúdo protegido por recursos de segurança de rede do Azure.