使用Aws Bedrock+LangChain+OpenSearch时KNN向量类型报错排查
问题分析与解决
报错原因
LangChain的OpenSearchVectorStore默认会使用名为vector_field的字段进行KNN检索,但你的OpenSearch索引中定义的向量字段是my_vector1,两者不匹配,导致系统找不到vector_field这个knn_vector类型的字段,从而抛出该错误。你的索引配置本身没有问题,问题出在LangChain侧的参数配置。
解决方法
有两种可行的解决方式:
方式一:修改OpenSearch索引配置
将索引映射中的向量字段名改为vector_field,保持和LangChain默认值一致,修改后的索引配置如下:
{ "settings": { "index": { "knn": true, "knn.algo_param.ef_search": 100 } }, "mappings": { "properties": { "vector_field": { "type": "knn_vector", "dimension": 1536, "method": { "name": "hnsw", "space_type": "l2", "engine": "faiss", "parameters": { "ef_construction": 128, "m": 24 } } } } } }
方式二:在LangChain中指定向量字段名
初始化OpenSearchVectorStore时,显式传入vector_field参数,指定为你索引中的my_vector1字段,示例代码如下:
from langchain.vectorstores import OpenSearchVectorStore # 假设其他参数已正确配置 vector_store = OpenSearchVectorStore( index_name="your_index_name", embedding=your_embedding_model, vector_field="my_vector1", # 关键:指定自定义的向量字段名 # 其他必要参数... ) # 后续将vector_store作为检索器传入ConversationChain
内容的提问来源于stack exchange,提问作者Vikas Patil
相关产品推荐
相关产品推荐

