Amazon Bedrock 知识库现支持混合搜索 |亚马逊网络服务

Amazon Bedrock 知识库现支持混合搜索 |亚马逊网络服务

At AWS re:Invent 2023 年,我们宣布全面推出 Amazon Bedrock 知识库。借助知识库,您可以安全地连接基础模型 (FM) 亚马逊基岩 到您的公司数据以实现完全托管的检索增强生成 (RAG)。

在一个 以前的帖子中,我们描述了 Amazon Bedrock 知识库如何为您管理端到端 RAG 工作流程,并分享了有关最近发布的一些功能的详细信息。

对于基于 RAG 的应用程序,大型语言模型 (LLM) 生成的响应的准确性取决于提供给模型的上下文。根据用户查询从向量数据库中检索上下文。语义搜索被广泛使用,因为它能够理解更多类似人类的问题——用户的查询并不总是与回答它的内容中的确切关键字直接相关。语义搜索有助于根据文本的含义提供答案。然而,它在捕获所有相关关键字方面存在局限性。其性能依赖于用于表示文本含义的词嵌入的质量。为了克服这些限制,将语义搜索与关键字搜索(混合)相结合将给出更好的结果。

在这篇文章中,我们讨论混合搜索的新功能,您可以选择它作为语义搜索的查询选项。

混合搜索概述

混合搜索利用多种搜索算法的优势,集成其独特的功能来增强返回搜索结果的相关性。对于基于RAG的应用程序,语义搜索功能通常与传统的基于关键字的搜索相结合,以提高搜索结果的相关性。它可以搜索文档的内容及其潜在含义。例如,考虑以下查询:

What is the cost of the book "<book_name>" on <website_name>?

在这个对书名和网站名称的查询中,关键字搜索会给出更好的结果,因为我们想要特定书的成本。然而,“成本”一词可能有“价格”等同义词,因此最好使用语义搜索,它可以理解文本的含义。混合搜索结合了两种方法的优点:语义搜索的精度和关键字的覆盖范围。它非常适合基于 RAG 的应用程序,其中检索器必须处理各种自然语言查询。关键字有助于涵盖查询中的特定实体,例如产品名称、颜色和价格,而语义可以更好地理解查询中的含义和意图。例如,如果您想为电子商务网站构建一个聊天机器人来处理客户查询(例如退货政策或产品详细信息),那么使用混合搜索将是最合适的。

混合搜索的用例

以下是混合搜索的一些常见用例:

  • 开放域问答 – 这涉及回答各种主题的问题。这需要搜索具有不同内容的大量文档,例如网站数据,其中可能包括可持续性、领导力、财务业绩等各种主题。仅靠语义搜索无法很好地概括此任务,因为它缺乏对未见过的实体进行词汇匹配的能力,而这对于处理域外示例非常重要。因此,将基于关键字的搜索与语义搜索相结合可以帮助缩小范围并为开放域问答提供更好的结果。
  • 基于上下文的聊天机器人 – 对话可能会迅速改变方向并涵盖不可预测的主题。混合搜索可以更好地处理此类开放式对话框。
  • 个性化搜索 – 对异构内容的网络规模搜索受益于混合方法。语义搜索处理流行的头部查询,而关键字则涵盖罕见的长尾查询。

尽管混合搜索通过结合两种方法提供了更广泛的覆盖范围,但当领域狭窄且语义定义明确时,或者当误解的空间很小时(例如事实问答系统),语义搜索具有精确优势。

混合搜索的好处

关键字和语义搜索都将返回一组单独的结果及其相关性分数,然后将这些结果组合起来返回最相关的结果。 Amazon Bedrock 知识库当前支持四种矢量存储: 亚马逊 OpenSearch 无服务器, Amazon Aurora PostgreSQL 兼容版, 松球Redis 企业云。截至撰写本文时,混合搜索功能可用于 OpenSearch Serverless,并且即将推出对其他向量存储的支持。

