1111import os
1212from pathlib import Path
1313from urllib .parse import urlparse
14-
14+ import boto3
15+ from langchain_community .embeddings import BedrockEmbeddings
1516
1617def check_url_source (source_type , yt_url :str = None , wiki_query :str = None ):
1718 language = ''
@@ -77,6 +78,10 @@ def load_embedding_model(embedding_model_name: str):
7778 )
7879 dimension = 768
7980 logging .info (f"Embedding: Using Vertex AI Embeddings , Dimension:{ dimension } " )
81+ elif embedding_model_name == "titan" :
82+ embeddings = get_bedrock_embeddings ()
83+ dimension = 1536
84+ logging .info (f"Embedding: Using bedrock titan Embeddings , Dimension:{ dimension } " )
8085 else :
8186 embeddings = HuggingFaceEmbeddings (
8287 model_name = "all-MiniLM-L6-v2" #, cache_folder="/embedding_model"
@@ -164,4 +169,38 @@ def last_url_segment(url):
164169 parsed_url = urlparse (url )
165170 path = parsed_url .path .strip ("/" ) # Remove leading and trailing slashes
166171 last_url_segment = path .split ("/" )[- 1 ] if path else parsed_url .netloc .split ("." )[0 ]
167- return last_url_segment
172+ return last_url_segment
173+
174+ def get_bedrock_embeddings ():
175+ """
176+ Creates and returns a BedrockEmbeddings object using the specified model name.
177+ Args:
178+ model (str): The name of the model to use for embeddings.
179+ Returns:
180+ BedrockEmbeddings: An instance of the BedrockEmbeddings class.
181+ """
182+ try :
183+ env_value = os .getenv ("BEDROCK_EMBEDDING_MODEL" )
184+ if not env_value :
185+ raise ValueError ("Environment variable 'BEDROCK_EMBEDDING_MODEL' is not set." )
186+ try :
187+ model_name , aws_access_key , aws_secret_key , region_name = env_value .split ("," )
188+ except ValueError :
189+ raise ValueError (
190+ "Environment variable 'BEDROCK_EMBEDDING_MODEL' is improperly formatted. "
191+ "Expected format: 'model_name,aws_access_key,aws_secret_key,region_name'."
192+ )
193+ bedrock_client = boto3 .client (
194+ service_name = "bedrock-runtime" ,
195+ region_name = region_name .strip (),
196+ aws_access_key_id = aws_access_key .strip (),
197+ aws_secret_access_key = aws_secret_key .strip (),
198+ )
199+ bedrock_embeddings = BedrockEmbeddings (
200+ model_id = model_name .strip (),
201+ client = bedrock_client
202+ )
203+ return bedrock_embeddings
204+ except Exception as e :
205+ print (f"An unexpected error occurred: { e } " )
206+ raise
0 commit comments