Amazon Kendra wird ab dem 30. Juli 2026 nicht mehr für Neukunden geöffnet sein. Wenn Sie den Service nutzen möchten, melden Sie sich bitte vor dem 30. Juli an. Informationen zu ähnlichen Funktionen wie finden Amazon Kendra Sie in den Amazon Bedrock Knowledge Bases. Weitere Informationen.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Amazon Kendra Änderung der Verfügbarkeit
-Übersicht
Nach reiflicher Überlegung haben wir die Entscheidung getroffen, mit Wirkung zum 30. Juni 2026 Amazon Kendra in den Wartungsmodus zu wechseln. Ab diesem Datum wird es keine Entwicklung neuer Funktionen oder Fähigkeiten für den Service geben, und ab dem 30. Juli 2026 wird der Service keine neuen Kunden mehr annehmen.
Während des Wartungsmodus AWS wird der Service weiterhin vollständig unterstützt und bietet weiterhin Bugfixes und Sicherheitsupdates für Bestandskunden. Anfragen nach neuen Funktionen werden jedoch nicht mehr berücksichtigt.
Wir empfehlen unseren Kunden, ihre Kendra-Anwendungen zu migrieren und alle neuen Suchanwendungen auf Amazon Bedrock Managed Knowledge Base (BMKB) zu implementieren, um ähnliche Funktionen wie Kendra und erweiterte Funktionen für generative KI und agentische KI-Anwendungsfälle zu implementieren. Bedrock Managed Knowledge Base ist eine vollständig verwaltete RAG-Lösung mit integrierten Konnektoren, intelligentem Parsing, verwaltetem Vektorspeicher mit Hybridsuche sowie der Fähigkeit, Antworten zu generieren (mit einer Retrieve and Generate API) und mehrstufiges Denken in mehreren Wissensdatenbanken (mit einer Agentic Retrieval API) durchzuführen. BMKB bietet Ihnen auch die Möglichkeit, die Chunking-Strategien und Einbettungsmodelle anzupassen, um sie für Ihre spezifische Anwendung zu optimieren, und das Basismodell für die Antwortgenerierung auszuwählen. Dieses neue Maß an Funktionen und Flexibilität ist mit vorhersehbaren Kosten verbunden, die auf der Größe der aufgenommenen Wissensdatenbank, der Anzahl der durchgeführten Abfragen und der LLM-Nutzung basieren.
Anleitung zur Migration
Die Migration von Amazon Kendra zu Amazon Bedrock Managed Knowledge Base (BMKB) ist für die meisten Enterprise Search- und RAG-Workloads mit etwas sorgfältiger Planung möglich. Nicht alle Kendra-Funktionen sind direkt in der Bedrock Managed Knowledge Base verfügbar, aber viele können durch Workarounds implementiert werden. Dieser Leitfaden bietet einen umfassenden, schrittweisen Migrationspfad für Kendra Kendra-Kunden zur Umstellung ihrer Anwendungen auf BMKB, einschließlich Architektur-Mapping, API-Übersetzung, Codebeispielen, Analyse von Funktionslücken und empfohlenen Problemumgehungen.
Funktionen der Amazon Bedrock Managed Knowledge Base
BMKB verwaltet die gesamte RAG-Pipeline von Anfang bis Ende. Es unterstützt Einbettungsmodelle wie Amazon Titan Text Embeddings V2, Cohere Embed English v3, Cohere Embed Multilingual v3, Cohere Embed v4 und Amazon Nova Multimodal Embedding — alle fest auf 1024 Dimensionen mit Float32-Vektoren festgelegt. Der Managed Vector Store wird vollständig von Bedrock betrieben, sodass Aurora- oder andere Vektordatenbanken nicht bereitgestellt oder verwaltet OpenSearch werden müssen. Zu den Chunking-Strategien gehören Standard (feste Größe bei ca. 300 Token), (konfigurierbare MaxTokens und OverlapPercentage), Hierarchisch Fixed-size (übergeordnetes Element mit Ebenenkonfigurationen) und No Chunking. Semantisches Chunking wird für verwaltete Wissensdatenbanken nicht unterstützt.
BMKB unterstützt derzeit sieben Datenquellen-Konnektoren: Amazon S3, Confluence, Microsoft SharePoint, Web Crawler, Google Drive OneDrive, Microsoft und einen benutzerdefinierten Connector. Der Dienst führt immer eine Hybridsuche (Schlüsselwort plus Semantik) durch und bietet keinen reinen semantischen Suchmodus.
| Feature | Kendra | Von Bedrock verwaltete Wissensdatenbank |
|---|---|---|
| Native Konnektoren | Über 32 Anschlüsse | 7 Anschlüsse |
| Einbettung | Intern verwaltet | Customer-selectable (Titan V2, Cohere, Nova) |
| Vektor-Shop | Intern verwaltet | Vollständig von Bedrock verwaltet |
| Suchtyp | Schlüsselwort, semantisch oder hybrid | Hybrid (Schlüsselwort + Semantik) |
| RAG-Unterstützung | Erfordert eine externe LLM-Integration | Native API RetrieveAndGenerate |
| Agentenabruf | Nicht verfügbar | Systemeigener Abruf mit mehreren Iterationen |
| Maximale Ergebnisse | 100 Passagen (API abrufen) | 100 Ergebnisse (API abrufen) |
Migrationsschritte
Einrichtung der verwalteten Amazon Bedrock Knowledge Base
Schritt 1: IAM-Rollen konfigurieren
Erstellen Sie eine IAM-Rolle, die Bedrock die Erlaubnis erteilt, auf Ihre Datenquellen zuzugreifen und Einbettungsmodelle aufzurufen. Die Vertrauensrichtlinie muss es bedrock.amazonaws.com ermöglichen, die Rolle zu übernehmen, und die Berechtigungsrichtlinie muss den Zugriff auf Ihre S3-Buckets und das ausgewählte Einbettungsmodell beinhalten.
IAM-Konfiguration (Python-Code):
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) )
Schritt 2: Erstellen Sie eine verwaltete Wissensdatenbank
Verwenden Sie die CreateKnowledgeBase API mit dem Typ MANAGED, um die Wissensdatenbank zu erstellen:
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}")
Schritt 3: Datenquellen konfigurieren
Erstellen Sie eine S3-Datenquelle mit der verwalteten Connector-Konfiguration:
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}")
Anmerkung
CreateDataSource ist für Managed Knowledge Bases asynchron. Der Status der Datenquelle wechselt von CREATING zu AVAILABLE, normalerweise innerhalb von 2—5 Minuten. Fahren Sie erst mit der Aufnahme fort, wenn der Status VERFÜGBAR lautet.
Schritt 4: Starten und überwachen Sie die Einnahme
Initiieren Sie die Aufnahme von Dokumenten und führen Sie die Abfrage zum Abschluss durch:
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)
Zuordnung der API-Migration und Codebeispiele
Zuordnung von API-Vorgängen
| Operation | Kendra API | BMKB-API | Client |
|---|---|---|---|
| Erstellen index/KB | kendra.create_index () | bedrock-agent.create_knowledge_base () | Kendra → Bedrohungsagent |
| Datenquelle hinzufügen | kendra.create_data_source (Typ = „S3") | bedrock-agent.create_data_source () | Kendra → Bedrock-Agent |
| Sync/ingest Dokumente | kendra.start_data_source_sync_job () | bedrock-agent.start_ingestion_job () | Kendra → Bedrohungsagent |
| Dokumente Batch hinzufügen | kendra.batch_put_document () | Wird nicht direkt unterstützt (S3-Upload und Aufnahme verwenden) | Kendra → S3 + Bedrock-Agent |
| Passagen abrufen | kendra.retrieve (=...) QueryText | bedrock-agent-runtime.retrieve () | Kendra → Bedrock-Agent-Laufzeit |
| Suche mit Filtern | AttributeFilter: {"EqualsTo": {...}} | filter: {"entspricht“: {...}} | Gleiches Muster, andere Syntax |
| RAG-Generierung | N/A (externes LLM erforderlich) | bedrock-agent-runtime.retrieve_and_generate () | Neue Fähigkeit |
Migration der Retrieve-API
Vorher (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"])
Nachher (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']}")
Die wichtigsten Unterschiede sind: Der Abfragetext wechselt von einem Parameter der obersten Ebene in ein verschachteltes Query.text Abruffeld, AttributeFilter wird innerhalb der verwalteten SearchConfiguration Datei zum Filter und die Ergebnisse enthalten ein Feld für die Relevanzbewertung.
Wird für RAG verwendet RetrieveAndGenerate
BMKB bietet eine native RAG-Funktion, die es überflüssig macht, ein LLM nach dem Abrufen separat aufzurufen:
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']}")
Diese API gibt eine generierte Antwort in natürlicher Sprache zusammen mit Zitaten zurück, die auf die Quelldokumente verweisen, und bietet integrierte RAG, die Kendra nicht nativ anbietet.
Metadatenfilter, Syntax, Übersetzung
| Kendra AttributeFilter | BMKB-Filter | Hinweise |
|---|---|---|
| EqualsTo | equals | Direkte Zuordnung |
| ContainsAll | in (teilweise) | BMKB verwendet festgelegte Mitgliedschaften |
| ContainsAny | in | Direkte Zuordnung |
| GreaterThan | greaterThan | Direkte Zuordnung |
| LessThan | lessThan | Direkte Zuordnung |
| GreaterThanOrEquals | größer ThanOrEquals | Direkte Zuordnung |
| LessThanOrEquals | weniger ThanOrEquals | Direkte Zuordnung |
| NotFilter | NotIn//NotEquals | Verwenden Sie die entsprechende Negation |
| AndAllFilters | andAll | Direkte Zuordnung |
| OrAllFilters | orAll | Direkte Zuordnung |
Anmerkung
BMKB unterstützt die Operatoren StartsWith oder StringContains für verwaltete Wissensdatenbanken nicht. Wenn Ihre Kendra-Anwendung Platzhalter oder Teilzeichenfolgen in Filtern verwendet, müssen Sie Ihr Metadatenschema so umstrukturieren, dass es stattdessen Exact-Match- oder Set-Mitgliedschaftsmuster verwendet.
Funktionslücken und Problemumgehungen
Nicht alle Kendra-Funktionen sind in BMKB verfügbar. Abfragevorschläge, facettierte Suche, benutzerdefinierte Synonyme, Rechtschreibprüfung, inkrementelles Lernen und Anreicherung von Dokumenten sind Funktionen, für die Behelfslösungen in BMKB erforderlich sind. In diesem Abschnitt werden diese Problemumgehungen beschrieben.
- Abfragevorschläge (automatische Vervollständigung)
-
Kendra stellt die GetQuerySuggestions API bereit, die Vorschläge zur automatischen Vervollständigung zurückgibt, die auf dem Wortschatz von indizierten Dokumenten basieren. BMKB bietet diese Funktion derzeit nicht an.
Umgehung: Implementieren Sie mithilfe von Amazon OpenSearch Service mit seiner integrierten Vorschlagsfunktion eine benutzerdefinierte Ebene für die automatische Vervollständigung oder verwenden Sie einen Service zur Vervollständigung von LLM-based Abfragen. Sie können Bedrock Agents auch nutzen, um Teilabfragen vor dem Abruf neu zu formulieren. Ein praktischer Ansatz besteht darin, einen separaten OpenSearch Index mit allgemeinen Abfragebegriffen zu führen, die aus Ihrem Dokumentkorpus extrahiert wurden, und dessen Suggest-API von Ihrem Frontend aus aufzurufen, bevor Sie den BMKB-Abruf aufrufen.
- Facettenreiche Suche
-
Kendra unterstützt Facetten von Dokumentattributen über den Parameter Facets in der Query API und zeigt bis zu 10 Facettenwerte pro Facette mit Dokumentenanzahl an. Die Architektur von BMKB unterstützt keine facettierte Suche.
Problemumgehung: Simulieren Sie die facettierte Navigation mithilfe der Metadatenfilterung. Kennzeichnen Sie Dokumente mit strukturierten Metadatenattributen (Abteilung, Autor, Dokumenttyp, Datumsbereich) in Sidecar-Dateien mit der Erweiterung.metadata.json. Präsentieren Sie Filteroptionen auf der Benutzeroberfläche Ihrer Anwendung, die auf Ihrem bekannten Metadatenschema basieren, und wenden Sie bei der Abfrage die entsprechenden Filteroperatoren an. Dies ermöglicht zwar keine dynamische Facettenzählung, ermöglicht es Benutzern jedoch, die Ergebnisse nach Kategorien einzugrenzen:
# 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"}} ] } } } ) - Benutzerdefinierte Synonyme
-
Kendra ermöglicht die Erstellung einer benutzerdefinierten Zuordnung von geschäftsspezifischen Begriffen, die anderen Begriffen zugeordnet werden, um Suchergebnisse über eine Thesaurus-Datei abzugleichen. BMKB unterstützt derzeit keine benutzerdefinierten Synonyme.
Problemumgehung: Erstellen Sie einen einfachen Dienst zur Erweiterung von Synonymen vor Ihren BMKB-Abfragen:
-
Pflegen Sie Ihre Kendra Kendra-Thesaurus-Datei (oder ein Synonymwörterbuch in) DynamoDB/S3
-
Bevor Sie den BMKB Retrieve oder die RetrieveAndGenerate API aufrufen, erweitern Sie die Benutzerabfrage, indem Sie übereinstimmende Synonyme anhängen
-
Beispiel: Wenn der Benutzer „DNS-Probleme“ abfragt, schreibt Ihre App ihn vor dem Senden an BMKB in „DNS-Route53-Probleme“ um
Das funktioniert besonders gut, weil BMKB immer eine Hybridsuche (Schlüsselwort und Semantik) verwendet, sodass das Hinzufügen von Synonymen zum Abfragetext sowohl nach Schlüsselwörtern als auch nach semantischen Dimensionen passt.
-
- Rechtschreibprüfung
-
Kendra bietet automatische Rechtschreibkorrekturen auf der Grundlage des Wortschatzes von indizierten Dokumenten über. SpellCorrectionConfiguration BMKB unterstützt derzeit keine Rechtschreibprüfung.
Problemumgehung: Fügen Sie eine Vorverarbeitungsebene hinzu, bevor Sie Abfragen an BMKB senden. Verwenden Sie eine AWS Lambda-Funktion, die eine Rechtschreibkorrekturbibliothek (wie SymSpell oder TextBlob) aufruft oder ein LLM zur Abfragekorrektur aufruft:
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}} ) - Inkrementelles Lernen
-
Kendra unterstützt die SubmitFeedback API für Click-Through-Signale und Feedback zur Relevanz, um das Ranking im Laufe der Zeit zu verbessern. BMKB bietet diese Funktion nicht an.
Problemumgehung: Verwenden Sie die Renanking-Modelle von BMKB, um die Relevanz bei der Abfrage zu verbessern. Erstellen Sie eine benutzerdefinierte Feedback-Schleife, die Klick- und Bewertungssignale von Benutzern in einem externen Datenspeicher (z. B. DynamoDB) speichert, und verwenden Sie diese Signale, um die Boost-Gewichtung von Metadaten oder die Rankingparameter anzupassen. Für eine langfristige Verbesserung sollten Sie erwägen, Ihr Einbettungsmodell auf der Grundlage des gesammelten Feedbacks zur Relevanz regelmäßig zu verfeinern.
- Anreicherung benutzerdefinierter Dokumente
-
Kendra unterstützt Lambda-Hooks vor und nach der Extraktion, die den Inhalt und die Metadaten von Dokumenten während der Aufnahme manipulieren. BMKB verwendet Smart Parsing für die Dokumentenverarbeitung, bietet jedoch keine entsprechenden Lambda-Hooks an.
Umgehung: Implementieren Sie mithilfe von AWS Step Functions oder Lambda eine Vorverarbeitungspipeline, die Dokumente transformiert, bevor sie zur BMKB-Aufnahme in S3 platziert werden. Diese Pipeline kann Inhaltsextraktion, Metadatenanreicherung, PII-Schwärzung oder Formatkonvertierung durchführen, bevor die Dokumente den BMKB-Datenquellen-Bucket erreichen.
Strategie zur Migration von Datenquellen
Lücke bei der Steckverbinderabdeckung
Kendra unterstützt 32 native Konnektoren, während BMKB 7 unterstützt. Für Datenquellen, die nicht direkt von BMKB unterstützt werden, wird empfohlen, Inhalte nach Amazon S3 zu exportieren und eine S3-Datenquelle in BMKB zu konfigurieren.
Migrationsmuster für nicht unterstützte Konnektoren: Erstellen Sie eine automatisierte Pipeline (mit AWS Lambda, Step Functions oder Amazon EventBridge Scheduler), die regelmäßig Inhalte aus dem Quellsystem über ihre API extrahiert, Dokumente mit entsprechenden JSON-Sidecar-Metadaten-Dateien in einen S3-Bucket schreibt und einen BMKB-Ingestion-Job auslöst. Dies repliziert das periodische Synchronisationsverhalten von Kendra-Konnektoren.
Migration von Metadaten
Kendra-Dokumentattribute müssen in das BMKB-Metadatenformat übersetzt werden. In Kendra werden Attribute auf Indexebene definiert und während der Aufnahme an Dokumente angehängt. In BMKB werden Metadaten über „.metadata.json“ -Sidecar-Dateien definiert, die zusammen mit den Quelldokumenten in S3 gespeichert werden, mit einer maximalen Größe von 10 KB pro Datei. Jedes Attribut muss als STRING, NUMBER oder BOOLEAN eingegeben werden.
Auswahl der Chunking-Strategie
Bei der Migration von Kendra (das Chunking intern abwickelt) müssen Sie explizit eine Chunking-Strategie für BMKB wählen. Für die meisten Migrationsszenarien bietet die Fixed-size Strategie mit 200 Tokens und einer Überlappung von 30% einen guten Ausgangspunkt. Wenn Ihre Dokumente eine klare hierarchische Struktur haben (Kapitel, Abschnitte, Unterabschnitte), sollten Sie die hierarchische Aufteilung in Betracht ziehen, um sowohl den allgemeinen Kontext als auch spezifische Details besser abrufen zu können.
Testen und Validieren
Um die Leistung zu bewerten, führen Sie Kendra und BMKB parallel aus. Senden Sie identische Abfragen an beide Dienste und vergleichen Sie die Ergebnisse anhand der folgenden Dimensionen: Relevanz, Qualität (gemessen anhand von NDCG oder MRR anhand eines goldenen Testsatzes), Latenz (Reaktionszeiten von p50, p95, p99), Durchsatz (Abfragen pro Sekunde unter Last) und Vollständigkeit (Prozentsatz der erwarteten abgerufenen Dokumente).
Erstellen Sie ein Testsystem, das die Qualität des Abrufs bewertet:
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
Bevor Sie den Produktionsdatenverkehr auf BMKB umstellen, stellen Sie sicher, dass alle Datenquellen aufgenommen und aktuell sind, ohne dass Dokumente fehlerhaft sind; Metadatenfilter liefern erwartete Ergebnisse für alle Anwendungsfiltermuster; Workarounds zur Zugriffskontrolle schränken unbefugten Zugriff korrekt ein; Relevanz-Benchmarks erfüllen oder übertreffen die Kendra-Grundqualität; die Anwendungsfehlerbehandlung verarbeitet BMKB-Antwortformate korrekt; Überwachung und Warnung sind für BMKB-API-Fehler und Latenz konfiguriert.
Zusammenfassung
Die Migration von Amazon Kendra zu Bedrock Managed Knowledge Base erfordert zwei Hauptaufgaben: das erneute Einlesen von Datenquellen in BMKB und das Umschreiben des Anwendungscodes zur Verwendung von BMKB-APIs. BMKB bietet zwar leistungsstarke RAG-native Funktionen, einschließlich RetrieveAndGenerate der Suche nach Agenten, aber Kunden, die Funktionen der Unternehmenssuche wie Facettierung, Abfragevorschläge, benutzerdefinierte Synonyme und inkrementelles Lernen verwenden, müssen die in diesem Leitfaden beschriebenen Behelfslösungen implementieren.
Bei weiteren Fragen wenden Sie sich bitte an den AWS
Support