以下是使用混合搜索的一些好处:

  • 提高准确性 – FM 生成的响应的准确性直接取决于检索结果的相关性。根据您的数据,仅使用语义搜索来提高应用程序的准确性可能具有挑战性。使用混合搜索的主要好处是提高检索结果的质量,从而帮助 FM 生成更准确的答案。
  • 扩展的搜索功能 – 关键字搜索撒下更广泛的网,找到可能相关但可能不包含整个文档语义结构的文档。它允许您搜索关键字以及文本的语义,从而扩展搜索功能。

在以下部分中,我们将演示如何将混合搜索与 Amazon Bedrock 知识库结合使用。

通过 SDK 使用混合搜索和语义搜索选项

当您调用 Retrieve API 时,Amazon Bedrock 知识库会为您选择正确的搜索策略,为您提供最相关的结果。您可以选择覆盖它以在 API 中使用混合搜索或语义搜索。

检索API

Retrieve API 旨在通过提供用户查询、知识库 ID 以及您希望 API 返回的结果数来获取相关搜索结果。此 API 将用户查询转换为嵌入,使用混合搜索或语义(矢量)搜索搜索知识库,并返回相关结果,使您能够更好地控制在搜索结果之上构建自定义工作流程。例如,您可以向检索到的结果添加后处理逻辑,或者添加您自己的提示并连接 Amazon Bedrock 提供的任何 FM 以生成答案。

为了向您展示混合搜索和语义(矢量)搜索选项之间切换的示例,我们使用以下内容创建了一个知识库: 10 年亚马逊 2023K 文档。有关创建知识库的更多详细信息,请参阅 使用 Amazon Bedrock 知识库构建上下文聊天机器人应用程序.

为了演示混合搜索的价值,我们使用以下查询:

As of December 31st 2023, what is the leased square footage for physical stores in North America?

前面的查询的答案涉及一些关键字,例如 date, physical storesNorth America。正确的反应是 22,871 thousand square feet。让我们观察混合搜索和语义搜索的搜索结果的差异。

以下代码演示了如何使用 Retrieve 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,
                'overrideSearchType': "HYBRID/SEMANTIC", # optional
            }
        }
    )
response = retrieve("As of December 31st 2023, what is the leased square footage for physical stores in North America?", "<knowledge base id>")["retrievalResults"]

overrideSearchType 选项 retrievalConfiguration 提供使用任一选项 HYBRID or SEMANTIC。默认情况下,它会为您选择正确的策略,为您提供最相关的结果,如果您想覆盖默认选项以使用混合搜索或语义搜索,您可以将该值设置为 HYBRID/SEMANTIC. 的输出 Retrieve API 包括检索到的文本块、源数据的位置类型和 URI 以及检索的相关性分数。这些分数有助于确定哪些块与查询的响应最匹配。

以下是使用混合搜索的上述查询的结果(为简洁起见,对部分输出进行了编辑):

[
  {
    "content": {
      "text": "... Description of Use Leased Square Footage (1).... Physical stores (2) 22,871  ..."
    },
    "location": {
      "type": "S3",
      "s3Location": {
        "uri": "s3://<bucket_name>/amazon-10k-2023.pdf"
      }
    },
    "score": 0.6389407
  },
  {
    "content": {
      "text": "Property and equipment, net by segment is as follows (in millions): December 31, 2021 2022 2023 North America $ 83,640 $ 90,076 $ 93,632 International 21,718 23,347 24,357 AWS 43,245 60,324 72,701 Corporate 1.."
    },
    "location": {
      "type": "S3",
      "s3Location": {
        "uri": "s3://<bucket_name>/amazon-10k-2023.pdf"
      }
    },
    "score": 0.6389407
  },
  {
    "content": {
      "text": "..amortization of property and equipment acquired under finance leases of $9.9 billion, $6.1 billion, and $5.9 billion for 2021, 2022, and 2023. 54 Table of Contents Note 4 — LEASES We have entered into non-cancellable operating and finance leases for fulfillment network, data center, office, and physical store facilities as well as server and networking equipment, aircraft, and vehicles. Gross assets acquired under finance leases, ..."
    },
    "location": {
      "type": "S3",
      "s3Location": {
        "uri": "s3://<bucket_name>/amazon-10k-2023.pdf"
      }
    },
    "score": 0.61908984
  }
]

