作者:来自 Elastic Mark Hoy, Hemant Malik
Elasticsearch 开放推理 API 增加了对托管在 Amazon Bedrock 上的模型生成嵌入的支持。
Elasticsearch 开放 infereence API 使开发人员能够创建推理端点并使用来自领先提供商的机器学习模型。从今天开始,托管在 Amazon Bedrock 上的模型将通过 Elasticsearch 开放 inference API 提供。现在,使用 Elasticsearch 向量数据库构建 RAG 应用程序的开发人员可以存储和使用托管在 Amazon Bedrock 上的模型(例如 Amazon Titan、Anthropic Claude、Cohere Command R 等)生成的嵌入。Bedrock 与开放推理 API 的集成提供了一种与不同 AI 模型(例如文本嵌入和聊天完成)交互的一致方式,从而简化了使用 Elasticsearch 的开发过程。
- 从 Amazon Bedrock 中选择一个模型
- 在 Elasticsearch 中创建并使用推理端点
- 将模型用作推理管道的一部分
在 Amazon Bedrock 中使用基础模型
本演练假设你已经拥有一个可以访问 Amazon Bedrock 的 AWS 账户 - 这是一项完全托管的托管模型服务,可通过统一 API 提供基础模型。
在 AWS 控制台中的 Amazon Bedrock 中,确保你确实有权访问 Amazon Titan Embeddings G1 - Text 模型。你可以通过转到 AWS 控制台中的 Amazon Bedrock 服务并检查 _Model access. _ 来检查这一点。如果你没有访问权限,你可以通过 AWS 控制台中的 Amazon Bedrock 服务中的 _Modify model access _ 进行请求。
Amazon 提供了广泛的 IAM 策略来控制模型的权限和访问。在 IAM 中,你还需要创建一对访问密钥和密钥,以允许以编程方式访问 Amazon Bedrock,以便你的 Elasticsearch 推理终端节点进行通信。
在 Elasticsearch 中创建推理 API 端点
部署模型后,我们可以在 Elasticsearch 中为你的推理任务创建一个端点。对于以下示例,我们使用 Amazon Titan Text 基础模型执行聊天完成推理。
在 Elasticsearch 中,通过提供服务作为 “amazonbedrock” 来创建端点,并提供服务设置,包括你的区域、提供商、模型(基础模型 ID,或者如果你创建了自定义模型,则为模型的 ARN)以及你访问 Amazon Bedrock 的访问和密钥。在我们的示例中,由于我们使用 Amazon Titan Text,我们将指定 “amazontitan” 作为提供商,并将 “amazon.titan-text-premier-v1:0” 指定为模型 ID。
PUT _inference/completion/test_amazon_titan_chat_completion
{"service": "amazonbedrock","service_settings": {"access_key": "<<ACCESS_KEY>>","secret_key": "<<SECRET_KEY>>","region": "us-east-1","provider": "amazontitan","model": "amazon.titan-text-premier-v1:0"}
}
当你向 Elasticsearch 发送命令时,它应该返回创建的模型以确认命令已成功。请注意,API 密钥永远不会返回,并且存储在 Elasticsearch 的安全设置中。
{"model_id": "test_amazon_bedrock_chat_completion","task_type": "completion","service": "amazonbedrock","service_settings": {"access_key": "<<ACCESS_KEY>>","secret_key": "<<SECRET_KEY>>","region": "us-east-1","provider": "amazontitan","model": "amazon.titan-text-premier-v1:0"},"task_settings": {}
}
添加使用文本嵌入的模型同样简单。作为参考,如果我们使用 Amazon Titan Embeddings Text 基础模型,我们可以通过从该部署的概述页面提供适当的 API 密钥和目标 URL,使用 “text_embeddings” 任务类型在 Elasticsearch 中创建推理模型:
PUT _inference/text_embeddings/test_amazon_titan_embeddings
{"service": "amazonbedrock","service_settings": {"access_key": "<<ACCESS_KEY>>","secret_key": "<<SECRET_KEY>>","region": "us-east-1","provider": "amazontitan","model": "amazon.titan-embed-text-v2:0"}
}
让我们进行一些推理
这就是设置模型的全部内容。现在,我们可以使用该模型了。首先,让我们通过要求模型在给出简单提示的情况下提供一些文本来测试该模型。为此,我们将使用输入文本调用 _inference API:
POST _inference/completion/test_amazon_bedrock_chat_completion
{"input": "The answer to the universe is"
}
我们应该看到 Elasticsearch 提供响应。在后台,Elasticsearch 使用输入文本调用 Amazon Bedrock 并处理推理结果。在本例中,我们收到了响应:
{"completion": [{"result": "42. \n\nIn Douglas Adams' *The Hitchhiker's Guide to the Galaxy*, a super-computer named Deep Thought is asked what the answer to the ultimate question of life, the universe, and everything is. After calculating for 7.5-million years, Deep Thought announces that the answer is 42. \n\nThe number 42 has since become a reference to the novel, and many fans of the book series speculate as to what the actual question might be."}]
}
我们试图让最终用户轻松地不必处理幕后的所有技术细节,但我们也可以通过提供额外的参数来控制处理,从而更好地控制我们的推理,例如采样温度和请求生成的最大 token 数:
POST _inference/completion/test_amazon_bedrock_chat_completion
{"input": "The answer to the universe is","task_settings": {"temperature": 1.0,"max_new_tokens": 50}
}
这很简单。我们还能做什么?
当我们能够以其他方式使用我们的新模型时,这将变得更加强大,例如在 Elasticsearch 提取管道中使用文档时向文档添加其他文本。例如,以下管道定义将使用我们的模型,并且每当提取使用此管道的文档时,字段 “question_field” 中的任何文本都将通过推理 API 发送,并且响应将写入文档中的 “completed_text_answer” 字段。这允许扩充大量文档。
PUT _ingest/pipeline/amazon_bedrock_titan_completions
{"processors": [{"inference": {"model_id": "test_amazon_bedrock_chat_completion", "input_output": { "input_field": "question_field","output_field": "completed_text_answer"}}}]
}
无限可能
通过在 Elasticsearch 推理管道中利用 Amazon Bedrock 模型的强大功能,你可以增强搜索体验的自然语言处理能力。
如果你是使用 Elasticsearch 的 AWS 开发人员,那么还有更多值得期待的内容。我们最近在我们的 Playground(博客)中添加了对 Amazon Bedrock 的支持,允许开发人员测试和调整 RAG 工作流程。此外,新的 semantic_text 映射让你可以轻松地矢量化和分块信息。
在即将推出的 Elasticsearch 版本中,用户可以利用新的字段映射类型,进一步简化本博客中描述的流程,不再需要设计摄取管道。此外,正如我们在语义搜索加速路线图中提到的那样,未来将在查询时使用 Elasticsearch 检索器为推理任务提供显着简化的支持。
这些功能可通过我们在 Elastic Cloud 上的 stateless 产品中的开放推理 API 获得。它们也将很快在即将发布的 Elasticsearch 版本中向所有人提供。
准备好自己尝试一下了吗?开始免费试用。
Elasticsearch 集成了 LangChain、Cohere 等工具。加入我们的高级语义搜索网络研讨会,构建你的下一个 GenAI 应用程序!
原文:Elasticsearch open inference API adds Amazon Bedrock support — Elastic Search Labs