Amazon Bedrock 知识库现可提供完全托管的 RAG 体验

Serverless
re:Invent
Amazon OpenSearch Serverless (Preview)
生成式人工智能
Amazon Bedrock
0
0
[Amazon Bedrock 知识库预览版已于9月问世](https://aws.amazon.com/blogs/aws/preview-connect-foundation-models-to-your-company-data-sources-with-agents-for-amazon-bedrock/?trk=cndc-detail)。从今天开始,[Amazon Bedrock 知识库正式全面发布](https://aws.amazon.com/bedrock/knowledge-bases/?trk=cndc-detail)。正式推出。 借助知识库,可安全地将 [Amazon Bedrock](https://aws.amazon.com/bedrock/knowledge-bases/?trk=cndc-detail) 中的基础模型 (FM) 连接到贵公司的数据,供检索增强生成 (RAG) 使用。模型生成的响应更具相关性、更加特定于上下文以及更准确;访问其他数据在其中发挥重要作用,无需不停地重新训练基础模型。对于从知识库检索的所有信息,它们均附有来源归属,从而提高透明度,并最大限度地减少幻觉。若对其工作方式感兴趣,请查看[之前的帖子](https://aws.amazon.com/blogs/aws/preview-connect-foundation-models-to-your-company-data-sources-with-agents-for-amazon-bedrock/?trk=cndc-detail),其中包含关于 RAG 的入门介绍短片。 在今天的产品发布过程中,知识库具有完全托管的 RAG 体验,以及在 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 中开始使用 RAG 的简便方法。目前,知识库管理初始向量存储设置,处理嵌入和查询,并提供创建 RAG 应用程序所需的来源归属和短期内存。如果需要,也可自定义 RAG 工作流,从而满足特定的用例要求,或集成 RAG 与其他生成式人工智能 (AI) 工具和应用程序。 ### **完全托管的 RAG 体验** 适用于 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 的知识库会管理端到端 RAG 工作流。指定数据位置,选择嵌入模型,将数据转换为向量嵌入,然后通过 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 在账户中创建向量存储,以便存储向量数据。在选择此选项(仅控制台支持)时,[Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 将在账户的 Amazon OpenSearch Serverless 中创建向量索引,不必自行管理任何内容。 ![image(1).png](https://dev-media.amazoncloud.cn/5307fec7fb9f42bab7f9cea088c544e8_image%281%29.png "image(1).png") 向量嵌入包含文档内部文本数据的数字表征形式。每个嵌入旨在获取数据的语义或上下文含义。[Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 负责在向量存储中创建、存储、管理和更新嵌入,同时确保始终同步数据和向量存储。 目前,[Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 也支持 RAG 的 2 个新 API,这用于处理嵌入和查询,同时提供创建 RAG 应用程序所需的来源归属和短期内存。 通过全新的 `RetrieveAndGenerate` API,直接从知识库检索相关信息;在 API 调用中指定基础模型,[Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 便可根据结果生成响应。以下内容将围绕工作方式。 ### **使用 RetrieveAndGenerate API** 要试用,导航到 [Amazon Bedrock 控制台](https://console.aws.amazon.com/bedrock/home?trk=cndc-detail),创建并选择知识库,然后选择“**测试知识库**”。在本演示中,创建知识库,从而访问[亚马逊云科技生成式 AI](https://console.aws.amazon.com/bedrock/home?trk=cndc-detail) 的 PDF 文件。选择“选择模型”,指定基础模型。 ![image(2).png](https://dev-media.amazoncloud.cn/f8aaa6f26fb4403a96f6e044b6a3dee8_image%282%29.png "image(2).png") 然后,提问,“何为 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail)? ![image(3).png](https://dev-media.amazoncloud.cn/0a4c02c34d3443d4abeafdfbcd285aaf_image%283%29.png "image(3).png") [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 会在在后台将查询转换为嵌入,查询知识库,然后利用搜索结果作为上下文信息扩充基础模型提示,并返回基础模型生成对问题的回复。对于多轮对话,知识库管理对话的短期内存,从而提供更多上下文结果。 以下快速演示介绍了如何同时使用 API 与[适用于 Python 的亚马逊云科技开发工具包 (Boto3)](https://aws.amazon.com/sdk-for-python/?trk=cndc-detail)。 ``` Python def retrieveAndGenerate(input, kbId): return bedrock_agent_runtime.retrieve_and_generate( input={ 'text': input }, retrieveAndGenerateConfiguration={ 'type': 'KNOWLEDGE_BASE', 'knowledgeBaseConfiguration': { 'knowledgeBaseId': kbId, 'modelArn': 'arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-instant-v1' } } ) response = retrieveAndGenerate("What is Amazon Bedrock?", "AES9P3MT9T")["output"]["text"] ``` `RetrieveAndGenerate` API 输出包含生成的响应、来源归属和检索的文本块。在演示中,API 响应如下所示(为简洁起见,已编辑部分输出实施): ``` { ... 'output': {'text': 'Amazon Bedrock is a managed service from AWS that ...'}, 'citations': [{'generatedResponsePart': {'textResponsePart': {'text': 'Amazon Bedrock is ...', 'span': {'start': 0, 'end': 241}} }, 'retrievedReferences': [{'content': {'text': 'All AWS-managed service API activity...'}, 'location': {'type': 'S3', 's3Location': {'uri': 's3://data-generative-ai-on-aws/gaia.pdf'}}}, {'content': {'text': 'Changing a portion of the image using ...'}, 'location': {'type': 'S3', 's3Location': {'uri': 's3://data-generative-ai-on-aws/gaia.pdf'}}},...] ...}] } ``` 生成的响应如下所示: [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 是一项托管服务,这将通过简单 API 为生成式 AI 提供 Serverless 体验。该款产品支持访问亚马逊云科技和第三方的基础模型,从而执行文本生成、图像生成和构建对话代理等任务。对于通过 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 处理的数据,它们需要保持隐私和加密。 ### **自定义 RAG 工作流** 若要进一步处理检索的文本块,查看检索的相关性分数,或自行开发文本生成的业务流程,请使用新检索 API。使用该 API,用户查询会转换为嵌入,搜索知识库并返回相关结果,便于您更妥善地控制根据语义搜索结果构建自定义工作流。 **使用检索 API** 在 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 控制台中,切换开关,禁用“**生成响应**”。 ![image(4).png](https://dev-media.amazoncloud.cn/1672847e337b4a9881dec767906e532f_image%284%29.png "image(4).png") 然后,再次提问“何为 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail)?”这次,输出展示了检索结果,其中也有文本块来源的源文档链接。 ![image(5).png](https://dev-media.amazoncloud.cn/35ac0d677d604170a0c4ebeb6c8fa04a_image%285%29.png "image(5).png") 下方将介绍如何同时使用检索 API 与 boto3。 ``` import boto3 bedrock_agent_runtime = boto3.client( service_name = "bedrock-agent-runtime" ) def retrieve(query, kbId, numberOfResults=5): return bedrock_agent_runtime.retrieve( retrievalQuery= { 'text': query }, knowledgeBaseId=kbId, retrievalConfiguration= { 'vectorSearchConfiguration': { 'numberOfResults': numberOfResults } } ) response = retrieve("What is Amazon Bedrock?", "AES9P3MT9T")["retrievalResults"] ``` 检索 API 的输出包含检索的文本块、源数据的位置类型和 URI,以及检索分数。分数将有助于确定与查询匹配度更高的区块。 在演示中,API 响应如下所示(为简洁起见,已编辑部分输出): ``` [{'content': {'text': 'Changing a portion of the image using ...'}, 'location': {'type': 'S3', 's3Location': {'uri': 's3://data-generative-ai-on-aws/gaia.pdf'}}, 'score': 0.7329834}, {'content': {'text': 'back to the user in natural language.For ...'}, 'location': {'type': 'S3', 's3Location': {'uri': 's3://data-generative-ai-on-aws/gaia.pdf'}}, 'score': 0.7331088}, ...] ``` 要进一步自定义 RAG 工作流,请定义自定义区块策略,并选择自定义向量存储。 **自定义区块策略** — 为高效从数据中检索,一种常见做法是先将文档拆分为可管理的区块。模型的理解和信息处理能力进一步增强,从而改进相关检索和生成语义连贯的响应。适用于 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 的知识库可管理文档的区块。 在为知识库配置数据源时,现可定义区块策略。默认区块会将数据拆分为区块,其中最多 200 个令牌,并专为问答任务优化。在不确定数据的最佳区块大小时,使用默认区块。 此外,也可选择指定自定义块大小,其中内容与固定大小的区块重叠。若知晓数据的最佳区块大小和重叠范围(基于文件属性、准确性测试等),应当使用固定大小的区块。在建议的 0-20% 范围内,区块间的重叠区域有助于提高准确性。重叠范围越高,相关性分数降低。 若选择根据每个文档创建一个嵌入,知识库会将每个文件保存为单个区块。如果不希望 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 对数据进行区块划分,例如若要使用特定于用例的算法离线区块数据,使用此选项。常见用例包含代码文档。 **自定义向量存储** — 也可选择自定义向量存储。可用向量数据库选项包含[适用于 Amazon OpenSearch Serverless 的的向量引擎](https://aws.amazon.com/opensearch-service/serverless-vector-engine/?trk=cndc-detail)、[Pinecone](https://www.pinecone.io/?trk=cndc-detail) 和 [Redis Enterprise Cloud](https://redis.com/?trk=cndc-detail)。要使用自定义向量存储,必须从支持的选项列表创建全新空向量数据库,并附上向量数据库索引名称,以及索引字段与元数据字段映射。该向量数据库应专属于 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail)。 ![image(6).png](https://dev-media.amazoncloud.cn/8321086798a444309fdf9d6f04dc431f_image%286%29.png "image(6).png") ### **集成 RAG 与其他生成式 AI 工具和应用程序** AI 助手可执行多步骤任务并访问公司数据源,从而生成相关性和上下文感知更高的响应;若要构建此类助手,可集成知识库与 适用于 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 的代理 。也可使用 LangChain 的知识库检索插件,集成 RAG 工作流与生成式 AI 应用程序。 ### **可用性** 亚马逊云科技区域美国东部(弗吉尼亚北部)和美国西部(俄勒冈州)现已支持适用于 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 的知识库。 ### **了解更多** - [适用于Amazon Bedrock 的知识库](https://aws.amazon.com/bedrock/knowledge-bases/?trk=cndc-detail) - [知识库用户指南](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html?trk=cndc-detail) - [控制台中的 Amazon Bedrock](https://console.aws.amazon.com/bedrock/home?trk=cndc-detail) 文章来源:\ [https://aws.amazon.com/blogs/aws/knowledge-bases-now-delivers-fully-managed-rag-experience-in-amazon-bedrock/?trk=cndc-detail](https://aws.amazon.com/blogs/aws/knowledge-bases-now-delivers-fully-managed-rag-experience-in-amazon-bedrock/?trk=cndc-detail)
0
目录
关闭