以下是语义搜索的结果(为了简洁起见,对一些输出进行了编辑):

[
  {
    "content": {
      "text": "Property and equipment, net by segment is as follows (in millions):    December 31,    2021 2022 2023   North America $ 83,640 $ 90,076 $ 93,632  International 21,718 23,347 24,357  AWS 43,245 60,324 72,701.."
    },
    "location": {
      "type": "S3",
      "s3Location": {
        "uri": "s3://<bucket_name>/amazon-10k-2023.pdf"
      }
    },
    "score": 0.6389407
  },
  {
    "content": {
      "text": "Depreciation and amortization expense on property and equipment was $22.9 billion, $24.9 billion, and $30.2 billion which includes amortization of property and equipment acquired under finance leases of $9.9 billion, $6.1 billion, and $5.9 billion for 2021, 2022, and 2023.   54        Table of Contents   Note 4 — LEASES We have entered into non-cancellable operating and finance leases for fulfillment network, data center, office, and physical store facilities as well a..."
    },
    "location": {
      "type": "S3",
      "s3Location": {
        "uri": "s3://<bucket_name>/amazon-10k-2023.pdf"
      }
    },
    "score": 0.61908984
  },
  {
    "content": {
      "text": "Incentives that we receive from property and equipment   vendors are recorded as a reduction to our costs. Property includes buildings and land that we own, along with property we have acquired under build-to-suit lease arrangements when we have control over the building during the construction period and finance lease arrangements..."
    },
    "location": {
      "type": "S3",
      "s3Location": {
        "uri": "s3://<bucket_name>/amazon-10k-2023.pdf"
      }
    },
    "score": 0.61353767
  }
]

正如您在结果中看到的,混合搜索能够检索用户查询中提到的北美实体店租赁面积的搜索结果。主要原因是混合搜索能够结合关键词的结果,例如 date, physical storesNorth America 在查询中,而语义搜索则没有。因此,当搜索结果随着用户查询和提示而增加时,FM 在语义搜索的情况下将无法提供正确的响应。

现在让我们看一下 RetrieveAndGenerate API 具有混合搜索功能,可了解 FM 生成的最终响应。

检索并生成 API

RetrieveAndGenerate API 查询知识库并根据检索到的结果生成响应。您指定知识库 ID 以及 FM 以根据结果生成响应。 Amazon Bedrock 将查询转换为嵌入,根据搜索类型查询知识库,然后使用搜索结果作为上下文信息来增强 FM 提示,并返回 FM 生成的响应。

让我们使用查询“截至 31 年 2023 月 XNUMX 日,北美实体店的租赁面积是多少?”并询问 RetrieveAndGenerate 使用我们的查询生成响应的 API:

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'
                'retrievalConfiguration': {
                'overrideSearchType': 'HYBRID/SEMANTIC',
                }
                }
            }
        )
response = retrieveAndGenerate("As of December 31st 2023, what is the leased square footage for physical stores in North America?", "<knowledge base id>")["output"]["text"]

以下是使用混合搜索的结果:

22,871 thousand leased square feet

以下是使用语义搜索的结果:

The search results do not contain any information about the leased square footage for physical stores in North America for 2023.

查询的实际答案是 22,871 thousand leased square feet,它是由混合搜索生成的。混合搜索检索到的搜索结果包括有关北美实体店租赁面积的信息,而语义搜索由于嵌入翻译而无法从矢量存储中获取正确的信息。因此,FM 无法提供正确的响应,因为它没有正确且最相关的搜索结果。

但是,对于不涉及实体的更一般问题,例如 physical stores or North America,混合搜索和语义搜索都会给出相似的结果。

以下是一些查询的示例响应,展示了混合搜索和语义搜索产生相似结果的情况。

