@@ -4,19 +4,19 @@ import {
44 StackProps ,
55 CfnOutput
66} from "aws-cdk-lib"
7-
87import { PolicyStatement } from "aws-cdk-lib/aws-iam"
98import * as cdk from "aws-cdk-lib"
109import * as iam from "aws-cdk-lib/aws-iam"
1110import * as ops from "aws-cdk-lib/aws-opensearchserverless"
1211import * as cr from "aws-cdk-lib/custom-resources"
12+ import { bedrock } from "@cdklabs/generative-ai-cdk-constructs"
1313import { nagSuppressions } from "../nagSuppressions"
1414import { Apis } from "../resources/Apis"
1515import { Functions } from "../resources/Functions"
1616import { Storage } from "../resources/Storage"
1717import { Secrets } from "../resources/Secrets"
1818import { OpenSearchResources } from "../resources/OpenSearchResources"
19- import { BedrockResources } from "../resources/BedrockResources "
19+ import { VectorKnowledgeBase } from "../resources/VectorKnowledgeBase "
2020
2121const EMBEDDING_MODEL = "amazon.titan-embed-text-v2:0"
2222const VECTOR_INDEX_NAME = "eps-assist-os-index"
@@ -83,9 +83,7 @@ export class EpsAssistMeStack extends Stack {
8383 bedrockExecutionRole . addToPolicy ( bedrockKBDeleteRolePolicy )
8484
8585 // Create Storage construct
86- const storage = new Storage ( this , "Storage" , {
87- bedrockExecutionRole
88- } )
86+ const storage = new Storage ( this , "Storage" , { bedrockExecutionRole} )
8987
9088 // Create an IAM policy for S3 access
9189 const s3AccessListPolicy = new PolicyStatement ( {
@@ -143,15 +141,15 @@ export class EpsAssistMeStack extends Stack {
143141
144142 const endpoint = openSearchResources . collection . endpoint
145143
146- // Create Bedrock Resources
147- const bedrockResources = new BedrockResources ( this , "BedrockResources " , {
148- bedrockExecutionRole ,
149- osCollection : openSearchResources . collection . collection ,
150- kbDocsBucket : storage . kbDocsBucket . bucket ,
151- region
144+ // Create VectorKnowledgeBase construct
145+ const vectorKB = new VectorKnowledgeBase ( this , "VectorKB " , {
146+ kbName : "eps-assist-kb" ,
147+ embeddingsModel : bedrock . BedrockFoundationModel . TITAN_EMBED_TEXT_V2_1024 ,
148+ docsBucket : storage . kbDocsBucket . bucket ,
149+ bedrockExecutionRole
152150 } )
153151
154- // Create Functions construct
152+ // Functions construct: use guardrail and kb from the new construct
155153 const functions = new Functions ( this , "Functions" , {
156154 stackName : props . stackName ,
157155 version : props . version ,
@@ -161,10 +159,10 @@ export class EpsAssistMeStack extends Stack {
161159 createIndexFunctionRole,
162160 slackBotTokenParameter : secrets . slackBotTokenParameter ,
163161 slackSigningSecretParameter : secrets . slackSigningSecretParameter ,
164- guardrailId : bedrockResources . guardrail . guardrailId ,
165- guardrailVersion : bedrockResources . guardrail . guardrailVersionId ,
162+ guardrailId : vectorKB . guardrail . guardrailId ,
163+ guardrailVersion : vectorKB . guardrail . guardrailVersion ,
166164 collectionId : openSearchResources . collection . collection . attrId ,
167- knowledgeBaseId : bedrockResources . knowledgeBase . attrKnowledgeBaseId ,
165+ knowledgeBaseId : vectorKB . knowledgeBase . knowledgeBaseId ,
168166 region,
169167 account,
170168 slackBotTokenSecret : secrets . slackBotTokenSecret ,
@@ -191,6 +189,7 @@ export class EpsAssistMeStack extends Stack {
191189 } )
192190 openSearchResources . collection . collection . addDependency ( aossAccessPolicy )
193191
192+ // Create a custom resource to create the OpenSearch index
194193 const vectorIndex = new cr . AwsCustomResource ( this , "VectorIndex" , {
195194 installLatestAwsSdk : true ,
196195 onCreate : {
@@ -235,10 +234,10 @@ export class EpsAssistMeStack extends Stack {
235234 vectorIndex . node . addDependency ( openSearchResources . collection . collection )
236235
237236 // add a dependency for bedrock kb on the custom resource. Enables vector index to be created before KB
238- bedrockResources . knowledgeBase . node . addDependency ( vectorIndex )
239- bedrockResources . knowledgeBase . node . addDependency ( functions . functions . createIndex )
240- bedrockResources . knowledgeBase . node . addDependency ( openSearchResources . collection . collection )
241- bedrockResources . knowledgeBase . node . addDependency ( bedrockExecutionRole )
237+ vectorKB . knowledgeBase . node . addDependency ( vectorIndex )
238+ vectorKB . knowledgeBase . node . addDependency ( functions . functions . createIndex )
239+ vectorKB . knowledgeBase . node . addDependency ( openSearchResources . collection . collection )
240+ vectorKB . knowledgeBase . node . addDependency ( bedrockExecutionRole )
242241
243242 // Create Apis and pass the Lambda function
244243 const apis = new Apis ( this , "Apis" , {
0 commit comments