Adding Semantic Search to DynamoDB with Vector Indexes
Learn how to add semantic search capabilities to an existing DynamoDB table using native vector indexes and Amazon Bedrock without external search stacks.

Stock photo for illustration only, not from the actual event
- Add semantic search directly to DynamoDB without managing a separate search service.
- Utilize Amazon Bedrock Titan Text Embeddings V2 for 1024-dimension vectors.
- Combine multiple recipe fields into a single string for comprehensive search coverage.
- Perform data backfills using scripts or S3 exports for tables with existing records.
Adding search functionality to applications traditionally introduces extra components, failure points, and synchronization challenges. However, with the introduction of native vector search in DynamoDB, developers can store vector embeddings directly alongside their data and perform searches natively. This allows users to search recipes using natural language queries based on true meaning rather than exact keyword matches.
The reference architecture relies on a serverless setup utilizing SAM for infrastructure, API Gateway, Lambda functions, and DynamoDB for storage with standard CRUD operations. Managing filters previously required creating multiple Global Secondary Indexes, which quickly becomes unscalable. Native vector indexes eliminate this limitation by allowing direct similarity queries.

Stock photo for illustration only, not from the actual event
Semantic search operates by transforming text into embeddings—lists of numbers representing semantic meaning. The author selected Amazon Bedrock's Titan Text Embeddings V2 model, producing normalized 1024-dimension vectors that pair naturally with cosine similarity. To maximize search accuracy, key fields including name, description, cuisine, dietary tags, and ingredients are concatenated into a single string representation.
Because vector indexes are not yet supported in CloudFormation, a post-deployment script using the UpdateTable command is required to create the index. It is configured with cosine distance, 1024 dimensions, and an inline filter on cuisine. Applications unable to absorb the 100-150ms embedding generation latency can generate embeddings asynchronously using DynamoDB streams and a Lambda function, while taking precautions against infinite loops.
"The biggest takeaway for me is that choosing what text to embed matters more than I expected."
AWS Community Builder
Integrating vector indexes directly into existing operational databases removes the operational overhead of maintaining a synchronized secondary search pipeline. Concatenating multiple attributes into a unified embedding text input significantly improves search relevance without requiring complex multi-attribute querying structures.
Tables with pre-existing data require a backfill process to generate and populate embeddings for historical records, which can be achieved via table scans or DynamoDB Export to S3. Ultimately, this approach lets developers implement powerful semantic search while keeping their data securely within their existing DynamoDB tables.
Source: Dev.to
Found something wrong in this article? Report an issue with this article
Comments
Leave a Comment