问题 语义搜索:RAG API 混合搜索:RAG API
亚马逊如何服务开发者和企业? 我们通过 AWS 为各种规模的开发者和企业(包括初创企业、政府机构和学术机构)提供服务,AWS 提供广泛的按需技术服务,包括计算、存储、数据库、分析和机器学习,以及其他服务 我们通过 AWS 为各种规模的开发者和企业(包括初创企业、政府机构和学术机构)提供服务,AWS 提供广泛的按需技术服务,包括计算、存储、数据库、分析和机器学习,以及其他服务。
截至 24 年 2024 月 XNUMX 日,亚马逊的执行官和董事有哪些? 截至 2024 年,亚马逊的执行官包括 Andrew R. Jassy 担任总裁兼首席执行官、Douglas J. Herrington 担任亚马逊全球门店首席执行官、Brian T. Olsavsky 担任高级副总裁兼首席财务官、Shelley L. Reynolds 担任副总裁、全球财务总监兼首席会计官,Adam N. Selipsky 担任 Amazon Web Services 首席执行官,David A. Zapolsky 担任全球公共政策高级副总裁兼总法律顾问。 自 2024 年起,杰弗里·P·贝索斯 (Jeffrey P. Bezos) 担任 Amazon.com 执行主席。安德鲁·贾西 (Andrew R. Jassy) 担任总裁兼首席执行官。其他执行官包括担任亚马逊全球门店首席执行官的 Douglas J. Herrington、担任高级副总裁兼首席财务官的 Brian T. Olsavsky、担任副总裁、全球财务总监兼首席会计官的 Shelley L. Reynolds 以及担任首席执行官的 Adam N. Selipsky亚马逊网络服务。 David A. Zapolsky 担任全球公共政策高级副总裁兼总法律顾问

通过 Amazon Bedrock 控制台使用混合搜索和语义搜索选项

要在 Amazon Bedrock 控制台上使用混合搜索和语义搜索选项,请完成以下步骤:

  1. 在 Amazon Bedrock 控制台上,选择 知识库 在导航窗格中。
  2. 选择您创建的知识库。
  3. 测试知识库.
  4. 选择配置图标。
    Amazon Bedrock 知识库现支持混合搜索 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。
  5. 针对 搜索类型选择 混合搜索(语义和文本).
    Amazon Bedrock 知识库现支持混合搜索 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

默认情况下,您可以选择 FM 来获取针对您的查询生成的响应。如果您只想查看检索到的结果,可以切换 生成响应 关闭以仅获取检索到的结果。

Amazon Bedrock 知识库现支持混合搜索 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

结论

在这篇文章中,我们介绍了 Amazon Bedrock 知识库中的新查询功能,该功能支持混合搜索。我们了解了如何在 SDK 和 Amazon Bedrock 控制台中配置混合搜索选项。这有助于克服仅依赖语义搜索的一些限制,特别是在搜索具有不同内容的大量文档时。混合搜索的使用取决于文档类型和您尝试实现的用例。

有关其他资源,请参阅以下资源:

参考资料

通过混合搜索提高 RAG 管道的检索性能


作者简介

Amazon Bedrock 知识库现支持混合搜索 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。玛尼哈努加 是一位技术主管 - 生成式 AI 专家、《AWS 上的应用机器学习和高性能计算》一书的作者,以及女性制造业教育基金会董事会成员。她领导计算机视觉、自然语言处理和生成人工智能等各个领域的机器学习项目。她在 AWS re:Invent、Women in Manufacturing West、YouTube 网络研讨会和 GHC 23 等内部和外部会议上发表演讲。在空闲时间,她喜欢沿着海滩长距离跑步。

Amazon Bedrock 知识库现支持混合搜索 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。帕拉维·纳尔贡德 是 AWS 的首席解决方案架构师。作为云技术推动者,她与客户合作,了解他们的目标和挑战,并提供规范性指导,以利用 AWS 产品实现他们的目标。她对科技领域的女性充满热情,是亚马逊 AI/ML 女性项目的核心成员。她在 AWS re:Invent、AWS 峰会和网络研讨会等内部和外部会议上发表演讲。工作之余,她喜欢志愿服务、园艺、骑自行车和徒步旅行。

时间戳记:

更多来自 AWS机器学习