View a markdown version of this page

Amazon Kendra Cambio de disponibilidad de de - Amazon Kendra

Amazon Kendra ya no está abierto a nuevos clientes. Para obtener capacidades similares a Amazon Kendra, consulte las bases de conocimiento de Amazon Bedrock. Más información.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Amazon Kendra Cambio de disponibilidad de de

Descripción general de

Tras considerarlo detenidamente, hemos tomado la decisión de Amazon Kendra ponerlo en modo de mantenimiento a partir del 30 de junio de 2026. A fecha de hoy, no se ha desarrollado ninguna función o capacidad nueva para el servicio y, a partir del 30 de julio de 2026, el servicio ya no estará disponible para nuevos clientes.

Durante el modo de mantenimiento, el servicio seguirá siendo totalmente compatible y AWS seguirá proporcionando correcciones de errores y actualizaciones de seguridad a los clientes actuales; sin embargo, ya no se tendrán en cuenta las solicitudes de nuevas funciones.

Recomendamos a los clientes que migren sus aplicaciones de Kendra e implementen cualquier aplicación de búsqueda nueva en la base de conocimientos gestionados de Amazon Bedrock (BMKB) para obtener capacidades similares a las de Kendra y funciones más avanzadas para los casos de uso de IA generativa y de IA agencial. Bedrock Managed Knowledge Base es una solución RAG totalmente gestionada, con conectores integrados, análisis inteligente, almacenamiento vectorial gestionado con búsqueda híbrida, además de la capacidad de generar respuestas (con una API de recuperación y generación) y realizar un razonamiento de varios pasos en varias bases de conocimiento (con una API de recuperación de agentes). BMKB también le brinda la posibilidad de ajustar las estrategias de fragmentación y los modelos de incrustación para optimizarlos para su aplicación específica, así como elegir el modelo base para la generación de respuestas. Este nuevo nivel de funciones y flexibilidad conlleva costes predecibles en función del tamaño de la base de conocimientos ingerida, el número de consultas realizadas y el uso del LLM.

Guía de migración

La migración de Amazon Bedrock Managed Knowledge Base (BMKB) Amazon Kendra a la base de conocimientos gestionados de Amazon Bedrock es posible con una planificación cuidadosa para la mayoría de las cargas de trabajo de RAG y búsquedas empresariales. No todas las funciones de Kendra están disponibles directamente en Bedrock Managed Knowledge Base, pero muchas se pueden implementar mediante soluciones alternativas. Esta guía proporciona una ruta de migración completa y paso a paso para que los clientes actuales de Kendra puedan realizar la transición de sus aplicaciones a BMKB, e incluye el mapeo de la arquitectura, la traducción de API, los ejemplos de código, el análisis de las brechas de funciones y las soluciones alternativas recomendadas.

Características de la base de conocimientos gestionada por Amazon Bedrock

BMKB administra toda la cartera de RAG de principio a fin. Es compatible con modelos de incrustación como Amazon Titan Text Embeddings V2, Cohere Embed English v3, Cohere Embed Multilingual v3, Cohere Embed v4 y Amazon Nova Multimodal Embeddings, todos ellos fijos en 1024 dimensiones con vectores float32. La tienda vectorial gestionada es gestionada en su totalidad por Bedrock, lo que elimina la necesidad de aprovisionar o gestionar Aurora u otras bases de datos vectoriales. OpenSearch Entre las estrategias de fragmentación se incluyen las siguientes: Default (tamaño fijo de aproximadamente 300 fichas), Fixed-size (maxTokens y OverlapPercentage configurables), jerárquica (padre-hijo con configuraciones de niveles) y sin fragmentación; las bases de conocimiento gestionadas no admiten la fragmentación semántica.

Actualmente, BMKB admite siete conectores de fuentes de datos: Amazon S3, Confluence, Microsoft, Web Crawler, Google Drive, Microsoft y un conector personalizado. SharePoint OneDrive El servicio siempre realiza una búsqueda híbrida (palabra clave más semántica) y no ofrece un modo de búsqueda exclusivamente semántica.

