Haystack 集成 Amazon Bedrock:嵌入、生成、重排、知识库检索与 S3 下载的完整实战指南

发布时间:2026/9/11 21:27:53
Haystack 集成 Amazon Bedrock:嵌入、生成、重排、知识库检索与 S3 下载的完整实战指南 Haystack 集成 Amazon Bedrock嵌入、生成、重排、知识库检索与 S3 下载的完整实战指南【免费下载链接】haystackOpen-source AI orchestration framework for building context-engineered, production-ready LLM applications. Design modular pipelines and agent workflows with explicit control over retrieval, routing, memory, and generation. Built for scalable agents, RAG, multimodal applications, semantic search, and conversational systems.项目地址: https://gitcode.com/GitHub_Trending/ha/haystack导读本文以 Haystack 官方 API 参考文档 docs-website/reference/integrations-api/amazon_bedrock.md 为主线系统讲解amazon-bedrock-haystack集成包的全部组件文档/文本/图像嵌入器、Chat 生成器含多模态与工具调用、重排序器、托管知识库检索器、Token 计数器以及 S3 文件下载器。读完本文你将掌握在 Haystack 管道中无缝接入 Amazon Bedrock 全流程能力的方法——从 AWS 认证配置、各组件参数详解到端到端 RAG 管道与图像问答管道的可运行代码。一、集成包安装与 AWS 认证配置amazon-bedrock-haystack是 Haystack 官方生态中连接 Amazon Bedrock 的集成包覆盖生成、嵌入、重排、检索、Token 计数与 S3 文件下载等场景。安装方式pip install amazon-bedrock-haystackAWS 凭证的三种提供方式所有组件共用同一套认证逻辑凭证按以下优先级提供环境变量推荐默认从AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_DEFAULT_REGION、AWS_SESSION_TOKEN、AWS_PROFILE读取AWS CLI / 配置文件如果本机已通过 AWS CLI 配置好 boto3 凭证组件会自动加载无需显式传参Secret 参数通过Secret对象显式传入参考 Haystack 的 Secret 管理例如Secret.from_token(eu-central-1)或Secret.from_env_var(AWS_DEFAULT_REGION)。需要特别注意的是并非所有 AWS 区域都支持 Bedrock务必选择已开通 Bedrock 服务的区域同时使用的 IAM 身份需要具备调用 Bedrock 模型与相关 API 的权限参见 AWS 官方的 IAM 身份策略文档。二、统一的异常体系错误类型一览集成包在 errors.py 相关模块 中定义了分层异常结构便于按类型捕获和处理错误异常类基类触发场景AmazonBedrockErrorException集成包产生的所有错误的公共基类它会透明包装底层异常使原异常的属性如message可直接访问AWSConfigurationErrorAmazonBedrockErrorAWS 环境配置不正确AmazonBedrockConfigurationErrorAmazonBedrockErrorBedrock 组件节点配置不正确AmazonBedrockInferenceErrorAmazonBedrockErrorBedrock 推理节点执行期间的错误S3ErrorException基于 S3 的组件出错S3ConfigurationErrorS3ErrorAmazonS3 节点配置不正确S3StorageErrorS3Error与S3Storage对象交互时出错如文件不存在或下载失败这种轻量包装设计意味着捕获AmazonBedrockError即可覆盖全部 Bedrock 相关异常同时又能通过AmazonBedrockConfigurationError与AmazonBedrockInferenceError区分配置错误与运行错误从而在管道中给出更精准的降级或重试策略。三、嵌入器文档、文本与图像三种形态Bedrock 集成提供三个嵌入组件统一遵循 Haystack 组件协议支持to_dict/from_dict序列化并按使用场景区分组件输入输出典型位置AmazonBedrockDocumentEmbedderdocuments: list[Document]documents每个 Document 的embedding字段被填充索引管道中DocumentWriter之前AmazonBedrockTextEmbeddertext: strembedding: list[float]查询管道中检索器之前用于编码查询串AmazonBedrockDocumentImageEmbedderdocuments: list[Document]图像路径在 meta 中documents含向量化的embedding多模态索引管道支持的嵌入模型三个组件均支持 Amazon Titan 与 Cohere 系列模型官方参考文档列出的示例包括amazon.titan-embed-text-v1amazon.titan-embed-text-v2:0amazon.titan-embed-image-v1cohere.embed-english-v3cohere.embed-multilingual-v3cohere.embed-v4:0完整可用模型清单以 AWS 官方文档为准筛选 embedding 后选择 Titan 与 Cohere 系列。组件初始化时会校验模型名不支持的模型会抛出ValueError。3.1 AmazonBedrockDocumentEmbedder对文档列表批量计算向量最常用于索引阶段import os from haystack.dataclasses import Document from haystack_integrations.components.embedders.amazon_bedrock import ( AmazonBedrockDocumentEmbedder, ) os.environ[AWS_ACCESS_KEY_ID] ... os.environ[AWS_SECRET_ACCESS_KEY] ... os.environ[AWS_DEFAULT_REGION] ... embedder AmazonBedrockDocumentEmbedder( modelcohere.embed-english-v3, input_typesearch_document, # 模型专属参数通过 kwargs 透传 truncateLEFT, ) doc Document(contentI love Paris in the winter., meta{name: doc1}) result embedder.run([doc]) print(result[documents][0].embedding) # [0.002, 0.032, 0.504, ...]关键参数说明model必填嵌入模型名如amazon.titan-embed-text-v2:0。batch_size单次请求编码的 Document 数默认32。注意只有 Cohere 模型支持批量推理该参数对 Amazon Titan 模型会被忽略。progress_bar是否显示进度条默认True生产环境建议关闭以保持日志整洁。meta_fields_to_embed需要与文本一起嵌入的 meta 字段列表embedding_separator拼接 meta 与文本的分隔符默认\n。boto3_config传递给底层 boto3 客户端的配置字典可调整重试行为、超时与连接管理。**kwargs模型推理专属参数如 Cohere 的input_type/truncateTitan Text Embeddings V2 的dimensions/normalize。在 amazonbedrockdocumentembedder.mdx 中官方还演示了元数据随文档一起嵌入的实践把语义上有区分度的 meta 字段如title加入meta_fields_to_embed可显著改善检索质量。3.2 AmazonBedrockTextEmbedder对单条查询字符串编码输出直接可用作向量检索的查询向量import os from haystack_integrations.components.embedders.amazon_bedrock import ( AmazonBedrockTextEmbedder, ) os.environ[AWS_ACCESS_KEY_ID] ... os.environ[AWS_SECRET_ACCESS_KEY] ... os.environ[AWS_DEFAULT_REGION] ... embedder AmazonBedrockTextEmbedder( modelcohere.embed-english-v3, input_typesearch_query, # 与文档侧 input_type 区分 ) print(embedder.run(I love Paris in the summer.)) # {embedding: [0.002, 0.032, 0.504, ...]}其run(text: str)方法要求字符串输入非字符串会抛出TypeError推理失败抛出AmazonBedrockInferenceError。构造参数与AmazonBedrockDocumentEmbedder基本一致model AWS 凭证 boto3_config**kwargs但没有batch_size与meta_fields_to_embed。3.3 AmazonBedrockDocumentImageEmbedder面向多模态场景基于图像或 PDF内容计算向量示例见 amazonbedrockdocumentimageembedder.mdx 与参考文档import os from haystack import Document from haystack_integrations.components.embedders.amazon_bedrock import AmazonBedrockDocumentImageEmbedder os.environ[AWS_ACCESS_KEY_ID] ... os.environ[AWS_SECRET_ACCESS_KEY] ... os.environ[AWS_DEFAULT_REGION] ... embedder AmazonBedrockDocumentImageEmbedder(modelamazon.titan-embed-image-v1) documents [ Document(contentA photo of a cat, meta{file_path: cat.jpg}), Document(contentA photo of a dog, meta{file_path: dog.jpg}), ] result embedder.run(documentsdocuments) for doc in result[documents]: print(doc.embedding) # 512 维向量独特参数file_path_meta_field指定 Document meta 中存放图像/PDF 文件路径的字段默认file_pathroot_path文件根目录提供后 meta 中的路径将相对于它解析为None时按绝对路径处理image_size(width, height)元组提供时会在保持宽高比的前提下把图像缩放到该尺寸内降低文件体积、内存占用与传输耗时**kwargs模型专属参数如 Titan 的embeddingConfig、Cohere 的embedding_types。注意AmazonBedrockDocumentImageEmbedder只有to_dict/from_dict序列化方法没有独立的warm_up/close调用说明之外的特殊接口——它同样支持warm_up()预创建 Bedrock 客户端、close()释放资源。四、对话生成AmazonBedrockChatGenerator这是集成包中最核心的组件通过 BedrockConverse API完成聊天补全一个组件即可调用 Amazon、Anthropic、Cohere、Meta、Mistral 等多家基础模型。以 Anthropic Claude 为例模型名写法为anthropic.claude-3-5-sonnet-20240620-v1:0或global.anthropic.claude-sonnet-4-6不同型号的命名格式见 AWS 文档中的模型 ID/ARN 说明。4.1 基础用法from haystack_integrations.components.generators.amazon_bedrock import ( AmazonBedrockChatGenerator, ) from haystack.dataclasses import ChatMessage from haystack.components.generators.utils import print_streaming_chunk messages [ ChatMessage.from_system( \nYou are a helpful, respectful and honest assistant, answer in German only ), ChatMessage.from_user(Whats Natural Language Processing?), ] client AmazonBedrockChatGenerator( modelglobal.anthropic.claude-sonnet-4-6, streaming_callbackprint_streaming_chunk, # 传入回调即开启流式输出 ) client.run(messages, generation_kwargs{max_tokens: 512})run()的签名支持messages: list[ChatMessage] | str——直接传字符串会被自动包装为一条 user 角色的ChatMessage。返回的字典以replies键存放模型生成的ChatMessage列表。4.2 生成参数generation_kwargs可在初始化或run()时通过generation_kwargs传递推理参数。run()传入的参数会与初始化参数按 key 合并run 时提供的 key 优先初始化时独有但 run 未提供的 key 保留。常用参数maxTokens最大生成 token 数stopSequences停止序列列表temperature采样温度topP核采样nucleus sampling参数response_format结构化 JSON 输出需提供schema必填JSON Schema 字典、name可选默认response_schema、description可选。response_format使用示例generation_kwargs { response_format: { name: person, schema: { type: object, properties: { name: {type: string}, age: {type: integer}, }, required: [name, age], additionalProperties: False, }, } }当设置了response_format时解析后的 JSON 对象存放在reply.meta[structured_output]中方便后续组件直接消费。4.3 流式输出设置streaming_callback接收StreamingChunk对象即自动切换为流式模式也可以在run()时按次传入。run_async()同样支持流式且更推荐使用异步回调。4.4 多模态输入利用 Haystack 的ImageContent数据类定义于 haystack/dataclasses/chat_message.py可以把图片与文本拼进同一条用户消息from haystack.dataclasses import ChatMessage, ImageContent from haystack_integrations.components.generators.amazon_bedrock import AmazonBedrockChatGenerator generator AmazonBedrockChatGenerator(modelglobal.anthropic.claude-sonnet-4-6) image_content ImageContent.from_file_path(file_pathapple.jpg) message ChatMessage.from_user(content_parts[Describe the image using 10 words at most., image_content]) response generator.run(messages[message])[replies][0].text print(response) # The image shows a red apple.4.5 工具调用Function CallingAmazonBedrockChatGenerator完整支持 Haystack 的统一工具架构Tool/Toolset见 haystack/tools/tool.py 与 tools 文档工具定义与使用模式在 Bedrock、OpenAI、Ollama 等不同提供商之间保持一致。tools参数接受三种形式Tool 对象列表、单个 Toolset、或 Tool 与 Toolset 混排的列表。from haystack.dataclasses import ChatMessage from haystack.tools import Tool from haystack_integrations.components.generators.amazon_bedrock import AmazonBedrockChatGenerator def weather(city: str): return fThe weather in {city} is sunny and 32°C weather_tool Tool( nameweather, descriptionuseful to determine the weather in a given location, parameters{ type: object, properties: {city: {type: string}}, required: [city], }, functionweather, ) client AmazonBedrockChatGenerator( modelglobal.anthropic.claude-sonnet-4-6, tools[weather_tool], ) messages [ChatMessage.from_user(Whats the weather like in Paris?)] results client.run(messagesmessages) # 从回复中取出工具调用并执行 tool_message next(msg for msg in results[replies] if msg.tool_call) tool_call tool_message.tool_call weather_result weather(**tool_call.arguments) # 把工具结果回传给模型 new_messages [ messages[0], tool_message, ChatMessage.from_tool(tool_resultweather_result, origintool_call), ] final_result client.run(new_messages) print(final_result[replies][0].text)4.6 提示词缓存Prompt Caching组件支持 Bedrock 的提示词缓存可降低响应延迟与输入 token 成本。缓存点分两种设置方式消息级缓存在ChatMessage的meta中加cachePoint键ChatMessage.from_user( Long message..., meta{cachePoint: {type: default, ttl: 5m}}, )工具/系统消息级缓存通过初始化参数tools_cachepoint_config与system_cachepoint_config配置字典须符合 AWSCachePointBlockschemagenerator AmazonBedrockChatGenerator( modelglobal.anthropic.claude-sonnet-4-6, toolsmy_tools, tools_cachepoint_config{type: default, ttl: 5m}, )缓存成功后写入的缓存输入 token 数可从result[replies][0].meta[usage][cache_write_input_tokens]读取。需要注意提示词缓存仅对 AWS 官方列出的选定模型生效且单请求最多可定义 4 个缓存点并需满足模型特定的最小 token 阈值。4.7 护栏Guardrails与异步调用guardrail_config对接 Bedrock 中已创建的护栏字典需匹配GuardrailConfiguration流式模式下为GuardrailStreamConfiguration。将trace设为enabled时护栏轨迹会出现在结果ChatMessage的meta[trace]中流式模式下启用护栏可能增加延迟可通过streamProcessingMode调节。run_async执行异步推理适合非阻塞或并发场景返回结构与run()一致。4.8 在 RAG 管道中的典型位置官方组件速查表见 amazonbedrockchatgenerator.mdx给出的定位是位于ChatPromptBuilder之后接收messages输入、输出replies。在 get-started.mdx 中它被用来搭建完整的检索增强生成管道见下文第七节。五、重排序AmazonBedrockRankerAmazonBedrockRanker基于查询与文档的语义相关性对文档重新排序使用 Bedrock 的 Rerank API文档按相关度从高到低输出。默认模型为cohere.rerank-v3-5:0官方文档列出的受支持模型还包括amazon.rerank-v1:0。from haystack import Document from haystack.utils import Secret from haystack_integrations.components.rankers.amazon_bedrock import ( AmazonBedrockRanker, ) ranker AmazonBedrockRanker( modelcohere.rerank-v3-5:0, top_k2, aws_region_nameSecret.from_token(eu-central-1), ) docs [Document(contentParis), Document(contentBerlin)] query What is the capital of germany? output ranker.run(queryquery, documentsdocs) docs output[documents]参数说明modelCohere Rerank 模型名默认cohere.rerank-v3-5:0top_k返回的最大文档数默认10且必须大于 0否则抛ValueErrorrun()时也可单独传入top_k覆盖max_chunks_per_doc当文档超过 512 token 时单个文档最多可被切分的块数None时使用默认值 10。注意官方文档明确说明该参数当前未在实现中使用仅为未来兼容性保留meta_fields_to_embed与meta_data_separator指定拼接进文档内容参与重排的 meta 字段及分隔符默认\n。在管道中的典型位置是查询管道中返回文档列表的组件如检索器之后用于精排召回结果。管道示例可参考 amazonbedrockranker.mdx。六、托管知识库检索AmazonBedrockKnowledgeBaseRetriever该组件从Amazon Bedrock 托管知识库Managed Knowledge Base检索文档。与大多数检索器不同它不需要 Haystack 的 Document Store也不需要嵌入器——索引与向量化全部由 AWS 侧完成组件只需一个文本query即可搜索知识库。from haystack.utils import Secret from haystack_integrations.components.retrievers.amazon_bedrock import AmazonBedrockKnowledgeBaseRetriever retriever AmazonBedrockKnowledgeBaseRetriever( knowledge_base_idABCDEFGHIJ, aws_region_nameSecret.from_token(eu-central-1), ) result retriever.run(queryWhat are the benefits of managed knowledge bases?) for doc in result[documents]: print(doc.content) print(doc.meta[source]) # S3、Web、Confluence 等数据源位置 print(doc.score)关键行为与参数knowledge_base_id知识库 ID未传时回退到AWS_KNOWLEDGE_BASE_ID环境变量use_agentic_retrieval默认先尝试 Agentic Retrieve APIAgenticRetrieveStream不可用时自动回退到标准 Retrieve API。默认值取USE_AGENTIC_RETRIEVAL环境变量未设置时为Truenumber_of_results最大返回结果数默认5run(query, top_kNone)中传入top_k可覆盖它返回的每个 Document 带有score以及source底层内容位于 S3、Web、Confluence、Salesforce、SharePoint 或自定义位置、knowledge_base_id、knowledge_base_type等元数据使用前需要一个已导入文档的现成知识库通过AWS_KNOWLEDGE_BASE_ID环境变量或knowledge_base_id参数指定检索失败抛出AmazonBedrockInferenceError。官方在 amazonbedrockknowledgebaseretriever.mdx 给出的管道定位是RAG 管道中ChatPromptBuilder之前或语义搜索管道的最后一个组件。七、Token 计数AmazonBedrockTokenCounterAmazonBedrockTokenCounter实现 Haystack 的TokenCounter协议通过 Bedrock 的CountTokensAPI计数。与本地基于 tokenizer 的计数器不同它把输入发送到服务端因此返回值反映模型精确的分词结果——包括 Bedrock 对消息、系统提示与工具 schema 施加的格式化开销。from haystack.dataclasses import ChatMessage from haystack_integrations.token_counters.amazon_bedrock import AmazonBedrockTokenCounter counter AmazonBedrockTokenCounter(modelanthropic.claude-3-5-sonnet-20240620-v1:0) messages [ChatMessage.from_user(Hello, how are you?)] token_count counter.count(messages) print(fToken count: {token_count})实现要点参考文档明确说明消息与工具会先转换为 BedrockConverse格式与AmazonBedrockChatGenerator使用同一套转换因此计数结果与等价的 Converse 请求实际消耗一致count(messages, toolsNone)中可传入tools工具 schema 也会被计入 token适用边界messages必须构成一条完整、合法的对话必须以 user 消息开头工具结果必须与产生它的工具调用成对出现。因此它适合在发送整个请求前评估体量但无法对孤立的片段如单独一条 tool-result 消息计数——这类场景应改用本地计数器如ApproximateTokenCounter参见 token_counters 目录空输入返回0请求失败抛出AmazonBedrockInferenceError。八、S3 文件下载S3Downloader 与 S3StorageS3 相关能力用于从 AWS S3 桶下载文件到本地文件系统并用本地路径回填 Document在需要本地文件路径的转换器或路由器之前使用。8.1 S3Downloader 组件from haystack.dataclasses import Document from haystack_integrations.components.downloaders.s3 import S3Downloader documents [ Document(meta{file_name: report.pdf}), Document(meta{file_name: data.txt}), ] downloader S3Downloader(file_root_path/tmp/s3_downloads) result downloader.run(documentsdocuments) for doc in result[documents]: print(fFile downloaded to: {doc.meta[file_path]})参数详解file_root_path下载根目录也可通过FILE_ROOT_PATH环境变量设置二者都不设置会抛ValueError下载被严格限制在该目录内文件名解析到目录之外如绝对路径或含..的文档会被记录日志并跳过而不是写入S3_DOWNLOADER_BUCKET环境变量可通过s3_bucket_name_env改名必填指定桶名未设置会抛ValueErrorS3_DOWNLOADER_PREFIX可选会自动作为前缀拼接到所有生成的 S3 key例如folder/subfolder/file_extensions允许下载的扩展名白名单默认允许全部例如[.pdf, .txt]只下载 PDF 与 TXTfile_name_meta_key存放文件名的 meta 键默认file_names3_key_generation_function自定义 S3 key 生成函数接收Document返回字符串不传时默认使用Document.meta[file_name_meta_key]max_workers并发下载工作线程数默认32max_cache_size本地缓存上限默认100个文件超出后按最近最少使用LRU淘汰已下载的文件会刷新访问时间而不重复下载boto3_config底层 boto3 客户端配置重试、超时等生命周期warm_up()初始化设置与存储桶环境变量未设置抛ValueError客户端创建失败抛S3ConfigurationErrorclose()释放 S3 客户端。8.2 S3Storage 底层类S3Storage是封装 S3 下载能力的底层存储类S3Downloader内部依赖它__init__(s3_bucket, session, s3_prefixNone, endpoint_urlNone, configNone)s3_prefix用于指定桶内目录/命名结构文件在folder/subfolder/file.txt时应传folder/subfolder/在桶根则传Noneendpoint_url支持 S3 兼容服务download(key, local_file_path)按 key 下载文件到本地目录目录不存在会自动创建文件不存在或下载失败分别抛S3StorageError会话客户端创建失败抛S3ConfigurationErrorfrom_env(*, session, config, s3_bucket_name_envS3_DOWNLOADER_BUCKET)从环境变量创建实例读取S3_DOWNLOADER_BUCKET必填未设置抛ValueError、S3_DOWNLOADER_PREFIX、AWS_ENDPOINT_URL可用于 MinIO、LocalStack 等 S3 兼容服务。8.3 管道示例S3 → 路由 → 转换 → 图像问答官方 s3downloader.mdx 给出了一个把 S3 下载、类型路由、图像转换与 Bedrock 多模态生成串起来的完整管道from haystack import Pipeline from haystack.components.builders import ChatPromptBuilder from haystack.components.converters.image import DocumentToImageContent from haystack.components.routers import DocumentTypeRouter from haystack.dataclasses import Document from haystack_integrations.components.downloaders.s3 import S3Downloader from haystack_integrations.components.generators.amazon_bedrock import ( AmazonBedrockChatGenerator, ) documents [ Document(meta{file_name: chart.png}), Document(meta{file_name: report.pdf}), ] pipe Pipeline() pipe.add_component(downloader, S3Downloader(file_root_path/tmp/s3_downloads)) pipe.add_component( router, DocumentTypeRouter(file_path_meta_fieldfile_path, mime_types[image/png, application/pdf]), ) pipe.add_component(image_converter, DocumentToImageContent(detailauto)) pipe.add_component(prompt_builder, ChatPromptBuilder(template{% message roleuser %} Answer the question based on the provided images. Question: {{ question }} {% for image in image_contents %} {{ image | templatize_part }} {% endfor %} {% endmessage %})) pipe.add_component( llm, AmazonBedrockChatGenerator(modelanthropic.claude-3-haiku-20240307-v1:0), ) pipe.connect(downloader.documents, router.documents) pipe.connect(router.image/png, image_converter.documents) pipe.connect(image_converter.image_contents, prompt_builder.image_contents) pipe.connect(prompt_builder.prompt, llm.messages) result pipe.run( { downloader: {documents: documents}, prompt_builder: {question: What information is shown in the chart?}, }, )九、端到端实战基于 Bedrock 的完整 RAG 管道综合以上组件get-started.mdx 给出了一个开箱即用的 RAG 示例InMemoryBM25Retriever召回文档 →ChatPromptBuilder组装上下文 →AmazonBedrockChatGenerator生成答案。import os from haystack import Pipeline, Document from haystack.components.builders import ChatPromptBuilder from haystack.components.retrievers import InMemoryBM25Retriever from haystack.document_stores.in_memory import InMemoryDocumentStore from haystack.dataclasses import ChatMessage from haystack_integrations.components.generators.amazon_bedrock import ( AmazonBedrockChatGenerator, ) os.environ[AWS_ACCESS_KEY_ID] YOUR_AWS_ACCESS_KEY_ID os.environ[AWS_SECRET_ACCESS_KEY] YOUR_AWS_SECRET_ACCESS_KEY os.environ[AWS_DEFAULT_REGION] YOUR_AWS_REGION document_store InMemoryDocumentStore() document_store.write_documents([ Document(contentMy name is Jean and I live in Paris.), Document(contentMy name is Mark and I live in Berlin.), Document(contentMy name is Giorgio and I live in Rome.), ]) prompt_template [ ChatMessage.from_system( Given these documents, answer the question. Documents: {% for doc in documents %} {{ doc.content }} {% endfor %} , ), ChatMessage.from_user({{question}}), ] retriever InMemoryBM25Retriever(document_storedocument_store) prompt_builder ChatPromptBuilder(templateprompt_template, required_variables*) llm AmazonBedrockChatGenerator(modelanthropic.claude-3-5-sonnet-20240620-v1:0) rag_pipeline Pipeline() rag_pipeline.add_component(retriever, retriever) rag_pipeline.add_component(prompt_builder, prompt_builder) rag_pipeline.add_component(llm, llm) rag_pipeline.connect(retriever, prompt_builder.documents) rag_pipeline.connect(prompt_builder, llm) results rag_pipeline.run({ retriever: {query: Who lives in Paris?}, prompt_builder: {question: Who lives in Paris?}, }) print(results[llm][replies])十、组件生命周期与序列化约定参考文档中每个组件都遵循 Haystack 的标准组件协议这里统一归纳warm_up()预创建 Bedrock 客户端同步或异步视组件而定避免首次调用时的冷启动延迟AWS 环境配置错误会抛AmazonBedrockConfigurationErrorclose()释放底层客户端与连接资源to_dict()/from_dict()完整支持管道序列化/反序列化YAML 或 JSON凭证默认以环境变量名形式序列化保证不把密钥明文写入配置相关机制可参考 Haystack 序列化 与 Secret 管理。结语amazon-bedrock-haystack集成包让 Haystack 管道与 Amazon Bedrock 的能力形成闭环嵌入文本/文档/图像负责建索引ChatGenerator 负责生成与工具调用Ranker 精排召回结果KnowledgeBaseRetriever 直连托管知识库TokenCounter 精确预估请求体量S3Downloader 打通云端文件到本地处理的最后一公里。所有组件共享同一套 AWS 认证、异常体系与序列化约定你可以放心地把它们编排进任意 Haystack 管道中。更完整的方法签名与边界说明请直接查阅官方参考文档 amazon_bedrock.md。【免费下载链接】haystackOpen-source AI orchestration framework for building context-engineered, production-ready LLM applications. Design modular pipelines and agent workflows with explicit control over retrieval, routing, memory, and generation. Built for scalable agents, RAG, multimodal applications, semantic search, and conversational systems.项目地址: https://gitcode.com/GitHub_Trending/ha/haystack创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考