AWS Bedrock: Native RAG Features
AWS enriches Bedrock with native RAG features: improved Knowledge Bases, RAG agents, and seamless S3 integration.
AWS Strengthens Enterprise RAG Offering
Amazon Web Services announces major improvements to Bedrock's RAG capabilities. Knowledge Bases become more powerful, agents more sophisticated, and integration with the AWS ecosystem more seamless.
"Enterprises want production-ready RAG without the complexity," explains Swami Sivasubramanian, VP AI/ML at AWS. "Bedrock Knowledge Bases v2 meets this demand."
New Features
Knowledge Bases v2
Knowledge Bases evolve significantly:
| Feature | v1 | v2 |
|---|---|---|
| Supported sources | S3, Web | S3, Web, Confluence, SharePoint, DB |
| Max dataset size | 10GB | 100GB |
| Chunking | Fixed | Semantic, Hierarchical |
| Embeddings | Titan | Titan, Cohere, Custom |
| Vector DB | OpenSearch | OpenSearch, Pinecone, Qdrant |
| Real-time sync | No | Yes |
Simplified configuration:
DEVELOPERpythonimport boto3 bedrock = boto3.client('bedrock-agent') # Create a Knowledge Base response = bedrock.create_knowledge_base( name="company-docs", description="Internal documentation", roleArn="arn:aws:iam::123456789:role/BedrockKBRole", knowledgeBaseConfiguration={ "type": "VECTOR", "vectorKnowledgeBaseConfiguration": { "embeddingModelArn": "arn:aws:bedrock:us-east-1::foundation-model/cohere.embed-multilingual-v3" } }, storageConfiguration={ "type": "OPENSEARCH_SERVERLESS", "opensearchServerlessConfiguration": { "collectionArn": "arn:aws:aoss:us-east-1:123456789:collection/kb-collection" } } ) # Add a data source bedrock.create_data_source( knowledgeBaseId=response['knowledgeBase']['knowledgeBaseId'], name="confluence-docs", dataSourceConfiguration={ "type": "CONFLUENCE", "confluenceConfiguration": { "sourceConfiguration": { "hostUrl": "https://company.atlassian.net", "hostType": "CLOUD" } } } )
Chunking strategies are now directly configurable.
Improved RAG Agents
Bedrock agents now support complex workflows:
1. Multi-Knowledge Base
DEVELOPERpythonagent = bedrock.create_agent( agentName="support-agent", foundationModel="anthropic.claude-3-opus-20240229-v1:0", instruction="You are a support agent using multiple knowledge bases.", agentResourceRoleArn="...", knowledgeBases=[ {"knowledgeBaseId": "kb-products", "description": "Product catalog"}, {"knowledgeBaseId": "kb-support", "description": "FAQ and procedures"}, {"knowledgeBaseId": "kb-internal", "description": "Internal documentation"} ] )
2. Custom Actions
Agents can call Lambda functions:
DEVELOPERpythonbedrock.create_agent_action_group( agentId=agent_id, agentVersion="DRAFT", actionGroupName="order-management", actionGroupExecutor={ "lambda": "arn:aws:lambda:us-east-1:123456789:function:OrderManagement" }, apiSchema={ "s3": { "s3BucketName": "api-schemas", "s3ObjectKey": "order-api.json" } } )
3. Persistent Memory
Conversations persist automatically:
DEVELOPERpythonresponse = bedrock.invoke_agent( agentId="agent-123", agentAliasId="alias-456", sessionId="session-789", # Persisted conversation inputText="What is my order status?" )
These features align with our guide on agentic RAG.
Improved S3 Integration
S3 synchronization becomes real-time:
DEVELOPERpython# Enable real-time sync bedrock.update_data_source( knowledgeBaseId="kb-123", dataSourceId="ds-456", dataSourceConfiguration={ "type": "S3", "s3Configuration": { "bucketArn": "arn:aws:s3:::my-bucket", "inclusionPrefixes": ["documents/"], "syncMode": "REAL_TIME" # New } } )
EventBridge automatically triggers reindexing on changes.
RAG Guardrails
New RAG-specific guardrails:
DEVELOPERpythonbedrock.create_guardrail( name="rag-guardrails", description="Guardrails for RAG applications", contentPolicyConfig={ "filtersConfig": [ {"type": "SEXUAL", "inputStrength": "HIGH", "outputStrength": "HIGH"}, {"type": "HATE", "inputStrength": "HIGH", "outputStrength": "HIGH"} ] }, contextualGroundingPolicyConfig={ # New "filtersConfig": [ {"type": "GROUNDING", "threshold": 0.8}, {"type": "RELEVANCE", "threshold": 0.7} ] } )
Check our guide on RAG guardrails.
Architecture and Performance
Recommended Architecture
S3 / Confluence / SharePoint
↓
[Data Sources]
↓
[Knowledge Base]
↓
OpenSearch Serverless
↓
[Bedrock Agent]
↓
Claude / Titan / Llama
↓
[Application]
Benchmarks
AWS publishes benchmarks on standard RAG workloads:
| Metric | KB v1 | KB v2 |
|---|---|---|
| P50 Latency | 1.8s | 1.1s |
| P99 Latency | 4.2s | 2.8s |
| Recall@5 | 72% | 84% |
| Throughput | 100 req/s | 500 req/s |
Limits
| Limit | Value |
|---|---|
| Knowledge Bases per account | 50 |
| Sources per KB | 20 |
| Max size per document | 50MB |
| Documents per sync | 10,000 |
| Requests per second | 500 |
Pricing
New Pricing Model
| Component | Price |
|---|---|
| KB Storage (GB/month) | $0.23 |
| Indexing (1K docs) | $0.05 |
| Queries (1K) | $0.02 |
| Agents (1K invocations) | $0.10 |
Comparison
| Solution | Estimated Monthly Cost* |
|---|---|
| Bedrock KB + Claude | $400-800 |
| OpenAI Assistants | $300-600 |
| Qdrant Cloud + Claude | $250-500 |
| Ailog | $50-200 |
*For 100K requests/month, 10GB of data
Check our guide on RAG cost optimization.
Use Cases
When to Use Bedrock KB
Ideal for:
- Enterprises already on AWS
- Need for native integration (S3, Lambda, etc.)
- Large volumes
- AWS compliance required
Less suitable for:
- Multi-cloud
- Startups/SMBs (cost)
- Need for open-source models
Complete Example
DEVELOPERpythonimport boto3 # 1. Create the KB bedrock = boto3.client('bedrock-agent') kb = bedrock.create_knowledge_base( name="support-kb", knowledgeBaseConfiguration={...}, storageConfiguration={...} ) # 2. Add documents bedrock.create_data_source( knowledgeBaseId=kb['knowledgeBase']['knowledgeBaseId'], name="docs", dataSourceConfiguration={ "type": "S3", "s3Configuration": { "bucketArn": "arn:aws:s3:::my-docs" } } ) # 3. Synchronize bedrock.start_ingestion_job( knowledgeBaseId=kb['knowledgeBase']['knowledgeBaseId'], dataSourceId=ds['dataSource']['dataSourceId'] ) # 4. Query runtime = boto3.client('bedrock-agent-runtime') response = runtime.retrieve_and_generate( input={"text": "How do I configure product X?"}, retrieveAndGenerateConfiguration={ "type": "KNOWLEDGE_BASE", "knowledgeBaseConfiguration": { "knowledgeBaseId": kb['knowledgeBase']['knowledgeBaseId'], "modelArn": "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-opus-20240229-v1:0" } } )
Our Take
Bedrock KB v2 represents an important evolution:
Strengths:
- Native AWS integration
- Advanced guardrails
- Improved performance
- Multiple data sources
Points of attention:
- AWS lock-in
- High cost
- Configuration complexity
- Limited regions
For AWS-first enterprises, Bedrock KB becomes a serious option. For others, more agnostic alternatives exist.
Platforms like Ailog offer a cloud provider-independent alternative, with French hosting and simplified setup.
Check our guide to best RAG platforms to compare.
Tags
Related Posts
LlamaIndex Enterprise: Offering for Large Companies
LlamaIndex launches its Enterprise offering with dedicated support, guaranteed SLAs, and advanced features for large-scale deployments.
Pinecone Serverless: Evolutions and Pricing
Pinecone announces major updates to its Serverless offering: new features, price reductions, and improved performance.
Consulting Firm: Internal Chatbot for 200+ Consultants
How a consulting firm increased deliverable reuse by 40% with a RAG chatbot automatically indexing methodologies and project feedback.