Comparación de arquitectura entre Amazon Kendra y Bedrock Managed Knowledge Base
Característica Kendra Base de conocimiento gestionada por Bedrock
Conectores nativos Más de 32 conectores 7 conectores
Incrustación Administrado internamente Customer-selectable (Titan V2, Cohere, Nova)
Tienda de vectores Gestionado internamente Totalmente gestionado por Bedrock
Tipo de búsqueda Palabra clave, semántica o híbrida Híbrido (palabra clave + semántica)
Soporte RAG Requiere una integración de LLM externa API nativa RetrieveAndGenerate
Recuperación por agencia No disponible Recuperación nativa de múltiples iteraciones
Máximos resultados 100 pasajes (API de recuperación) 100 resultados (API de recuperación)

Pasos para realizar la migración

Configuración de la base de conocimientos gestionada de Amazon Bedrock

Paso 1: configurar las funciones de IAM

Cree un rol de IAM que conceda a Bedrock permiso para acceder a sus fuentes de datos e invocar modelos de incrustación. La política de confianza debe permitir a bedrock.amazonaws.com asumir el rol, y la política de permisos debe incluir el acceso a tus cubos de S3 y al modelo de incrustación seleccionado.

Configuración de IAM (código Python):

import boto3 import json iam = boto3.client('iam') trust_policy = { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "bedrock.amazonaws.com"}, "Action": "sts:AssumeRole" }] } iam.create_role( RoleName="BedrockKBRole", AssumeRolePolicyDocument=json.dumps(trust_policy), Description="Role for Bedrock Managed Knowledge Base" ) permissions_policy = { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:GetObject", "s3:ListBucket"], "Resource": [ "arn:aws:s3:::your-bucket-name", "arn:aws:s3:::your-bucket-name/*" ] }, { "Effect": "Allow", "Action": ["bedrock:InvokeModel"], "Resource": ["arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0"] } ] } iam.put_role_policy( RoleName="BedrockKBRole", PolicyName="BedrockKBPermissions", PolicyDocument=json.dumps(permissions_policy) )

Paso 2: Crear una base de conocimientos gestionada

Utilice la CreateKnowledgeBase API con el tipo MANAGED para crear la base de conocimientos:

import boto3 bedrock_agent = boto3.client("bedrock-agent", region_name="us-east-1") response = bedrock_agent.create_knowledge_base( name="my-managed-kb", description="Migrated from Kendra index", roleArn="arn:aws:iam::123456789012:role/BedrockKBRole", knowledgeBaseConfiguration={ "type": "MANAGED", "managedKnowledgeBaseConfiguration": { "embeddingModelArn": "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-embed-text-v2:0", "embeddingModelConfiguration": { "bedrockEmbeddingModelConfiguration": { "embeddingDataType": "FLOAT32" } } } } ) kb_id = response["knowledgeBase"]["knowledgeBaseId"] print(f"Created knowledge base: {kb_id}")

Paso 3: configurar las fuentes de datos

Cree una fuente de datos S3 con la configuración del conector administrado:

response = bedrock_agent.create_data_source( knowledgeBaseId=kb_id, name="my-s3-data-source", description="Product documentation from S3", dataSourceConfiguration={ "type": "MANAGED_KNOWLEDGE_BASE_CONNECTOR", "managedKnowledgeBaseConnectorConfiguration": { "connectorParameters": { "type": "S3", "version": "1", "connectionConfiguration": { "bucketName": "your-bucket-name", "bucketOwnerAccountId": "123456789012" }, "filterConfiguration": { "inclusionPrefixes": ["documents/"] } } } }, vectorIngestionConfiguration={ "parsingConfiguration": { "parsingStrategy": "SMART_PARSING" } } ) data_source_id = response["dataSource"]["dataSourceId"] print(f"Created data source: {data_source_id}")
nota

CreateDataSource es asincrónico para las bases de conocimiento administradas. El estado de la fuente de datos pasa de CREATING a AVAILABLE, normalmente en un plazo de 2 a 5 minutos. No continúe con la ingestión hasta que el estado esté DISPONIBLE.

Paso 4: Iniciar y controlar la ingestión

Activa la ingesta de documentos y realiza una encuesta para completarlos:

import time ingestion_response = bedrock_agent.start_ingestion_job( knowledgeBaseId=kb_id, dataSourceId=data_source_id, description="Initial ingestion" ) ingestion_job_id = ingestion_response["ingestionJob"]["ingestionJobId"] print(f"Started ingestion job: {ingestion_job_id}") while True: job_response = bedrock_agent.get_ingestion_job( knowledgeBaseId=kb_id, dataSourceId=data_source_id, ingestionJobId=ingestion_job_id ) job = job_response["ingestionJob"] status = job["status"] stats = job.get("statistics", {}) print(f"Status: {status} | Scanned: {stats.get('numberOfDocumentsScanned', 0)} | " f"Indexed: {stats.get('numberOfNewDocumentsIndexed', 0)} | " f"Failed: {stats.get('numberOfDocumentsFailed', 0)}") if status == "COMPLETE": print("Ingestion complete!") break elif status in ("FAILED", "STOPPED"): print(f"Ingestion {status}: {job.get('failureReasons', [])}") break time.sleep(30)

Ejemplos de código y mapeo de migración de API

Mapeo de operaciones de API

Mapeo de operaciones de API de Kendra a BMKB
Operación API de Kendra API BMKB Cliente
Crear index/KB kendra.create_index () bedrock-agent.create_knowledge_base () kendra → agente base
Agregar fuente de datos kendra.create_data_source (Type="S3") bedrock-agent.create_data_source () kendra → bedrock-agent
Sync/ingest documentos kendra.start_data_source_sync_job () bedrock-agent.start_ingestion_job () kendra → agente base
Agregar documentos por lotes kendra.batch_put_document () No se admite directamente (usa S3 upload + ingestion) kendra → S3 + bedrock-agent
Recupera pasajes kendra.retrieve (=...) QueryText bedrock-agent-runtime.retrieve () kendra → bedrock-agent-runtime
Busca con filtros AttributeFilter: {"EqualsTo": {...}} filtro: {"es igual a»: {...}} Mismo patrón, sintaxis diferente
Generación RAG N/A (se requiere un LLM externo) bedrock-agent-runtime.retrieve_and_generate () Nueva capacidad

Migración de la API Retrieve

Antes (Kendra):

kendra_client = boto3.client("kendra") response = kendra_client.retrieve( IndexId="your-kendra-index-id", QueryText="How do I configure VPC endpoints?", AttributeFilter={ "EqualsTo": { "Key": "_category", "Value": {"StringValue": "networking"} } }, PageSize=10 ) for item in response["ResultItems"]: print(item["DocumentTitle"]) print(item["Content"])

Después (BMKB):

bedrock_runtime = boto3.client("bedrock-agent-runtime", region_name="us-east-1") response = bedrock_runtime.retrieve( knowledgeBaseId="your-kb-id", retrievalQuery={ "text": "How do I configure VPC endpoints?" }, retrievalConfiguration={ "managedSearchConfiguration": { "numberOfResults": 10, "filter": { "equals": { "key": "category", "value": "networking" } } } } ) for result in response["retrievalResults"]: print(f"Score: {result['score']}") print(f"Content: {result['content']['text']}") print(f"Source: {result['location']['s3Location']['uri']}")

Las principales diferencias son: el texto de la consulta pasa de AttributeFilter ser un parámetro de nivel superior a un campo de recuperación anidado, pasa a ser un filtro dentro del Query.text campo gestionado SearchConfiguration y los resultados incluyen un campo de puntuación de relevancia.

Utilización para RAG RetrieveAndGenerate

BMKB proporciona una capacidad RAG nativa que elimina la necesidad de llamar por separado a un LLM después de la recuperación:

response = bedrock_runtime.retrieve_and_generate( input={ "text": "Explain how to configure VPC endpoints for S3 access" }, retrieveAndGenerateConfiguration={ "type": "KNOWLEDGE_BASE", "knowledgeBaseConfiguration": { "knowledgeBaseId": "your-kb-id", "modelArn": "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-sonnet-20240229-v1:0", "retrievalConfiguration": { "managedSearchConfiguration": { "numberOfResults": 5 } } } } ) # Generated answer with citations print(response["output"]["text"]) # Source citations for citation in response.get("citations", []): for ref in citation.get("retrievedReferences", []): print(f"Source: {ref['location']['s3Location']['uri']}")

Esta API devuelve una respuesta generada en lenguaje natural junto con citas que remiten a los documentos de origen, lo que proporciona un RAG integrado que Kendra no ofrece de forma nativa.

Filtro de metadatos y traducción de sintaxis

Mapeo de operadores de filtros de metadatos
Kendra AttributeFilter Filtro BMKB Notas
EqualsTo equals Mapeo directo
ContainsAll en (parcial) BMKB usa una membresía establecida
ContainsAny in Mapeo directo
GreaterThan greaterThan Mapeo directo
LessThan lessThan Mapeo directo
GreaterThanOrEquals mayor ThanOrEquals Mapeo directo
LessThanOrEquals menos ThanOrEquals Mapeo directo
NotFilter No es igual a In/No Usa la negación apropiada
AndAllFilters andAll Mapeo directo
OrAllFilters orAll Mapeo directo
nota

BMKB no admite los operadores StartsWith o StringContains para las bases de conocimiento administradas. Si su aplicación de Kendra utiliza la coincidencia de caracteres comodín o de subcadenas en los filtros, tendrá que reestructurar su esquema de metadatos para utilizar en su lugar patrones de coincidencia exacta o de pertenencia a conjuntos.

Brechas en las funciones y soluciones

No todas las funciones de Kendra están disponibles en BMKB. Las sugerencias de consultas, la búsqueda por facetas, los sinónimos personalizados, la revisión ortográfica, el aprendizaje incremental y el enriquecimiento de documentos son funciones que requieren soluciones en BMKB. En esta sección se describen estas soluciones.

Sugerencias de consulta (autocompletar)

Kendra proporciona la GetQuerySuggestions API que devuelve sugerencias de autocompletado basadas en el vocabulario de los documentos indexados. Actualmente, BMKB no ofrece esta capacidad.

Solución alternativa: Implemente una capa de autocompletado personalizada con Amazon OpenSearch Service, con su función de sugerencia integrada, o utilice un servicio de finalización de consultas. LLM-based También puede utilizar Bedrock Agents para reformular las consultas parciales antes de recuperarlas. Un enfoque práctico consiste en mantener un OpenSearch índice independiente de los términos de consulta más comunes extraídos del corpus de documentos y llamar a su API de sugerencias desde la interfaz de usuario antes de iniciar la recuperación de BMKB.

Búsqueda facetada

Kendra admite facetas de atributos de documentos mediante el parámetro Facetas de la API de consultas, que muestra hasta 10 valores de faceta por faceta con el recuento de documentos. La arquitectura de BMKB no admite la búsqueda por facetas.

Solución alternativa: simule la navegación por facetas mediante el filtrado de metadatos. Etiquete los documentos con atributos de metadatos estructurados (departamento, autor, tipo de documento, intervalo de fechas) en archivos sidecar .metadata.json. Presenta las opciones de filtro en la interfaz de usuario de tu aplicación en función de tu esquema de metadatos conocido y aplica los operadores de filtro correspondientes en el momento de la consulta. Si bien esto no proporciona recuentos dinámicos de facetas, permite a los usuarios filtrar los resultados por categoría:

# Simulating faceted search with metadata filters response = bedrock_runtime.retrieve( knowledgeBaseId="your-kb-id", retrievalQuery={"text": "security best practices"}, retrievalConfiguration={ "managedSearchConfiguration": { "numberOfResults": 10, "filter": { "andAll": [ {"equals": {"key": "department", "value": "engineering"}}, {"equals": {"key": "doc_type", "value": "policy"}} ] } } } )
Sinónimos personalizados

Kendra permite crear un mapeo personalizado de términos específicos de la empresa que se asignan a otros términos para que coincidan con los resultados de la búsqueda mediante un archivo de sinónimos. Actualmente, BMKB no admite sinónimos personalizados.

Solución alternativa: cree un servicio de expansión de sinónimos ligero para sus consultas de BMKB:

  • Mantenga su archivo de sinónimos Kendra existente (o un diccionario de sinónimos en) DynamoDB/S3

  • Antes de llamar a la RetrieveAndGenerate API o a la API BMKB Retrieve, amplíe la consulta del usuario añadiendo los sinónimos coincidentes

  • Ejemplo: si el usuario consulta «Problemas de DNS», tu aplicación la reescribe como «Problemas de DNS Route53» antes de enviarla a BMKB

Esto funciona especialmente bien porque BMKB siempre utiliza una búsqueda híbrida (palabra clave más semántica), por lo que añadir términos sinónimos al texto de la consulta coincidirá tanto en la dimensión semántica como en la palabra clave.

Revisión ortográfica

Kendra proporciona correcciones ortográficas automáticas basadas en el vocabulario de los documentos indexados a través de. SpellCorrectionConfiguration Actualmente, BMKB no admite la revisión ortográfica.

Solución alternativa: Añada una capa de preprocesamiento antes de enviar las consultas a BMKB. Utilice una función de AWS Lambda que invoque una biblioteca de corrección ortográfica (como SymSpell o) o TextBlob llame a un LLM para corregir las consultas:

import boto3 lambda_client = boto3.client("lambda") def correct_and_retrieve(query_text, kb_id): # Step 1: Spell-correct the query using a Lambda function correction_response = lambda_client.invoke( FunctionName="spell-correction-function", Payload=json.dumps({"query": query_text}) ) corrected_query = json.loads(correction_response["Payload"].read())["corrected"] # Step 2: Query BMKB with corrected text bedrock_runtime = boto3.client("bedrock-agent-runtime") return bedrock_runtime.retrieve( knowledgeBaseId=kb_id, retrievalQuery={"text": corrected_query}, retrievalConfiguration={"managedSearchConfiguration": {"numberOfResults": 5}} )
Aprendizaje incremental

Kendra es compatible con la SubmitFeedback API para obtener señales de clics y comentarios relevantes para mejorar la clasificación a lo largo del tiempo. BMKB no ofrece esta capacidad.

Solución alternativa: utilice los modelos de reclasificación de BMKB para mejorar la relevancia en el momento de la consulta. Cree un circuito de comentarios personalizado que almacene las señales de clics y valoración de los usuarios en un banco de datos externo (como DynamoDB) y utilice esas señales para ajustar la ponderación del aumento de los metadatos o los parámetros de reclasificación. Para lograr mejoras a largo plazo, considera la posibilidad de ajustar periódicamente tu modelo de incrustación en función de los comentarios de relevancia recopilados.

Enriquecimiento personalizado de documentos

Kendra admite ganchos Lambda previos y posteriores a la extracción, que manipulan el contenido y los metadatos de los documentos durante la ingestión. BMKB utiliza el análisis inteligente para procesar documentos, pero no ofrece ganchos Lambda equivalentes.

Solución alternativa: Implemente una canalización de preprocesamiento mediante AWS Step Functions o Lambda que transforme los documentos antes de colocarlos en S3 para su ingestión en formato BMKB. Esta canalización puede realizar la extracción de contenido, el enriquecimiento de metadatos, la redacción de la PII o la conversión de formato antes de que los documentos lleguen al bucket de la fuente de datos de BMKB.

Estrategia de migración de fuentes de datos

Brecha de cobertura del conector

Kendra admite 32 conectores nativos, mientras que BMKB admite 7. Para las fuentes de datos que BMKB no admite directamente, el enfoque recomendado es exportar el contenido a Amazon S3 y configurar una fuente de datos de S3 en BMKB.

Patrón de migración para conectores no compatibles: cree una canalización automatizada (con AWS Lambda, Step Functions o Amazon EventBridge Scheduler) que extraiga periódicamente el contenido del sistema de origen a través de su API, escriba documentos en un bucket de S3 con los archivos JSON sidecar adecuados de metadatos y active un trabajo de ingestión de BMKB. Esto replica el comportamiento de sincronización periódica de los conectores Kendra.

Migración de metadatos

Los atributos del documento de Kendra deben traducirse al formato de metadatos BMKB. En Kendra, los atributos se definen a nivel de índice y se adjuntan a los documentos durante la ingestión. En BMKB, los metadatos se definen mediante archivos sidecar .metadata.json que se almacenan junto con los documentos fuente en S3, con un tamaño máximo de 10 KB por archivo. Cada atributo debe escribirse como STRING, NUMBER o BOOLEAN.

Selección de estrategia de fragmentación

Al migrar desde Kendra (que gestiona la fragmentación internamente), debes elegir explícitamente una estrategia de fragmentación para BMKB. Para la mayoría de los escenarios de migración, la Fixed-size estrategia con 200 fichas y una superposición del 30% proporciona un buen punto de partida. Si sus documentos tienen una estructura jerárquica clara (capítulos, secciones, subsecciones), considere la posibilidad de dividirlos jerárquicamente para recuperar mejor tanto el contexto general como los detalles específicos.

Pruebas y validación

Para evaluar el rendimiento, ejecute Kendra y BMKB en paralelo. Envíe consultas idénticas a ambos servicios y compare los resultados utilizando las siguientes dimensiones: calidad de relevancia (medida por NDCG o MRR comparándola con un conjunto de pruebas de oro), latencia (tiempos de respuesta de 50, 95 y 99), rendimiento (consultas por segundo bajo carga) e integridad (porcentaje de documentos esperados recuperados).

Cree un arnés de prueba que evalúe la calidad de la recuperación:

def compare_retrieval(query, kendra_index_id, bmkb_kb_id): # Query Kendra kendra_results = kendra_client.retrieve( IndexId=kendra_index_id, QueryText=query, PageSize=10 ) # Query BMKB bmkb_results = bedrock_runtime.retrieve( knowledgeBaseId=bmkb_kb_id, retrievalQuery={"text": query}, retrievalConfiguration={ "managedSearchConfiguration": {"numberOfResults": 10} } ) # Compare overlap in top-10 results kendra_docs = {r["DocumentId"] for r in kendra_results["ResultItems"]} bmkb_docs = {r["location"]["s3Location"]["uri"] for r in bmkb_results["retrievalResults"]} overlap = len(kendra_docs.intersection(bmkb_docs)) print(f"Query: {query}") print(f"Result overlap: {overlap}/10 documents in common") return overlap

Antes de cambiar el tráfico de producción a BMKB, compruebe lo siguiente: todas las fuentes de datos estén ingeridas y actualizadas sin documentos fallidos; los filtros de metadatos producen los resultados esperados para todos los patrones de filtro de aplicaciones; las soluciones de control de acceso restringen correctamente el acceso no autorizado; los puntos de referencia de relevancia cumplen o superan la calidad básica de Kendra; la gestión de errores de las aplicaciones procesa correctamente los formatos de respuesta de BMKB; y la supervisión y las alertas están configuradas para los errores y la latencia de la API de BMKB.

Resumen

La migración de Amazon Kendra Bedrock Managed Knowledge Base requiere dos esfuerzos principales: volver a introducir las fuentes de datos en BMKB y reescribir el código de la aplicación para usar las API de BMKB. Si bien BMKB incorpora potentes RAG-native funciones, como la recuperación por agencias, los clientes que utilicen funciones de búsqueda empresarial, como la creación de facetas, las sugerencias de consultas, los sinónimos personalizados RetrieveAndGenerate y el aprendizaje gradual, deberán implementar soluciones alternativas, tal y como se describe en esta guía.

Si tiene más preguntas, póngase en contacto con el equipo de soporte. AWS