Compartir a través de


Origen de datos: Elasticsearch (versión preliminar)

Las opciones configurables de Elasticsearch al usar Azure OpenAI en los datos. Este origen de datos se admite a partir de la versión 2024-02-15-previewde API .

Nombre Tipo Obligatorio Descripción
parameters Parámetros Cierto Parámetros que se usarán al configurar Elasticsearch.
type cuerda / cadena Cierto Debe ser elasticsearch.

Parámetros

Nombre Tipo Obligatorio Descripción
endpoint cuerda / cadena Cierto Ruta de acceso del punto de conexión absoluto para el recurso de Elasticsearch que se va a usar.
index_name cuerda / cadena Cierto Nombre del índice que se va a usar en Elasticsearch al que se hace referencia.
authentication Uno de KeyAndKeyIdAuthenticationOptions, EncodedApiKeyAuthenticationOptions Cierto Método de autenticación que se va a usar al acceder al origen de datos definido.
embedding_dependency Uno de DeploymentNameVectorizationSource, EndpointVectorizationSource, ModelIdVectorizationSource Falso Dependencia de inserción para el vector de búsqueda. Obligatorio cuando query_type es vector.
fields_mapping FieldsMappingOptions Falso Comportamiento personalizado de asignación de campos que se usará al interactuar con el índice de búsqueda.
in_scope booleano Falso Si las consultas deben restringirse al uso de datos indexados. El valor predeterminado es True.
query_type QueryType Falso Tipo de consulta que se va a usar con Elasticsearch. Valor predeterminado: simple
role_information cuerda / cadena Falso Proporcione instrucciones al modelo sobre cómo debe comportarse y cualquier contexto al que debe hacer referencia al generar una respuesta. Puede describir la personalidad del asistente y indicarle cómo dar formato a las respuestas.
strictness entero Falso La configuración estricta del filtrado de relevancia de búsqueda. Cuanto más estricta sea, mayor será la precisión, pero una menor coincidencia de la respuesta. El valor predeterminado es 3.
top_n_documents entero Falso El número superior configurado de documentos que se van a presentar para la consulta configurada. El valor predeterminado es 5.

Opciones de autenticación

Azure OpenAI en los datos admite varios tipos de autenticación:

Opciones de autenticación de clave e id. clave

Las opciones de autenticación de Azure OpenAI en los datos al usar una clave de API.

Nombre Tipo Obligatorio Descripción
key cuerda / cadena Cierto Clave de Elasticsearch que se va a usar para la autenticación.
key_id cuerda / cadena Cierto Id. clave de Elasticsearch que se va a usar para la autenticación.
type cuerda / cadena Cierto Debe ser key_and_key_id.

Opciones de autenticación de clave de API codificadas

Las opciones de autenticación de Azure OpenAI en los datos al usar una clave de API codificada en Elasticsearch.

Nombre Tipo Obligatorio Descripción
encoded_api_key cuerda / cadena Cierto Clave de API codificada en Elasticsearch que se usará para la autenticación.
type cuerda / cadena Cierto Debe ser encoded_api_key.

Origen de vectorización de nombre de implementación

Los detalles del origen de vectorización, que usa Azure OpenAI en los datos al aplicar el vector de búsqueda. Este origen de vectorización se basa en un nombre de implementación de modelos de inserción interno en el mismo recurso de Azure OpenAI. Este origen de vectorización le permite usar vector de búsqueda sin clave de API de Azure OpenAI y sin acceso a la red pública de Azure OpenAI.

Nombre Tipo Obligatorio Descripción
deployment_name cuerda / cadena Cierto El nombre de implementación de modelo de inserción dentro del mismo recurso de Azure OpenAI.
type cuerda / cadena Cierto Debe ser deployment_name.

Origen de vectorización de punto de conexión

Los detalles del origen de vectorización, que usa Azure OpenAI en los datos al aplicar el vector de búsqueda. Este origen de vectorización se basa en el punto de conexión de la API de inserción de Azure OpenAI.

