AWS OpenSearch模型_predict正常但Ingest Pipeline报非法参数异常
问题描述
我已通过连接器在AWS OpenSearch中部署了一个文本嵌入模型,在Dev Tools中执行以下请求可正常返回嵌入向量响应:
POST /_plugins/_ml/models/<model_id>/_predict { "parameters": { "inputs": ["hello"] } }
返回示例如下:
{ "inference_results": [ { "output": [ { "name": "response", "dataAsMap": { "embedding": [ 0.18129970133304596, -0.05622033402323723, ...
但当我使用调用该模型的Ingest Pipeline模拟插入文档时,执行以下请求:
POST /_ingest/pipeline/nlp-ingest-pipeline/_simulate?verbose=true { "docs": [ { "_index": "product-index", "_id": "1", "_source":{ "product_text": "hello" } } ] }
出现如下错误(已精简):
"root_cause": [ { "type": "illegal_argument_exception", "reason": "Invalid JSON in payload" } ],
我的Pipeline处理器配置如下:
"processors": [ { "text_embedding": { "model_id": "<model_id>", "field_map": { "product_text": "product_embedding" } } } ]
我怀疑Pipeline无法解析模型端点的响应,请问在哪里可以查看Ingest Pipeline与模型的交互接口?
回答
查看Ingest Pipeline与模型的交互接口
启用调试日志
开启ingest和ml模块的DEBUG级日志,可捕获Pipeline调用模型的完整请求、响应及解析细节。通过集群设置API动态调整(无需重启集群):PUT /_cluster/settings { "transient": { "logger.org.opensearch.ingest": "DEBUG", "logger.org.opensearch.ml": "DEBUG" } }日志默认存储在
/var/log/opensearch/路径下(根据部署环境可能调整),日志中会包含Pipeline发送给模型的请求体、模型返回的原始响应,以及解析过程中的错误信息。使用调试模式模拟Pipeline
执行_simulate请求时替换为?debug=true参数,返回的结果会包含处理器执行的每一步细节,包括调用模型前后的数据变化、请求和响应的具体内容:POST /_ingest/pipeline/nlp-ingest-pipeline/_simulate?debug=true { "docs": [ { "_index": "product-index", "_id": "1", "_source":{ "product_text": "hello" } } ] }
额外排查提示
当前的Invalid JSON in payload错误大概率是因为text_embedding处理器预期的响应格式与连接器返回的模型响应不匹配,或是连接器转发响应时出现JSON格式损坏(如截断、转义错误)。通过上述两种方式获取交互细节后,对比模型直接返回的响应和Pipeline接收到的响应,即可定位具体格式差异问题。
内容的提问来源于stack exchange,提问作者Moltres
相关产品推荐
相关产品推荐

