使用LangChain_AWS调用BedrockEmbeddings返回None值问题
问题
使用langchain_aws的BedrockEmbeddings处理文本嵌入时,调用embed_documents后得到包含None值的列表。
相关代码:
from langchain_community.llms.bedrock import Bedrock from langchain_aws import BedrockEmbeddings import boto3 # Initialize the Bedrock client bedrock_client = boto3.client(service_name='bedrock-runtime') # Initialize Bedrock Embeddings bedrock_embeddings = BedrockEmbeddings( model_id="amazon.titan-text-express-v1", credentials_profile_name="default", client=bedrock_client, region_name="ap-south-1" ) embed_data=bedrock_embeddings.embed_documents(["This is a content of the document", "This is another document"]) print(embed_data)
输出结果:
[None, None]
解决方案
核心问题:模型类型不匹配
你指定的amazon.titan-text-express-v1是大语言模型(用于文本生成),并非专门的嵌入模型,BedrockEmbeddings只能使用嵌入类模型来生成向量。替换为正确的嵌入模型ID
选择Bedrock支持的嵌入模型,例如:amazon.titan-embed-text-v1:通用文本嵌入模型,适合大多数文本向量生成场景amazon.titan-embed-image-v1:多模态嵌入模型,支持文本和图片输入
修正后的代码示例
from langchain_aws import BedrockEmbeddings import boto3 # 初始化Bedrock客户端时指定区域,避免配置冲突 bedrock_client = boto3.client(service_name='bedrock-runtime', region_name="ap-south-1") bedrock_embeddings = BedrockEmbeddings( model_id="amazon.titan-embed-text-v1", credentials_profile_name="default", client=bedrock_client, region_name="ap-south-1" ) embed_data = bedrock_embeddings.embed_documents(["This is a content of the document", "This is another document"]) print(embed_data)
- 额外检查项
- 确认AWS凭证(
default配置文件)拥有Bedrock服务的调用权限,以及所选嵌入模型的访问权限 - 验证
ap-south-1区域是否支持你选择的嵌入模型,部分模型可能仅在特定AWS区域提供服务
- 确认AWS凭证(
内容的提问来源于stack exchange,提问作者Md Tausif
相关产品推荐
相关产品推荐