Nombre Tipo Obligatorio Descripción
endpoint cuerda / cadena Cierto Especifica la dirección URL del punto de conexión de recurso desde la que se deben recuperar las incrustaciones. Debe tener el formato https://{YOUR_RESOURCE_NAME}.openai.azure.com/openai/deployments/YOUR_DEPLOYMENT_NAME/embeddings. No se permite el parámetro de consulta api-version.
authentication ApiKeyAuthenticationOptions Cierto Especifica las opciones de autenticación que se usarán al recuperar incrustaciones desde el punto de conexión especificado.
type cuerda / cadena Cierto Debe ser endpoint.

Opciones de autenticación de clave de API

Las opciones de autenticación de Azure OpenAI en los datos al usar una clave de API.

Nombre Tipo Obligatorio Descripción
key cuerda / cadena Cierto Clave de API que se va a usar para la autenticación.
type cuerda / cadena Cierto Debe ser api_key.

Origen de vectorización de id. de modelo

Los detalles del origen de vectorización, que usa Azure OpenAI en los datos al aplicar el vector de búsqueda. Este origen de vectorización se basa en el id. de modelo de Elasticsearch.

Nombre Tipo Obligatorio Descripción
model_id cuerda / cadena Cierto Especifica el id. de modelo que se va a usar para la vectorización. Este id. de modelo debe definirse en Elasticsearch.
type cuerda / cadena Cierto Debe ser model_id.

Opciones de asignación de campos

Opciones opcionales para controlar cómo se procesan los campos al usar un recurso de Elasticsearch configurado.

Nombre Tipo Obligatorio Descripción
content_fields string[] Falso Nombre de los campos de índice que se deben tratar como contenido.
vector_fields string[] Falso Nombres de campos que representan datos vectoriales.
content_fields_separator cuerda / cadena Falso Patrón separador que deben usar los campos de contenido. El valor predeterminado es \n.
filepath_field cuerda / cadena Falso Nombre del campo de índice que se va a usar como ruta de acceso de archivo.
title_field cuerda / cadena Falso Nombre del campo de índice que se va a usar como título.
url_field cuerda / cadena Falso Nombre del campo de índice que se va a usar como dirección URL.

Tipo de consulta

Tipo de consulta de recuperación de Elasticsearch que se debe ejecutar al usarlo con Azure OpenAI en los datos.

Valor de enumeración Descripción
simple Representa el analizador de consultas simple predeterminado.
vector Representa el vector de búsqueda sobre los datos calculados.

Ejemplos

Requisitos previos:

  • Configure las asignaciones de roles del usuario al recurso de Azure OpenAI. Rol necesario: Cognitive Services OpenAI User.
  • Instale la CLI de Az y ejecute az login.
  • Defina las siguientes variables de entorno: AzureOpenAIEndpoint, ChatCompletionsDeploymentName, SearchEndpoint, IndexName, Key, KeyId.
export AzureOpenAIEndpoint=https://example.openai.azure.com/
export ChatCompletionsDeploymentName=turbo
export SearchEndpoint='https://example.eastus.azurecontainer.io'
export IndexName=testindex
export Key='***'
export KeyId='***'

Instale los paquetes de pip más recientes openai, azure-identity.

import os
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

endpoint = os.environ.get("AzureOpenAIEndpoint")
deployment = os.environ.get("ChatCompletionsDeploymentName")
index_name = os.environ.get("IndexName")
search_endpoint = os.environ.get("SearchEndpoint")
key = os.environ.get("Key")
key_id = os.environ.get("KeyId")

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default")

client = AzureOpenAI(
    azure_endpoint=endpoint,
    azure_ad_token_provider=token_provider,
    api_version="2024-02-15-preview",
)

completion = client.chat.completions.create(
    model=deployment,
    messages=[
        {
            "role": "user",
            "content": "Who is DRI?",
        },
    ],
    extra_body={
        "data_sources": [
            {
                "type": "elasticsearch",
                "parameters": {
                    "endpoint": search_endpoint,
                    "index_name": index_name,
                    "authentication": {
                        "type": "key_and_key_id",
                        "key": key,
                        "key_id": key_id
                    }
                }
            }
        ]
    }
)

print(completion.model_dump_json(indent=2))